//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
/*
Esta funcion se corre en el evento mouseDown.
*/
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
function mouseDown( e ){
if( resize != false ){
redimensionJuego( 1, e );
}
else if( editor.editando ){
editor.aPM( e );
if( editor.sortDragDrop.dragDroping ){
editor.sortDragDrop.actualizar( e );
}
}
if( editor.scroll.moviendo ){
editor.scroll.actualizar();
}
if( editor.dragDrop.dragDroping ){
editor.dragDrop.actualizar( e );
}
}
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
/*
Esta funcion se corre en el evento mouseUp.
*/
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
function mouseUp(){
if( resize ){
redimensionJuego( 2, 0 );
}
else if( editor.editando ){
editor.sortDragDrop.terminar();
}
if( editor.scroll.moviendo ){
editor.scroll.terminar();
}
if( editor.dragDrop.dragDroping ){
editor.dragDrop.terminar();
}
}
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
/*
Esta funcion escribe un texto en div trace.
*/
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
var traced = new Array();
var tracedN = 1;
function trace( texto ){
traced.push( texto + " |" + tracedN );
if( traced.length > 10 ){
traced.shift();
}
get( "trace" ).innerHTML = traced.join( "
" );
get( "trace" ).scrollTop = 999999;
tracedN++;
}
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
/*
Esta funcion actualiza los textos que contienen la cantida de monedas, los puntos, etc.
*/
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
function escribirTxt(n){
var paddingA = "";
switch( n ){
case 1:
get( "marioTxt" ).innerHTML = "";
get( "marioTxt" ).appendChild( escribir( "MARIO" ) );// Escribe mario.
break;
case 2:
var puntosN = String( puntos ); // Toma los puntos.
for( i = puntosN.length; i < 6; i++ ){ // Agrega los ceros que faltan al principio.
puntosN = "0" + puntosN;
}
get( "puntosTxt" ).innerHTML = "";
get( "puntosTxt" ).appendChild( escribir( puntosN ) );// Y los escribe.
break;
case 3:
var monedasN = String( monedas ); // Toma las monedas.
for( i = monedasN.length; i < 2; i++ ){ // Agrega los ceros que faltan al principio.
monedasN = "0" + monedasN;
}
get( "monedasTxt" ).innerHTML = "";
get( "monedasTxt" ).appendChild( escribir( "_*" + monedasN ) );
break;
case 4:
get( "mundoTxt" ).innerHTML = "";
get( "mundoTxt" ).appendChild( escribir( "WORLD" ) );
break;
case 5:
get( "mundoNTxt" ).innerHTML = "";
get( "mundoNTxt" ).appendChild( escribir( mundoN.toUpperCase() ) );
break;
case 6:
get( "tiempoTxt" ).innerHTML = "";
get( "tiempoTxt" ).appendChild( escribir( "TIME" ) );
break;
case 7:
get( "tiempoNTxt" ).innerHTML = "";
get( "tiempoNTxt" ).appendChild( escribir( String( Math.ceil( tiempoR ) ) ) );
break;
case 8:
get( "mundoInicio" ).innerHTML = "";
get( "mundoInicio" ).appendChild( escribir( "WORLD " + mundoN.toUpperCase() ) );
break;
case 9:
get( "vidasN" ).innerHTML = "";
get( "vidasN" ).appendChild( escribir( " , " + vidas ) );
break;
case 10:
get( "jugar" ).innerHTML = "";
get( "jugar" ).appendChild( escribir( "KALIMEKAR" ) );
get( "jugarInstrucciones" ).innerHTML = "";
get( "jugarInstrucciones" ).appendChild( escribir( "USE A AND S" ) );
get( "cargarMapa" ).innerHTML = "";
get( "cargarMapa" ).appendChild( escribir( "LOAD MAP" ) );
get( "crearMapa" ).innerHTML = "";
get( "crearMapa" ).appendChild( escribir( "MAP EDITOR" ) );
var puntosTN = String( Math.ceil( puntosTop ) );
for( i = puntosTN.length; i < 6; i++ ){
puntosTN = "0" + puntosTN;
}
get( "puntosTop" ).innerHTML = "";
get( "puntosTop" ).appendChild( escribir( "TOP - " + puntosTN ) );
break;
case 11:
get( "gameOverTxt" ).innerHTML = "";
get( "gameOverTxt" ).appendChild( escribir( "GAME OVER WANAYASA INC" ) );
break;
default:
escribirTxt( 1 );
escribirTxt( 2 );
escribirTxt( 3 );
escribirTxt( 4 );
escribirTxt( 5 );
escribirTxt( 6 );
escribirTxt( 7 );
escribirTxt( 8 );
escribirTxt( 9 );
escribirTxt( 10 );
escribirTxt( 11 );
break;
}
}
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
/*
Esta funcion crea los elmentos cuando mario se acerca a ellos.
*/
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
function crearElementos(){
while( tablaParedes1.length && tablaParedes1[0].left < scroll + 700 ){
// mientras que exista tablaPisos1 y la pared con menor x este cerca
tablaParedes.push( tablaParedes1[0] ); // agrega a tablaParedes la pared que se acerca
tablaParedes1.shift(); // quita la pared con menor x de tablaParedes1
}
while( tablaPisos1.length && tablaPisos1[0].left < scroll + 700 ){
// mientras exista tablaPisoss1 y el piso con menor x este ceca
tablaPisos.push( tablaPisos1[0] ); // agrega a tablaPisos la pared que se acerca
tablaPisos1.shift(); // quita el piso con menor x de tablaPisos1
}
while( tablaMonedas1.length && tablaMonedas1[0].left < scroll + 700 ){
// mientras exista tablaMonedas1 y la moneda con menor x este cerza
tablaMonedas.push( tablaMonedas1[0] ); // se agrega a tablaMonedas la moneda
tablaMonedas1.shift(); // se quita la moneda con menor x
var imagen = document.createElement( "img" ); // se crea una nueva imagen
imagen.src = "../imgs/cuadraditos/moneda.gif"; // se le pone direccion url
imagen.className = "position"; // se le pone clase
imagen.style.width = setX( 32 ) + "px"; // se le pone largo
imagen.style.height = setY( 32 ) + "px"; // se le pone alto
imagen.style.zIndex = 2; // se le pon e zIndex
imagen.style.top = setY( tablaMonedas[tablaMonedas.length - 1].top ) + "px"; // se le pone posicion y
imagen.style.left = setX( tablaMonedas[tablaMonedas.length - 1].left ) + "px"; // se le pone posicion x
tablaMonedas[tablaMonedas.length - 1].imagen = imagen;
get("cubosDiv").appendChild( tablaMonedas[tablaMonedas.length - 1].imagen );
}
while( imagenes.length && imagenes[0].left < scroll + 600 ){
if( imagenes[0].left > scroll - 32 ){
get( "cubosDiv" ).appendChild( imagenes[0].imagen );
imagenes2.push( imagenes[0] );
}
imagenes.shift();
}
while( imagenes2.length && imagenes2[0].left + 32 < scroll ){
get( "cubosDiv" ).removeChild( imagenes2[0].imagen );
imagenes2.shift();
}
for( x = 0; x < bichos.length; x++ ){
if( bichos[x].inicio && ( bichos[x].tipo == 4 || bichos[x].tipo == 5 || bichos[x].tipo == 9 ) &&
( bichos[x].posx < scroll + 550 && bichos[x].posx + bichos[x].largo >= scroll ) ){
bichos[x].inicio = false;
}
}
for( m = 0; m < barras.length; m++ ){
if( barras[m].inicio && barras[m].left < scroll + 1000 ){
barras[m].inicio = false;
}
}
}
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
/*
Esta funcion borra los elmentos cuando mario se aleja de ellos.
*/
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
function borrarElementos(){
if( tablaPisos.length ){ // si todavia no se crearon todos los pisos
for( i = 0; i < tablaPisos.length; i++ ){ // por cada piso
if( tablaPisos[i].left + tablaPisos[i].width < scroll - 100 ){ // si el piso se alejo
piso--; // se resta un piso a mario
for(e = 0; e < bichos.length; e++){ // por cada bicho
if( bichos[e].piso ){ // si tiene piso
bichos[e].piso--; // se le resta uno al piso del bicho
}
}
tablaPisos = filtrar( tablaPisos , i ); // se saca el piso
pisosS++; // se aumentan los pisos sacados
}
}
}
if( tablaParedes1.length ){ // si todavia no se crearon todas las paredes
while( tablaParedes[0].left < scroll - 100 ){
// mientras que la pared con menor x este lejos
paredesS++; // se suma una pared sacada resta una pared
tablaParedes.shift(); // se borra la pared de la lista
}
}
while( tablaMonedas.length && tablaMonedas[0].left < scroll - 100 ){
// mientra que hayan monedas y la moneda con menor x este lejos
get( "cubosDiv" ).removeChild( tablaMonedas[0].imagen );
tablaMonedas.shift(); // se borra la moneda
}
if( figuras[0] ){
if( figuras[0].left + figurasSize[figuras[0].tipo - 1][0] < scroll - 100 ){
get( "figurasDiv" ).removeChild( figuras[0].img );
figuras.shift();
}
}
while( barras.length && barras[0].left < scroll - 300 ){
barras.shift();
}
}
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
/*
Esta funcion elimina un item de un array:
argumento 1: array
argumento 2: posicion del array para eliminar
*/
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
function filtrar( obj, n ){
obj.splice( n, 1 );
return obj;
}
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
/*
Esta funcion mata o achica a mario
*/
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
function muerte( n ){
if( n == 2 || marioF == 1 ){ // si hay que matarlo
vidas--; // se saca una vida
if( n == 2 ){
if( vidas != 0 ){
tiempoR = tiempo;
if( mapaT == 1 ){
descargarMapa( 1 );
comienzoJuego( 1 );
}
else if( mapaT == 2 ){
var posxB = posx;
descargarMapa( 1 );
comienzoJuego( 1, false, true );
cargarTunel( tubos[0].link, posxB );
}
}
else{
gOver();
}
}
else{
tiempoR = tiempo;
actualizarMario( "marioMuerte" );
marioMuerte = true;
new efecto({
obj : get( "mario" ),
prop : "style.top",
valor : "$1px",
$1 : [ setY( posy ) - 1, setY( 450 ), [ 4, setY( 1.1 ), 0, 0 - setY( 15 ) ] ],
onFinish : function(){
if( vidas != 0 ){
if( mapaT == 1 ){
descargarMapa( 1 );
comienzoJuego( 1 );
}
else if( mapaT == 2 ){
var posxB = posx;
descargarMapa( 1 );
comienzoJuego( 1, false, true );
cargarTunel( tubos[0].link, posxB );
}
}
else{
gOver();
}
}
});
}
}
else{ // si hay que achicar a mario
achicarMario();
}
}
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
/*
Esta funcion crea un bicho.
Tipo de bichos :
1 : hongo de crecimiento,
2 : hondo de vida,
3 : hogo que mata,
4 : bicho comun,
5 : tortuga,
6 : flor,
7 : estrella,
8 : bolitas que larga superMarioGrande,
9 : bicho que sale de los tubos
*/
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
function crearBicho( tipo, x, y, puntos, movxB, tortugaT ){
this.tipo = tipo; // se pone el tipo
this.choqueB = tipo != 4 && tipo != 5 && tipo != 8;
this.inicio = true; // el bicho todavia no se empieza a mover
this.movy = false; // se mueve para abajo
this.vely = 1; // la velocidad y es de 1
if( tipo < 4 ){ // si el bicho es un hongo
this.movx = true; // se mueve para la derecha
hongos++; // hay un hongo mas
this.velx = 3; // la velocidad x es de 3
}
else if( tipo == 4 ){ // si es un bicho comun
this.movx = false; // se mueve para la izquierda
bichosN++; // hay un bicho comun mas
this.velx = 2; // la velocidad x es de 2
}
else if( tipo == 5 ){ // si es una tortuga
this.movx = false; // se mueve para la izquierda
tortugas++; // hay una tortuga mas
this.velx = 2; // la velocidad x es de 2
this.puntosAdd = puntos * 5;
this.tortugaT = tortugaT;
}
else if( tipo == 6 ){
this.movx = true; // se mueve para la derecha
flores++; // hay una flor mas
this.velx = 0; // la velocidad x es de 0
}
else if( tipo == 7 ){
this.velx = 3;
this.movx = true;
this.movy = true;
this.vely = 8;
}
else if( tipo == 8 ){
this.movx = movxB;
this.velx = 14; // la velocidad x es de 14
this.vely = 7; // la velocidad y es de 7
this.inicio = false;
}
else if( tipo == 9 ){
this.velx = 0;
this.movx = true;
this.movy = false;
this.espera = false;
}
this.posy = y * 32 - 16; // la posicion y
this.posx = x * 32; // la posicion x
this.alto = 32; // el alto es 32
this.largo = 32; // el largo es 32
this.peso = .2; // el peso del bicho
this.piso = false; // el hongo no esta tocando el piso
this.puntos = puntos; // se le ponen los puntos
if( tipo == 5 ){
this.forma = 1;
}
else if( tipo == 7 ){
this.peso = .4;
}
else if( tipo == 8 ){
this.alto = 16;
this.largo = 16;
this.peso = .3;
}
else if( tipo == 9 ){
this.alto = 44;
this.posy -= 12;
}
this.obj = document.createElement("div"); // se crea un div que contendra al hongo
this.obj.style.position = "absolute"; // se le pone posicion absoluta
this.obj.style.height = setY(32) + "px"; // se le pone alto al div
this.obj.style.width = setX(32) + "px"; // se le pone largo al div
this.obj.style.top = setY(y * 32 - 16) + "px"; // se le pone posicion y
this.obj.style.left = setX(x * 32) + "px"; // se le pone posicion x
this.obj.style.overflow = "hidden"; // se le pone overflow hidden
this.imagen = document.createElement("img"); // se crea una imagen del bicho
this.imagen.style.height = setY( this.alto ) + "px"; // se le pone alto
this.imagen.style.width = setX( this.largo ) + "px"; // se le pone largo
this.imagen.src = "";
switch(tipo){ // depende del tipo
case 1: // si es de tipo 1 (hongo que hace crecer a mario)
this.imagen.src = "../imgs/bichos/hongo1.gif"; // la imagen es un hogo que hace crecer a mario
break;
case 2: // si es un hongo de vida
this.imagen.src = "../imgs/bichos/hongo2.gif"; // la imagen es un hongo de vida
break;
case 3:
this.imagen.src = "../imgs/bichos/hongo3.gif"; // la imagen es un hongo que mata a mario
break;
case 4:
this.imagen.src = !tunel ? "../imgs/bichos/bicho.gif" : "../imgs/bichosTunel/bicho.gif"; // la imagen es un bicho comun
break;
case 5:
this.obj.style.height = setY( 48 ) + "px";
this.obj.style.marginTop = "-" + setY( 16 ) + "px";
var srcB = !tunel ? "../imgs/bichos" : "../imgs/bichosTunel";
this.obj.style.height = setY( 48 ) + "px";
this.imagen.src = tortugaT == 1 ? srcB + "../imgs/bichos/tortuga_normal_izquierda.gif" : "../imgs/bichos/tortuga_2_normal_izquierda.gif";
// la imagen es una tortuga que va para la izquierda
this.imagen2 = document.createElement("img"); // se crea una imagen con la tortuga que va para la derecha
this.imagen2.src = tortugaT == 1 ? srcB + "../imgs/bichos/tortuga_normal_derecha.gif" : "../imgs/bichos/tortuga_2_normal_derecha.gif";
this.imagen.style.height = setY( 48 ) + "px"; // se le pone alto
this.imagen.style.width = setX( 32 ) + "px"; // se le pone largo
this.imagen3 = document.createElement("img"); // se crea una imagen del caparazon de la tortuga
this.imagen3.src = tortugaT == 1 ? srcB + "/../imgs/bichostortuga_agachada.gif" : "../imgs/bichos/tortuga_2_agachada.gif";
this.imagen3.style.height = setY( 48 ) + "px"; // se le pone alto
this.imagen.style.width = setX( 32 ) + "px"; // se le pone largo
break;
case 6:
this.imagen.src = "../imgs/bichos/flor.gif"; // la imagen es una flor que hace crecer a mario
break;
case 7:
this.imagen.src = "../imgs/bichos/estrella.gif"; // la imagen es una estrella
break;
case 8:
this.imagen.src = "../imgs/bichos/bolita.gif"; // la imagen es una bolita
break;
case 9:
this.imagen.src = !tunel ? "../imgs/bichos/planta.gif" : "../imgs/bichosTunel/planta.gif"; // la imagen es una planta
break;
}
bichosN = bichos.length; // el numero de bicho
bichos.push( this ); // se pone el bicho en el array de bichos que se usa para actualizarlos
this.obj.appendChild( this.imagen ); // se pone la imagen dentro del div
if( tipo == 5 ){
this.obj.appendChild( this.imagen2 ); // se pone la imagen2 dentro del div
this.obj.appendChild( this.imagen3 ); // se pone la imagen3 dentro del div
}
get("bichosDiv").appendChild( bichos[bichosN].obj ); // se pone el div en bichosDiv
if( tipo == 5 ){
this.obj.scrollTop = 0;
}
var bichoA = this;
if( tipo < 4 || tipo == 6 || tipo == 7 ){
this.imagen.style.marginTop = setY(32) + "px"; // se lo culta para que salga
new efecto({ // se modifica el margen top de la imagen para que suba
obj : this.imagen,
prop : "style.marginTop",
valor : "$1px",
$1 : [setY(32), 0, "700"],
onFinish : function(n){
bichoA.inicio = false;
}
});
}
}
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
/*
Esta funcion devuelve el html necesario para escribir un texto con el font de Mario.
*/
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
function cargarLetras(){
var letras = "$ _-,+QWERTYUIOPASDFGHJKLZXCVBNM0123456789".split( "" );
var contenedor = elemento( "div", { id : "letrasDiv", style : { display : "none" } } );
for( k = 0; k < letras.length; k++ ){
elemento( "img", {
id : "letra" + letras[k],
alt : letras[k],
src : "../imgs/font/mario-" + letras[k] + ".gif",
className : "letras",
style : {
height : "14px",
width : "14px"
}
}, contenedor );
}
document.body.appendChild( contenedor );
}
function escribir( txt, size, t ){
txt = txt.replace(/\*/g,",");
var tamanio = 14;
if( size ){
tamanio = size;
}
var resultado = elemento( "label", {} );
var split = txt.split("");
for(i = 0; i < split.length; i++){
if( /([A-Z]|[0-9]|-|\,|\+|\_| |\$)/.test( split[i] ) ){
var letra = get( "letra" + split[i] ).cloneNode( true );
letra.style.height = ( t ? tamanio : setY( tamanio ) ) + "px";
letra.style.width = ( t ? tamanio : setX( tamanio ) ) + "px";
if( nav != "IE" ){
letra.style.paddingLeft = setX( 1.5 ) + "px";
}
resultado.appendChild( letra );
}
}
return resultado;
}
var puntosTxtN = 0; // la cantidad de textos con puntos que hay
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
/*
Esta funcion sube los puntos y crea un texto con los puntos ganados que se mueve para arriba y desaparece.
*/
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
function sumarPuntos(n, left, top, suma){
if(suma != true){ // si hay que sumar los puntos
puntos += n; // se suman los puntos
escribirTxt(2); // y se escriben
}
puntosTxtN++;
var texto = document.createElement("a"); // se crea un anchor que contiene la cantidad de puntos que se ganaron
texto.className = "position puntos"; // se le pone clase
texto.id = "puntosTxt" + puntosTxtN; // se le pone id
texto.innerHTML = ""; // se le escribe la cantidad de puntos
texto.appendChild( escribir( String( n ), 10 ) );
texto.style.left = left + "px"; // se le pones posicion x
texto.style.top = top + "px"; // se le pone posicion y
texto.style.width = setX(96) + "px"; // se le pone largo
texto.style.zIndex = "2"; // se le pone x-index
get("juego").appendChild(texto); // se lo pone como hijo a el div texto
new efecto({
obj : texto,
prop : "style.top",
valor : "$1px",
$1 : [top, (top - setY(60)), "600"],
onFinish : function(){
texto.parentNode.removeChild(texto);
}
});
}
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
/*
Esta funcion suma las monedas y actuaiza el texto, cuando las monedas llegan a 100 aumenta la cantidad de vidas en 1.
*/
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
function sumarMonedas(n){
monedas += n; // suma las monedas
if(monedas >= 100){ // si se llega al maximo de monedas
monedas -= 100; // se restan 100 monedas
vidas++; // se aumenta una vida
}
escribirTxt(3); // se actualiza el texto
}
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
/*
Si queres saber lo que hacen las siguientes dos funciones, fijate.
*/
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
function setX(n){
return n * largoX;
}
function setY(n){
return n * altoX;
}
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
/*
Esta funcion atualiza la imagen de mario.
*/
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
function actualizarMario(n){
if( !marioMuerte ){
if( marioF == 2 ){
n = "g" + n;
}
else if( marioF == 3 ){
n = "s" + n;
}
get( mario ).style.display = "none"; // se oculta la imagen actual de mario
mario = n; // se actualiza la variable que contiene la forma de mario
get( mario ).style.display = "inline"; // se mustra el nuevo mario
if( marioGY != false ){
alto = marioGY[0];
}
else{
alto = Number(get(mario).name.split("x")[1]); // se toma el alto del nuevo mario
}
largo = Number(get(mario).name.split("x")[0]); // se toma el largo de nuevo mario
}
}
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
/*
Esta funcion actualiza el scroll del juego.
*/
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
function actualizarScroll(n){
if( camara && n > scroll && n > 0 ){
scroll = n;
get("juego").scrollLeft = setX(scroll);
crearElementos();
borrarElementos();
}
}
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
/*
Esta funcion agranda a Mario.
*/
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
function agrandarMario(){
if( !crecerM ){
if( marioF == 1 ){ // si mario es chico
crecerM = true; // mario esta creciedo
get( mario ).style.display = "none";
posy -= 32;
get("mario").style.top = setY( posy ) + "px";
var efecto = elemento( "div", {
style : {
position : "absolute",
height : setY( 64 ) + "px",
width : setX( 32 ) + "px",
overflow : "hidden"
},
id : "crecerM"
} );
var movx = Number( mario.charAt( mario.length - 1 ) ) % 2 ? 1 : 2;
elemento( "img", {
src : "../imgs/marioChico/mario" + movx + ".gif",
style : {
margin : setY( 32 ) + "px 0 0 " + setX( 4 ) + "px",
width : setX( 24 ) + "px",
height : setY( 32 ) + "px"
}
} , efecto );
elemento( "img", {
src : "../imgs/marioTransision/mario" + movx + ".gif",
style : {
width : setX( 32 ) + "px",
height : setY( 64 ) + "px"
}
} , efecto );
elemento( "img", {
src : "../imgs/marioGrande/mario" + movx + ".gif",
style : {
width : setX( 32 ) + "px",
height : setY( 64 ) + "px"
}
} , efecto );
get( "mario" ).appendChild( efecto );
function scrollE( n ){
efecto.scrollTop = setY( n );
}
setTimeout(function(){scrollE(0)}, 100);
setTimeout(function(){scrollE(64)}, 200);
setTimeout(function(){scrollE(0)}, 300);
setTimeout(function(){scrollE(64)}, 400);
setTimeout(function(){scrollE(0)}, 500);
setTimeout(function(){scrollE(64)}, 600);
setTimeout(function(){scrollE(128)}, 700);
setTimeout(function(){scrollE(0)}, 800);
setTimeout(function(){scrollE(64)}, 900);
setTimeout(function(){
get( "mario" ).removeChild( efecto );
marioF++;
marioGY = [32,64];
posy += 32;
get("mario").style.top = setY(posy - (marioGY != false ? marioGY[1] - marioGY[0] : 0)) + "px";
actualizarMario( mario );
crecerM = false;
}, 1000);
}
else if(marioF == 2){ // sino, si mario es grande pero no dispara
if( agachar ){
keyUp( 40 );
}
crecerM = true;
get( mario ).style.display = "none";
var efecto = elemento( "div", {
style : {
position : "absolute",
height : setY( 64 ) + "px",
width : setX( 32 ) + "px",
overflow : "hidden"
},
id : "crecerM"
} );
var movx = Number( mario.charAt( mario.length - 1 ) ) % 2 ? 1 : 2;
elemento( "img", {
src : "../imgs/marioGrande/mario" + movx + ".gif",
style : {
width : setX( 32 ) + "px",
height : setY( 64 ) + "px"
}
}, efecto );
elemento( "img", {
src : "../imgs/superMarioGrande/mario" + movx + ".gif",
style : {
width : setX( 32 ) + "px",
height : setY( 64 ) + "px"
}
}, efecto );
get( "mario" ).appendChild( efecto );
function scrollE( n ){
efecto.scrollTop = setY( n );
}
setTimeout(function(){scrollE(0)}, 100);
setTimeout(function(){scrollE(64)}, 200);
setTimeout(function(){scrollE(0)}, 300);
setTimeout(function(){scrollE(64)}, 400);
setTimeout(function(){scrollE(0)}, 500);
setTimeout(function(){scrollE(64)}, 600);
setTimeout(function(){scrollE(0)}, 700);
setTimeout(function(){scrollE(64)}, 800);
setTimeout(function(){
get( "mario" ).removeChild( efecto );
marioF++;
mario = mario.substr( 1, mario.length );
actualizarMario( mario );
crecerM = false;
}, 900);
}
}
}
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
/*
Esta funcion achica a Mario.
*/
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
function achicarMario(){
if( !crecerM ){
if( marioF == 2 || marioF == 3 ){ // si mario es grande
var movx = Number( mario.charAt( mario.length - 1 ) ) % 2 ? 1 : 2;
crecerM = true; // mario esta creciedo
get( mario ).style.display = "none";
if( agachar ){
agachar = false;
posy -= 32;
get( "mario" ).style.top = setY( posy ) + "px";
mario = ( marioF == 2 ? "g" : "s" ) + "mario" + movx;
}
get("mario").style.top = setY( posy ) + "px";
var efecto = elemento( "div", {
style : {
position : "absolute",
height : setY( 64 ) + "px",
width : setX( 32 ) + "px",
overflow : "hidden"
},
id : "crecerM"
} );
elemento( "img", {
src : "../imgs/" + ( marioF == 2 ? "marioGrande" : "superMarioGrande" ) + "/mario" + movx + ".gif",
style : {
width : setX( 32 ) + "px",
height : setY( 64 ) + "px"
}
} , efecto );
elemento( "img", {
src : "../imgs/marioTransision/mario" + movx + ".gif",
style : {
width : setX( 32 ) + "px",
height : setY( 64 ) + "px"
}
} , efecto );
elemento( "img", {
src : "../imgs/marioChico/mario" + movx + ".gif",
style : {
margin : setY( 32 ) + "px 0 0 " + setX( 4 ) + "px",
width : setX( 24 ) + "px",
height : setY( 32 ) + "px"
}
} , efecto );
get( "mario" ).appendChild( efecto );
function scrollE( n ){
efecto.scrollTop = setY( n );
}
setTimeout(function(){scrollE(0)}, 100);
setTimeout(function(){scrollE(64)}, 200);
setTimeout(function(){scrollE(0)}, 300);
setTimeout(function(){scrollE(64)}, 400);
setTimeout(function(){scrollE(0)}, 500);
setTimeout(function(){scrollE(64)}, 600);
setTimeout(function(){scrollE(128)}, 700);
setTimeout(function(){scrollE(0)}, 800);
setTimeout(function(){scrollE(64)}, 900);
setTimeout(function(){
get( "mario" ).removeChild( efecto );
marioF = 1;
posy += 32;
get("mario").style.top = setY(posy - (marioGY != false ? marioGY[1] - marioGY[0] : 0)) + "px";
mario = mario.substr( 1, mario.length );
actualizarMario( mario );
crecerM = false;
transparente = true;
opacity( "mario", 1 );
fadeIn( "mario", .7 );
setTimeout( function(){
transparente = false;
fadeIn( "mario", 1 );
} , 3000);
}, 1000);
}
}
}
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
/*
Esta funcion empieza un sonido.
*/
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
function empezarS(n){
if(sonido){
get("sonidos").comienzo(n);
}
}
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
/*
Esta funcion detiene un sonido.
*/
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
function detenerS(n){
if(sonido){
get("sonidos").pausa(n);
}
}
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
/*
Esta funcion reinicia un sonido.
*/
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
function reiniciarS(n){
if(sonido){
get("sonidos").reiniciar(n);
}
}
function fuckScroll(){
get("resize").style.display = "none";
get("resizeB").style.display = "none";
get("juego").style.overflow = "auto";
get("juego").style.zIndex = "10";
}
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
/*
Esta funcion devuelve las dimensiones del documento.
*/
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
function documentSize(){
var width = self.innerWidth ? self.innerWidth :
(document.documentElement && document.documentElement.clientWidth ? document.documentElement.clientWidth :
(document.body ? document.body.clientWidth : 0)
);
var height = self.innerHeight ?
self.innerHeight :
(document.documentElement && document.documentElement.clientHeight ? document.documentElement.clientHeight :
(document.body ? document.body.clientHeight : 0)
);
return {height : height, width : width};
}
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
/*
Esta funcion devuelve un numero random.
*/
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
function random(n1, n2){
return ( Math.floor( Math.random() * ( n2 - n1 + 1 ) + ( n1 ) ) );
}
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
/*
Esta funcion crea un elemento y lo devuelve.
*/
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
function elemento( tag, set, padre ){
var elemento = document.createElement( tag );
for( x in set ){
if( x != "style" ){
elemento.setAttribute( x, set[x] );
}
else{
for( n in set.style ){
elemento.style[n] = set.style[n];
}
}
}
if( padre ){
padre.appendChild( elemento );
}
return elemento;
}
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
/*
Esta funcion eliminar monedas.
*/
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
function eliminarMonedas( array, cuboM ){
array = array.sort().reverse();
for(b = 0; b < array.length; b++){
var moneda = tablaMonedas[array[b]];
if( moneda ){
var imagen = moneda.imagen;
imagen.parentNode.removeChild( imagen );
if( !cuboM ){
sumarMonedas( 1 );
sumarPuntos( moneda.puntos, setX( moneda.left - 32 ),
setY( moneda.top - 32 ) );
empezarS("sound6");
}
else{
var cuboMEfecto = elemento( "img", {
src : "../imgs/cuadraditos/moneda2.gif",
style : {
position : "absolute",
left : setX( moneda.left ) + "px",
top : setY( moneda.top ) + "px",
width : setX( 32 ) + "px",
height : setY( 32 ) + "px",
zIndex : 3
}
}, get( "cubosDiv" ) );
var puntos = moneda.puntos;
var top = moneda.top;
var left = moneda.left;
new efecto({
obj : cuboMEfecto,
prop : "style.top",
valor : "$1px",
$1 : [setY( moneda.top - 1), setY( moneda.top ), [4, setY( 2.3 ), 0, 0 - setY( 20 ) ] ],
onFinish : function(){
sumarMonedas( 1 );
sumarPuntos( puntos, setX( left - 32 ), setY( top ) );
get( "cubosDiv" ).removeChild( cuboMEfecto );
}
});
}
tablaMonedas.splice( array[b], 1 );
}
}
}
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
/*
Esta funcion crea la imagen de un bicho que se muere.
*/
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
function bichoMuerte( tipo, x, y, tortugaT ){
var bichoSrc = !tunel ? "../imgs/bichos/bicho_muerto.gif" : "../imgs/bichosTunel/bicho_muerto.gif";
var torutugaSrc = tortugaT == 1 ? ( !tunel ? "../imgs/bichos/tortuga_muerta.gif" : "../imgs/bichosTunel/tortuga_muerta.gif" ) :
"../imgs/bichos/tortuga_2_muerta.gif"
var bichoMuerto = elemento( "img", {
src : tipo == 4 ? bichoSrc : torutugaSrc,
style : {
position : "absolute",
top : setY( y ) + "px",
left : setX( x ) + "px",
height : setY( 32 ) + "px",
width : setX( 32 ) + "px",
zIndex : "1"
}
}, get( "cubosDiv" ) );
new efecto({
obj : bichoMuerto,
prop : "style.top",
valor : "$1px",
$1 : [ setY( y ) - 1, setY( 450 ), [ 4, setY( 1.1 ), 0, 0 - setY( 10 ) ] ],
onFinish : function(){
get( "cubosDiv" ).removeChild( bichoMuerto );
}
});
}
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
/*
Esta funcion crea la imagen de una explosion.
*/
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
function explocion( x, y ){
var explocion = elemento( "img", {
src : "../imgs/cuadraditos/explocion.gif",
style : {
position : "absolute",
left : setX( x ) + "px",
top : setY( y ) + "px",
width : setX( 32 ) + "px",
height : setY( 32 ) + "px"
}
}, get( "cubosDiv" ) );
setTimeout( function(){
if( explocion.parentNode ){
explocion.parentNode.removeChild( explocion );
}
}, 500);
}
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
/*
Esta funcion combierte a mario cuando agarra una estrella.
*/
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
function estrellaM(){
if( !estrella ){
estrella = true;
transparente = false;
opacity( "mario", 1 );
marioOpacity = 1;
marioOpacityC = false;
estrellaT = 10000;
}
}
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
/*
Esta funcion termina el juego.
*/
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
function gOver(){
if( puntos > puntosTop ){
puntosTop = puntos;
}
mapaA = 0;
descargarMapa( 1 );
cargarMenu();
get( "gameOver" ).style.display = "inline";
menuA = false;
setTimeout( function(){
menuA = true;
get( "gameOver" ).style.display = "none";
}, 3000 );
}
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
/*
Esta funcion debulebe true o false dependiendo si se toca un numero o una letra.
*/
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
function checkNum( e ){
var key = window.Event ? e.which : e.keyCode;
return ( key <= 13 || key == 46 || ( key >= 48 && key <= 57 ) || ( key >= 96 && key <= 105 ) || ( key >= 37 && key <= 40 ) );
}
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
/*
Esta funcion redondea un numero.
*/
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
function round( n, cifras ){
return Math.round( parseFloat( n ) * Math.pow( 10, cifras ) ) / Math.pow( 10, cifras );
}
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
/*
Esta funcion agrega un evento a un objeto.
*/
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
function addEvent( obj, type, fn ) {
if( obj.attachEvent ){
obj['e' + type + fn] = fn;
obj[type + fn] = function(){
obj['e' + type + fn]( window.event );
}
obj.attachEvent( 'on' + type, obj[type + fn] );
}
else{
obj.addEventListener( type, fn, false );
}
}