DESARROLLO


Ver desarrollo actual (quinta versión)

Versiones 2.39, 2.40 y 2.41: (08-06-2012)
Observo extrañado como Calio, dentro de las arenas movedizas, traspasa el margen derecho de una pared. Después de investigar un poco y cargarme que con la bota también se debería introducir poco a poco en las arenas o que Calio avanzase todo lo que pudiera, entre otras cosas, creo que lo he arreglado todo y dejado funcionando bien, como estaban en un principio.
Hago que Thwomp, Podoboo y Banderilla maten a un caparazón lanzado, que no lo tenía hasta ahora puesto, además de configurarlos para que lo maten cuando lo sostienes entre las manos.
Veo que al caparazón del Buzzy Beetle le faltaba misteriosamente que matase a las Venus Fire Trap, así que añado que eso ocurra.
Descubro que al matar a Koopa, las banderillas que estuviesen en pantalla desaparecían, pero al tocar el hacha, se transformaban en monedas. Lo evito y ahora solamente se transforman en monedas cuando Koopa vive y tocas el hacha, pero si Koopa está muerto, no dan moneda nunca.
Realizo el final de fortaleza contra Birdo usando la bota, que sólo lo tenía hecho contra Koopa. Además, lo saco a función a parte para que me sirva en cualquier fortaleza, sea del mundo que sea, o esa es la intención, claro xD
Noté que ciertas setas se me quedaban sin velocidad X. Después de un rato pensando intentando averiguar el motivo, vi que era si la seta caía por un hueco que quedaba entre dos ladrillos y ahí ya no volvía a tener velocidad X nunca más. Lo arreglo y una vez que cae se mueve a izquierda o derecha siempre que pueda.
Este problema anterior también ocurre con los enemigos Goomba, Flurry, Spiny y Buzzy Beetle. Lo corrijo.
Al haber puesto que Calio se pegue al ladrillo lo más que pueda, veo que en el mundo de hielo, al soltar la tecla de izquierda o derecha y resbalar, avanza un poco dentro del ladrillo que le ha frenado. Lo solvento.
Visualizo que, a veces, al hacer Ground Pound en el mundo de hielo, se mete unos píxeles dentro de uno de los bloques congelados que forman el suelo. Parece que lo arreglo y ya no se introduce.
Hago que Cooligan, Nipper Plant, Dry Bones y Flurry mueran si les impacta un ladrillo que ha sido golpeado desde debajo (Dry Bones, únicamente se descompone), tal como lo venía haciendo hasta ahora con los Goombas, Troopas o Buzzy Beetles.

Me desespero intentando programar nuevas funcionalidades que no me salen y viendo que cosas que van bien, de repente se estropean ellas solas; así que decido parar aquí y volver más adelante.

Versiones 2.35, 2.36, 2.37 y 2.38: (31-05-2012)
Esta actualización será divertida para aquellos sudamericanos que siguen las evoluciones de mis juegos, ya que diré cosas como "coger algo" o "tener la concha en tus manos".
Hago que Calio pueda coger caparazones que están quietos en el suelo. Para ello, Calio ha de estar quieto o corriendo, no tener nada agarrado con anterioridad y la tecla de correr debe estar pulsada (la tecla Z).
El carapacho, tanto de Buzzy Beetle como de Troopa, permanecerá sustentado por Calio hasta que se suelte la tecla Z, donde pasará a la animación de "cascarón lanzado".
Creo un nuevo estado para estos dos enemigos, que es el de: "estás cogido", donde no daña a Calio a pesar de haber impacto contínuamente.
Creo y dibujo en pantalla los nuevos sprites de Calio asiendo, así como también el armazón de ambos enemigos en las posiciones X e Y requeridas, dependiendo del tamaño de Calio, del lado hacia el que mire y de si corre, salta, etc.
Al llegar a fin de fase, si tienes la concha en las manos, se transformará en moneda, como ocurre con la mayoría del resto de enemigos y Calio vuelve a su estado normal, sin agarrar nada.
Le arreglo la velocidad de salida al caparazón al soltarlo, y la posición también, tanto X como Y, además de si Calio es grande o chico, ya que de vez en cuando me dañaba justo cuando lo liberaba.
Al lanzarlo, el número de enemigos matados seguidos por el carapacho es 0, por si lo vuelves a sujetar y de nuevo a arrojar, que no siga por los que ya haya matado antes ganado miles de vidas, pues al cogerlo, ya cuenta como otro movimiento diferente.
Corrijo que al morir Calio sosteniéndolo, empieza la fase de nuevo sin coger nada, que antes no lo hacía y empezaba la pantalla con los brazos adelante pero sin sujetar cascarón alguno.
Dibujo a Calio pateando el armazón cuando lo suelte, pero sólo desde el suelo. Si lo sueltas en el aire, seguirás con la animación de "saltando".
Permito, a diferencia de los juegos originales, que Calio pueda saltar contra la pared aún cuando tenga la concha de los enemigos en sus manos.
Si se coge cualquier seta o flor, sigues con el caparazón asido, pero si obtienes la bota verde, lo pierdes, lanzándolo; mientras que con la estrella, lo matas.
Prohibo que Calio haga Ground Pound o que se agache mientras lleve algo agarrado en los brazos. Con esto hago que también si eres pequeño, aunque no lleves ningún carapacho en las manos, no se pare si pulsas flecha abajo, que hasta ahora si la presionabas, Calio se quedaba quieto.
Además, evito que se pueda meter por cualquier tubería mientras sostiene un cascarón.
Hago que al ser golpeado Calio mientras lleve a cuestas un armazón, éste se le desprenda de las manos y caiga hasta sostenerse sobre alguna baldosa, pudiendo la tortuga volver a caminar cuando pase el debido tiempo.
Confecciono que si un enemigo impacta con la concha mientras lo llevas cogido, mueran tanto él como el adversario. El contrincante sólo fenece si lo hace también cuando le impacta un caparazón lanzado, de lo contrario, el enemigo seguirá vivo mientras que tú perderás el carapacho. Ejemplo: Goomba muere, Pokey no.
Con motivo de esto último, observo que Lakitu no moría si le golpeaba un cascarón lanzado de Buzzy Beetle, así que lo puse.
Codifico que el armazón que tengas en las manos se empiece a agitar cuando lleve un rato agarrado, avisando de que o lo lanzas, o sale el oponente del cascarón y te daña. Además, le pongo un sonido de aviso. Si lo oyes, suéltalo rápido.


Calio convierte en moneda un caparazón que lleva entre las manos.

Versiones 2.32, 2.33 y 2.34: (19-05-2012)
Me percato de que hago que dibuje la bota siempre en los cambios de estado de Calio, aunque no la lleve. Lo arreglo y ya la dibuja solamente si la lleva calzada.
Hago que Calio avance hasta chocar con algo. Es decir, hasta ahora comprobaba que si Calio podía andar una determinada cantidad de píxeles, entonces avanzaba o retrocedía. Ahora, si esa medida no puede caminarla, anda hasta donde pueda. Ejemplo: antes se movía sólo de 4 en 4, ahora, si está a 3, 2 ó 1 píxel de chocar, avanza esa cuantía, quedándose justo al lado del ladrillo contra el que ha chocado.
Observo que Calio mientras esta metiendose por una tuberia con la bota puesta, puede moverse a izquierda o derecha e incluso saltar. Lo prohibo.
Veo que tanto los Bloque P como las setas, aparecen en ocasiones un poco por encima de lo que deberia cuando Calio ha golpeado un ladrillo con premio llendo calzado con la bota. Creo que lo arreglo poque parece que ya sale siempre donde debe.
Arreglo el patinaje de Calio con la bota encima de una plataforma. Me di cuenta de que sólo saltaba bien si pisaba en un extremo, mientras que por el medio patinaba, y por ello descubrí que me faltaba recorrer el bucle de "si piso el trozo X de esta plataforma, salto".
Corrijo la ubicación de comienzo de fase de Calio grande cuando tiene la bota puesta, ya que lo tenía puesto una posición más abajo y siempre que empezabas la fase morías xD Al solucionarlo, veo que ahora cuando muere es cuando es grande y no tiene bota xD Me pongo de acuerdo y ya funciona en ambos casos a la vez.
Me doy cuenta de que de vez en cuando al pisar una tortuga teniendo la bota, la pierdo sin que la tortuga me haya golpeado. Después de un tiempo descubro que es debido a cuando Calio la golpea mientras está subiendo el minisalto que pega al caminar. Así pues, lo solvento.
Contemplo apabullado cómo al coger una seta negra siendo grande, con el poder de alguna flor y llendo con la bota calzada, pierdo el zapato y la paleta se me torna a la normal de Calio grande, pero pudiendo disparar, así que enmendo la pérdida de la paleta y solo me abandona la bota.
Noto que puedo acceder a la casa de objetos desde la primera fase de cualquier mundo abierto cuando dicha casa está activa en el Mundo 1 (que es el único lugar habilitado para ello, de momento). Esto ya lo comenté en la versión 1.83, pero se ve que no quedó bien arreglado xD Ahora CREO y espero que sí xD
Me entero de que si Calio está con la bota subido a una plataforma y cae otra diferente que ha pisado antes, nuestro personaje cae como si hubiera caido la plataforma en la que está subido, pero ésta sigue ahí hasta caer. Lo reparo, o eso creo, porque ya no me fío de nada, jaja.
Subsano (benditos sinónimos xD) un error a la hora de elegir fase sólo con el ratón, pues éste podía elegir jugar fases que no existen (como la 1-9, la 3-12...). Ahora ya se remarcan para elegir únicamente las fases visibles disponibles.
Así mismo, veo que si está la casa de los objetos disponible en el menú de fases y pulso con el ratón para seleccionarla, me juega la fase normal. Le pongo remedio y ya entra en el minijuego.


Calio chafando con la bota a Piranha Plant, Goomba SMB3, Buzzy Beetle NSMBW y Spiny.

Versiones 2.28, 2.29, 2.30 y 2.31: (11-05-2012)
Cancelo automáticamente los disparos de los enemigos al tocar Calio el mástil de la bandera de fin de fase, ya que observé en la fase 1-1 que si el disparo de una Venus Fire Trap continuaba vivo, podía matar a Calio (y de hecho, me mató) mientras bajaba la bandera.
Programo que al tocar el hacha de fin de fortaleza todos los enemigos (excepto Koopa, Birdo, Lakitu, Firebar y Banderilla de fase) que estén entre el margen izquierdo de la pantalla y el propio hacha, incluyendo los congelados, se transformen en monedas e incrementen su puntuación a medida que mueran e incluso pudiendo lograr vidas, de la misma manera que ocurre matando enemigos con la estrella, el boomerang, lanzando caparazón o pisando enemigos de forma consecutiva sin tocar el suelo.
Repito lo anterior para fin de fase normal y tocando el palo de la bandera.
Cambio los gráficos del Goomba gris por los del Goomba del Super Mario Bros 3, tiñédolo de color marrón oscuro.
Prohibo a los Bill Blasters (cañones) seguir disparando Bullet Bill una vez que Calio ha tocado el mástil de la bandera de fin de fase.
Hago que si Calio lleva calzada la bota verde (sí, todavía no la he acabado, aún faltan muchas cosas) y se sube encima de una plataforma, no pierda el zapato y se pueda mover por encima de ella como debe.
Observo, como consecuencia de esto último, que a veces, mientras está Calio con la bota subido a una plataforma y colisiona con un ladrillo, cae de la plataforma cuando no debe. Entonces a partir de ahora ajusto la posición Y de Calio al colisionar contra cualquier ladrillo y parece que así lo arreglo, pues no se me ha vuelto a caer de ella.
Me percato de que llendo con la bota, al activar un bloque P, quedándome encima de unos ladrillos que antes eran monedas, al acabarse el efecto del bloque P, Calio no cae, quedándose encima de las monedas. Lo arreglo para que al no haber ladrillo ni plataforma en los que sostenerse, caiga siempre.
Con estas últimas cosas, arreglo sin querer 2 cosas: la primera que no me permitía poner plataformas muy seguidas unas de otras, (y no sabía a qué era debido, y ahora tampoco sé por qué se ha solucionado xD, supongo que las condiciones de ahora están bien puestas xD), y la segunda que si saltabas a coger una bota y caías encima de una plataforma, la traspasaba (que tampoco sabía a qué era debido), pero ahora ambas cosas funcionan bien.
Eso sí, observo que alguna vez Calio teniendo la bota patina al subirse a una plataforma y ya después de un poco comienza a saltar normal. Sinceramente, no sé por qué puede ser, porque lo hace cuando quiere xD
Hago que al meterse por una tubería con la bota, allá donde vayas, sigas con la bota y no la pierdas por el camino.
Igual que soluciono cosas sin querer, también estropeo otras. Descubro que ahora se me hunde en las arenas movedizas cuando Calio lleva la bota puesta. Lo arreglo de nuevo.
Asimismo, al subir a un bloque helado con la bota me patina en vez de botar. Lo solvento también.
Dibujo la bota cuando coges seta o flor teniendo la bota calzada, durante la animación de cambio de estado. Al ser golpeado simplemente se pierde la bota, entonces no tengo que dibujarla mientras se pierde poder o Calio cambia de tamaño.
Versiones 2.24, 2.25, 2.26 y 2.27: (01-05-2012)
Sigo con la bota verde, que no he terminado, ni mucho menos:
Codifico que al contacto con las arenas movedizas se hunda lentamente, como cuando Calio no la lleva, permitiendo también que pueda saltar o moverse.
Hago que cuando pise un bloque de hielo se mantenga encima como si fuese piso normal. Al romperse dicho bloque, caerá sobre el enemigo y lo matará.
Veo que si golpeo un bloque de hielo por debajo, la bota desaparece y Calio cae normal del salto. Lo corrijo.
Si Calio lleva la bota y está quieto y el enemigo Trouter viene del suelo hacia arriba, Calio lo mata (que tal como lo tenía era Trouter quien dañaba). Repito lo mismo contra Troopa y Nipper Plant, a expensas de detectarlo en algún adversario más.
Hago que si Trouter estaba congelado y Calio encima quieto con la bota, muera directamente al romperse el bloque, ya que si no lo hacía, Trouter no moría y golpeaba a Calio misteriosamente.
Arreglo las colisiones de Trouter y Nipper Plant con Calio metido en la bota siendo pequeño, ya que ocurría que tú lo pisabas y no lo matabas. Ahora parece que sí.
Hago la animación de perder la bota al ser golpeado Calio por cualquier enemigo.
Permito mediante Salto + Arriba perder la bota a propósito (por si necesitas saltar un precipicio demasiado largo y con la bota no logras llegar al otro extremo), pudiendo combinarse el salto con bota, caída, y salto desprendiéndose de la bota sin pisar el suelo.
Hago que al pasar de fase llevando la bota, baje la bandera y salte al castillo con la bota, en vez de ir corriendo. Además, configuro que no pierda la bota de una fase a otra.
Repito lo mismo al acabar una fortaleza con bota. Aquí, evito además que la bota toque con la punta el hacha de fin de puente sin haber subido el ladrillo que la contiene, que vi que se podía finalizar la fase desde un ladrillo de la fila inferior, y Calio medio atravesaba la pared.
Hago que de una partida a otra se cancele el uso de la bota (pero no entre fase y fase, ojo), y codifico lo mismo para los objetos almacenados.
Agrego los objetos flor de boomerang y bota verde al minijuego de manera que se puedan ganar ahí y almacenarlos para las siguientes fases. Asimismo los añado al menú de elección de objetos en la selección de fases. Con ello, modifico el juego para que aparezcan los nuevos objetos y lo dejo preparado para otros 3 por si me da por adicionar más. Como consecuencia no puedo mostrar los objetos abajo como hasta ahora, ya que tengo más objetos (actualmente 9) de los que me caben ahí (que son 7), así que decido presentar sólo aquellos que estén presentes en el minijuego. Así sabrás los que puedes ganar, pero ignorarás dónde se esconden. Si por algún casual algún objeto está repetido, aparecerá una carta con una pica boca abajo y de color gris, simplemente porque no me parecía correcto que si por ejemplo hay dos flores de hielo y dos setas rojas, aparecieran ambas repetidas, con los contadores en ambos lugares, etc.
Por lo mismo, altero el menú de selección de objetos antes de empezar una fase. Simplemente, en vez de una fila de objetos, ahora hay 2, pudiendo navegar arriba, abajo, izquierda y derecha, entre los 10 objetos posibles, dejando 3 huecos para 3 objetos más, como dije anteriormente. Además, al igual que presento una estrella en el caso de que vaya a ser usada desde el principio de fase, también muestro la bota verde, tanto si se traía ya de la fase anterior como si la has seleccionado de este menú, permitiendo que tanto bota y estrella sean compatibles (es decir, que cada objeto tiene su posición determinada en la pantalla y no se solapa uno con otro ni se dibuja uno encima del otro ni nada parecido).
Hago que una vez pasado el minijuego de la Casa de los Objetos, ya no salga la seta verde y con letras de OBJ si se vuelve a completar la fase, si no que ahora ya es una fase normal y corriente, que hasta entonces si te la pasabas, sacabas la seta OBJ, si entrabas al minijuego, después la fase volvía a ser jugable, y al pasarla de nuevo, volvías a sacar el minijuego de los objetos, y así sucesivamente.


Minijuego de la Casa de los Objetos actualizado.

Versiones 2.21, 2.22 y 2.23: (23-04-2012)
Me percato de que al haber modificado la manera de dibujar a Calio, al completar una fase bajando la bandera y metiéndose en el castillo, éste no desaparece dentro de él, sino que sigue dibujado a la puerta del mismo, pero sólo cuando es pequeño. Lo arreglo.
Agrego la bota verde en la que se metía Mario Bros en el Super Mario Bros 3, en la fase 5-3 y solamente en esa fase. Pero yo pretendo hacerla como un objeto normal.
Le hago sus principales movimientos: que salte poco (caminar normal), salte mucho (al pisar un enemigo independientemente de que pulses la tecla del salto o no), que caiga de los saltos, y quieto. (El salto de la seta azul se pierde dentro de la bota, pero al extraviar el zapato, volverás a saltar como la seta manda).
Configuro que al ser golpeado Calio mientras esté dentro de la bota, suene sonido y parpadee un poco sin perder su poder actual (grande, flor...)
Por defecto Calio se queda quieto si no pulsas izquierda o derecha, y una vez pulsadas es cuando dará ese pequeño saltito. Además, si pulsas la tecla de correr, avanzarás más, claro.
Evito que salte apoyándose contra la pared mientras está dentro de la bota.
Le programo que no salte de continuo, si no que haya que levantar la tecla y volverla a pulsar, como en el salto normal.
Hago que pueda disparar estando dentro de la bota, pero sin cambiar de animación (fuego, hielo y boomerang).
La creo como dije arriba como un objeto normal que sale de ladrillo botando como la estrella. Más adelante la añadiré al minijuego de la casa de objetos. Aparece al golpear el ladrillo con Ground Pound, saltando normal, subido a nube de Lakitu y lanzando caparazones de Troopa y Buzzy Beetle.
Dentro de la bota no puedes hacer Ground Pound.
Habilito que chafe de un pisotón a Goomba, Flurry, Spiny, Piranha Plant, Troopa, Dry Bones (lo desmonta), Buzzy Beetle, Koopa (8 pisotones), Boo, Fang, Lakitu, Bullet Bill, Trouter, Ptooie, Pokey, Cooligan, Huevo de Birdo, Venus Fire Trap, Bombas, Birdo (8 pisotones) y Nipper Plant (y qué guerra me ha dado este enemigo). En la sección de los enemigos lo verás mejor con dibujitos y eso.
Arreglo caparazones quietos de Buzzy Beetle y Troopa, que al saltarles encima con la bota y estos estar quietos, Calio perdía la bota incomprensiblemente.
Veo que al golpear ladrillos mientras estás dentro de la bota, Calio internamente queda bastante metido en el ladrillo que acaba de pulsar y si éste tiene objeto, Calio lo coge automáticamente nada más salir, y eso es una faena por si te sale una seta negra y mueres al instante. Entonces creo una condición especial de que se espere unas iteraciones a que el objeto pueda ser cogido siempre que vaya Calio dentro de la bota; si no va con la bota, la comprobación sigue siendo como hasta ahora.
Trato todo lo referente a pisar con la bota la baldosa que se cae a los X segundos de pisarla: que se quede quieto encima nada más pisarla, que si cae la baldosa caiga Calio también con la bota y que pueda saltar o permanecer ahí hasta que toque suelo o morir, etc.
Versiones 2.18, 2.19 y 2.20: (13-04-2012)
Creo una flor nueva: marrón y naranja. Al cogerla, Calio aparecerá vestido de marrón oscuro y naranja y disparará bumeranes.
Sólo se pueden disparar de uno en uno.
Como es un boomerang, avanza casi horizontalmente hasta cierto punto para después retroceder (como el movimiento original del Boomerang Bro del Super Mario Bros 3). Al volver a la posición donde reside Calio, desaparecerá, pero si retorna y Calio no está en la posición a la que debe volver el bumerán, se perderá por el límite de la pantalla. Eso sí, una vez que comienza a recular, el arma puede ser cogida por Calio en cualquier momento, pero mientras avanza no.
Permite coger monedas que estén en su trayectoria de movimiento.
Si mata a un enemigo, el disparo no se cancela, si no que sigue su acción hasta que Calio lo coja o se pierda. Esto significa que puedes matar de un solo lanzamiento a varios enemigos, incrementándose la puntuación de la misma manera que matando enemigos seguidos con la estrella, caparazones lanzados o saltando encima de ellos sin pisar el suelo.
¿A qué enemigos mata? Goomba, Flurry, Spiny, Icicle, Buzzy Beetle, Troopa, Dry Bones (lo desmonta), Piranha Plant, Troter, Ptooie, Nipper Plant, Boo, Thwomp, Cooligan, Fang, Venus Fire Trap, Birdo Egg, Bullet Bill, Lakitu, Koopa (4 golpes) y Birdo (4 golpes). Mientras que el resto de enemigos hacen que el bumerán quede inservible medio girando hasta que se pierda por el límite inferior de la pantalla.
Por esto, actualizo la página de los enemigos dentro del FAQ.
Si golpea a Koopa o Birdo sí que desaparece el boomerang, pero el toque cuenta (y ganarás 100 puntos).
Si Calio es golpeado, el bumerán se cancela, como ocurre con los disparos de fuego y hielo.
Me doy cuenta de que las Piranha Plant y Venus Fire Trap, mueren por un golpe de boomerang aunque estén escondidas dentro de la tubería. Lo arreglo para que sólo mueran cuando estén fuera. Mismo caso en arenas movedizas.
Pongo que salga la flor nueva en los ladrillos de objeto aleatorio, en ladrillos ocultos y en ladrillos de apariencia rompible. Es decir, en los de la interrogación no vas a tener flor de boomerang.
Además, la configuro para que pueda ser sacada mediante salto de Calio, cayendo con Ground Pound, por debajo subido a una nube, y lanzando caparazón de Buzzy Beetle o Troopa.


Movimiento del bumerán.

Versiones 2.15, 2.16 y 2.17: (05-04-2012)
Completo a Bullet Bill haciendo que muera con la estrella, al chocar con un caparazón lanzado y con la explosión de una bomba.
Hago dos tipos nuevos de Bullet Bill:
- balas que se mueven arriba y abajo según la posición de Calio.
- balas que parpadean y cambian de sentido.
Ahora mismo tengo puesto que me elija aleatoriamente de cuál de los 3 tipos será la bala que va a tirar. Quizá luego distinga los tipos por mundos o fases determinadas.
Arreglo dos microfallos en el tratamiento de los Fangs y los huevos de Birdo a la hora de matarlos un caparazón de Buzzy Beetle, que los tenía puestos como si los matase un caparazón de Troopa.
Corrijo la posición de salida del aviso de querer abandonar la fase cuando se ha pulsado ESC mientras jugabas en una fase de fortaleza, que se veía bien el mensaje siempre excepto cuando el scroll se paraba al llegar a combatir a Koopa/Birdo, que ahí la pantalla está quieta hasta que consigas tocar el hacha y el mensaje podía perderse por un lateral sin ver las opciones. Ahora queda encuadrado en el medio de la pantalla, como en el resto de ocasiones.
Elimino el efecto de "doble Firebar" que en ocasiones salía. Me explico: en alguna Firebar parecía como si hubiesen dos en vez de una y podía darse el caso de que una de ellas fuera un paso por delante de la otra. Era porque lo dibujaba dos veces, una antes de tratar su movimiento y otra después. Ahora parece que va bien y se dibuja en todos los cambios de estado de Calio.
Cambio los sprites de lava de las fortalezas por los de la lava animada del Super Mario Bros 3.
Al usar los mismos BITMAP y modificando los dibujos y los tamaños dependiendo del mundo o la fortaleza usada, veo que si voy del mundo 4 a una fortaleza, ciertas imágenes de la lava se vuelven un punto. Infiero que es debido a que esa imagen propiamente en el mundo 4 es un copo de nieve. Soluciono este incidente para las fortalezas de los mundos 1, 2 y 3. Del 4 no sé, porque como todavía no la tengo creada... xD
Añado sonido a Bullet Bill cuando cambia de lado.
Agrego animación de humo al Bill Blaster justo después de disparar cada Bullet Bill.
Como consecuencia de esto veo que me crea el doble de cañones de los necesarios, es decir, si tú ves solo dos, en realidad me creaba 4 y disparaba 4 balas en lugar de dos. Simplemente tuve que actualizar la condición que le puse a la hora de crear una bala nueva con lo añadido para que apareciese el humo.
Hago que salga una pequeña animación de "hielo roto" cuando los disparos de un Venus Fire Trap impactan en los bloques de hielo de suelo o de moneda congelada. Extrapolo lo mismo a la explosión de la bomba, disparo de fuego de Calio y al impacto de un Bullet Bill a las mismas baldosas de hielo.
Versiones 2.12, 2.13 y 2.14: (31-03-2012)
Habilito el ratón en el menú de opciones (velocidad, sonido, resolución de pantalla...). Al pasar el ratón por encima de cualquier opción, ésta se ilumina, excepto las de autosave e idioma, que todavía no están hechas. Las elecciones de si/no alternan sus valores con cada click que haya (indistintamente de que sea click con el botón izquierdo o con el derecho), mientras que las que puedan tomar varios valores, con un click izquierdo aumentan la cantidad y con el derecho la decrementan. También se pueden pulsar las dos opciones de SALIR y GUARDAR.
Hago que los cañones (Bill Blaster) que he ido poniendo a lo largo de la fase 4-1 puedan disparar Bullet Bill:
- Creo su sprite y lo dibujo en pantalla.
- Permito que una vez activos, la bala y el cañón queden inactivos al estar a una distancia lo suficientemente lejos con respecto a Calio.
- Configuro que la bala salga a una velocidad aleatoria para darle más juego. Es decir, el mismo cañón disparará unas balas más rápidas y otras más lentas, según decida arbitrariamente, pero siempre lo hará hacia el lado donde esté Calio.
- Programo que Bullet Bill rompa un bloque de hielo cuando contacta con él, tanto el que aprisiona a un enemigo, como los de suelo y de monedas congeladas.
- Codifico que las balas dañen a Calio, así como también que puedan ser pisadas.
- Hago que el disparo de fuego no le afecte y el de hielo sí le congela.
- Bullet Bill puede ser derrotado mediante Ground Pound.
- Lo dibujo en los cambios de estado (coger una seta/flor y ser golpeado o matado).
Veo que si piso una baldosa que se cae después de pisarla un tiempo, Calio aparece unos píxeles más arriba de lo que debería. Misteriosamente no he cambiado nada de eso, y despues de comparar el código con versiones anteriores, me doy cuenta de que se debe a que cambié de lugar la manera de dibujar los enemigos, objetos, etc, y resulta que de Calio me dibujaba la posición actual, y de la baldosa que se cae me reproducía la siguiente, y por eso estaban separados cuando caían. Ahora ya cae la baldosa y Calio pegado a ella de nuevo.
Cambio los sprites originales de Bullet Bill del Super Mario Bros 1 por los del Super Mario Land 2 y los edito un poco. Me hace más gracia que la bala tenga cara de malvada y sonrisa maléfica.


Bullets Bill en acción.

Versiones 2.09, 2.10 y 2.11: (26-03-2012)
Hago que se pueda coger un objeto mientras está saliendo, que hasta ahora tenías que esperar a que saliese por completo del ladrillo.
Mejoro los gráficos de algunos logros, que estaban con la apariencia anterior de Calio.
Rediseño al Buzzy Beetle azul para que se parezca a su versión del Super Mario Bros Wii. El gris y el negro siguen como hasta ahora.
Hago que los Spinys y los Goombas que salen de un ladrillo de objeto aleatorio, elijan libremente hacia qué lado van, que antes iban solo hacia la izquierda y solamente elegían el color.
Programo que una seta roja pueda salir por un lateral al golpear un caparazón de un Buzzy Beetle el ladrillo que la contiene. Es decir, lo mismo que con el Ground Pound, pero ahora con caparazón, y si no puede salir por arriba (que es lo normal), sale por un lateral.
Lo repito para todas las setas, las flores y la estrella, y después hago todo para el caparazón de Troopa también.
Arreglo que el puntero del ratón se siga mostrando en la pantalla cuando seleccionas NO/CANCELAR, etc, y permaneces en el mismo menú.
También reposiciono el puntero del ratón a la hora de ver el High-Score, que al poder hacer click para volver al menú principal, si ese click era un poco largo (si dejabas pulsado el dedo un poco más del tiempo necesario), volvías a elegir sin querer la opción de ver el High-Score. Ahora está puesto para que vaya a un lugar central donde no se elige ninguna opción.
Hago que se pueda finalizar el minijuego de las cartas al conseguir todos los objetos y ninguna seta malvada, que hasta ahora sólo se finalizaba obligatoriamente al obtener una pareja de setas malvadas, aunque hubieras logrado todos los objetos.
Añado música de fondo a este minijuego, que se para al obtener una seta malvada o completar todos los objetos, indicando que el juego ha finalizado. Además, agrego un sonido para indicar que se ha completado el minijuego.
Observo con asombro cómo de vez en cuando el puntero del ratón desaparece a la hora de grabar un juego. Después de investigar veo que sólo ocurría si pulsaba la tecla G de GUARDAR, mientras que haciendo click en esa misma opción, no desaparecía. Ahora ya está arreglado y hagas lo que hagas no desaparece (creo) xD
Veo que al ir desde el menú de selección de fases al submenú de opciones, al volver sigue con la música de éste último en vez de volver a cargar la música del primero. Lo corrijo.
Añado ratón en el submenú de logros. Con clicks se puede ver y ocultar la descripción de cualquiera de ellos, así como abandonar dicho menú. También ilumino todas las opciones disponibles en pantalla al paso del cursor, para que se vea que se puede pulsar ahí, y oculto la de detallar, ya que para ver cada logro simplemente se pica en su nombre. De momento sólo están disponibles los 4 primeros logros, que son los que tengo codificados.
Versiones 2.05, 2.06, 2.07 y 2.08: (23-03-2012)
Hago que al hacer Ground Pound y haber un ladrillo debajo que bloquea la salida de una seta roja, pueda salir por el lateral izquierdo (dibujando su correspondiente animación). Si éste también está bloqueado, entonces aparecerá por el derecho, y si éste a su vez está bloqueado, entonces apaga y vámonos, porque no hay ningún sitio libre, ya que si hago que salga por encima, Calio lo cogerá al instante, y si es una seta negra, morirá.
Repito el proceso para setas azules y negras, y para las plantas de fuego y de hielo. Y por último, también para las estrellas.
Si hago Ground Pound siendo pequeño en un ladrillo con bloque P, éste sale más abajo de lo que debería. Incomprensiblemente estaba puesto como si fuera grande.
También al hacer Ground Pound sobre un ladrillo de objeto aleatorio, éste aparecía por arriba en vez de caer. Pensaba que lo había codificado pero veo que no era así. Lo hago y ya salen bien setas y estrellas.
Con la flor tengo varios problemas ya que si consigo arreglarlo en Ground Pound, lo estropeo en el salto, y viceversa. Después de un rato consigo una solución que satisface ambas cosas.
Configuro que pueda aparecer un Spiny al golpear a un bloque de objeto aleatorio. Hago que aparezca tanto al golpearlo en salto o por Ground Pound o subido en una nube, siendo pequeño o grande.
Hago exactamente lo mismo para que también pueda aparecer un Goomba.
Tanto el Spiny como el Goomba saldrán al doble de la velocidad que tienen normalmente. Luego ya en cuanto se chocan lateralmente van a la velocidad normal. Hago que vayan al doble para asustar más que nada xD
Imposibito que Calio cambie a la animación de disparar si ya hay dos disparos en la pantalla. Esto ocurre en el juego original. Yo hasta ahora sí permitía que cambiase y que sonase el disparo, pero no salía. Ahora creo que queda mucho mejor.
Dibujo la nube de Lakitu en los cambios de estado de Calio, que se ve que solo puse que lo hiciera cuando Calio muere.
Internamente saco cada tratamiento de enemigo a una función a parte con el fin de clarificar algunas cosas y mejorar la rapidez del juego a la hora de realizar las operaciones.
Inactivo las Piranha Plants que están fuera del alcance de Calio (que en muchos enemigos lo tengo hecho, pero veo que en varios no). Hago lo mismo con los Podoboos, Firebars, Thwomps, Trouters, Nipper Plants y Pokeys.
Voy a Linux a ver si todo está en orden, compilo... y obtengo 12 warnings xD Con paciencia quito todos, pero observo que el juego se estropea a menudo: cuando Calio coge una seta, cuando doy X pasos en fases del mundo 3, en otras directamente al seleccionarlas para jugarlas... Decido mirar todo esto con calma, ya que en Windows no pasa nada, pues se come todos los fallos y no protesta.
Repasando por esto último observo que me había dejado en el tintero liberar antes de salir del juego un sonido y 4 imágenes y seguían consumiendo memoria alegremente, pero aún arreglándolo, sigue fallando.
Por fin veo el error, y era que en el tratamiento de las banderillas de las fortalezas, me salía fuera del rango permitido, pero hasta ahora no había fallado :S Pero bueno, parece que está arreglado.


Enemigos saliendo de un bloque aleatorio y flor de hielo y estrella saliendo por sendos laterales.

Versiones 2.03 y 2.04: (17-03-2012)
Pongo también disponible el ratón en menú de selección de fase, tanto para las 5 opciones del menú (guardar, ver logros, objetos, opciones y salir), como avanzar mundo adelante/atrás que ya comenté anteriormente, e incluso para elegir fase (pero esto sólo va bien con juegos nuevos -salvados a partir de la v1.22-, ya que con antiguos te permite elegir hasta fases que no existen :S). De momento lo dejo así, pero intentaré que funcione también con juegos antiguos, aunque no sé yo...
Hago que el caparazón lanzado de una tortuga, destroce los ladrillos rompibles y a su vez cambie de dirección (que rebote porque ha colisionado).
Repito el proceso para que saque monedas, solas o de un ladrillo monedero; además de los objetos: seta roja, seta azul, seta negra, flor de fuego, flor de hielo y estrella; y golpeando también a un ladrillo con bloque P sacándolo; o a un ladrillo de objetos aleatorio, pudiendo obtener todos los objetos anteriores y la vida. Es decir, si choca con cualquier ladrillo con premio: todos los extras disponibles hasta ahora (y creo que no me dejo ninguno xD).
Del mismo modo, hago todas estas cosas para un caparazón lanzado de un Buzzy Beatle.
Aviso que los caparazones no son capaces de golpear contra los ladrillos ocultos. Esos son sólo activables mediante Calio al saltar hacia arriba.


Un caparazón destrozando ladrillos.

Versiones 2.00, 2.01 y 2.02: (11-03-2012)
Observo que al acabar la actividad del Bloque P, se pone como si hubiera sido pulsado por medio de Ground Pound, es decir, boca abajo. Me percato de que simplemente había puesto un 1 cuando era un 2...
Veo que por cada iteración del juego, me dibuja dos veces las Piranha Plant. Remuevo una, porque es tontería que las pinte dos veces si con una ya vale xD
Pongo una comprobación de si Calio está agachado al contactar con Piranha Plant, Venus Fire Trap y disparo de esta última, que antes no lo tenía y si estabas agachado te podían dañar aunque visualmente no colisionaran.
Permito dar un click de ratón en las opciones de "pulse una tecla para continuar". De momento lo posibilito en 4 sitios.
Con el cambio de resolución del juego, no había hecho que la pantalla temblase cuando cae Thwomp. Ahora ya tiembla, pero dependiendo de la resolución y del tiempo parecerá que unas veces tiembla más que otras.
Añado confirmación de salir en el menú de fases, que aquí todavía no lo tenía.
Proporciono la carga de un juego por ratón (para no tener que andar pulsando teclas y más teclas), iluminando un juego existente de verde indicando que se puede cargar. Si el juego no se ilumina (porque no existe) y pinchas en él, dará el mismo error que si lo eligieras desde teclado.
Del mismo modo concedo la opción de salvar un juego mediante clicks. Además, permito que si se pica en N o se pulsa dicha letra a la hora de sobreescribir un juego, no se sale directamente al menú de selelccion de fase como ocurría hasta ahora, si no que podras elegir otro lugar en el que salvar o cancelar el guardado.
Agrego un dibujo de flechas hacia la izquierda y la derecha en el menú de selección de fase para cambiar de mundo. Habilito ratón en ellas.
En este mismo menú, si hacías click en SALIR, se salía al menú principal, y al querer abandonar el juego por completo, extrañamente se metía otra vez en este menú de selección de fase. Era porque faltaba hacer efectivo ese click por completo.
Me percato de que la estrella no mata a los enemigos en la fase 2-4. Lo arreglo después de comerme la cabeza un rato.
Dibujo boca abajo al caparazón del coquito cuando éste ha sido derrotado, que antes caía muerto pero normal.
Versiones 1.96, 1.97, 1.98 y 1.99: (04-03-2012)
Hago otro tipo más de Lakitu: en este caso en vez de Spinys lanzará Bombas que estallan:
- Realizo los sprites de la bomba tomando como base la roja del Super Mario Bros 2 (Doki Doki Panic), pero las mías son de color negro.
- La dibujo en pantalla, animando la llamita de la mecha.
- Hago que caiga desde la posición de Lakitu (realizado éste la misma animación que con los Spinys) hasta que colisione con una baldosa; sin embargo, romperá los bloques de enemigos congelados.
- Pasados unos instantes, la bomba "parpadeará" intercambiando su color de negro a gris y a rojo, para finalmente explotar.
- Programo que dañe mientras caiga. Una vez en el suelo, ya no lacera, pero su estallido sí.
- Al estrumpir, romperá los bloques de hielo tanto de suelo como los que encierran enemigos o monedas, y además matará a los enemigos a los que alcance su explosión.
- Permito que obtengas puntos por los enemigos abatidos durante la explosión, y si ésta aniquila de manera consecutiva a un número determinado de enemigos, conseguirás una o varias vidas extras, como ocurre con la estrella, con un caparazón lanzado o al pisarlos sin tocar el suelo. Aclaro que si estrumpen 3 bombas a la vez, y una mata 4 enemigos, la otra 2, y la tercera otros 4, no obtendrás lo equivalente a 10 muertes, si no que cada bomba se cuenta por separado.
- La estrella eliminará cualquier bomba sin que ésta haya explotado, esté cayendo o parada en el suelo.
- El disparo de fuego no surte ningún efecto al contacto con la bomba, al igual que el de hielo, que no la congela. Menos aún puede ser pisada y Ground Pound tampoco sirve.
- Le añado sonido a la explosión.
Hago que un caparazón lanzado muera al chocar con una bomba que todavía no ha explotado.
También realizo que al chocar con un Koopa o un Birdo, muera, que no lo había hecho antes según veo.
Codifico que Lakitu muera al contacto con un caparazón lanzado, que tampoco lo había hecho.


Lakitu tirando una bomba que explota.

Versiones 1.94 y 1.95: (27-02-2012)
Realizo que Calio pueda subirse a la nube que Lakitu ha dejado al morir cuando ha sido pisado, para que la use él durante un tiempo:
- Al pasar unos determinados segundos la nube comenzará a parpadear cambiando de color entre negro y blanco, indicando que la nube va a desaparecer. Cuando se vaya, Calio caerá si seguía encima.
- Codifico que pueda moverse en las 4 direcciones principales: arriba, abajo, izquierda y derecha. Aclaro que no te moverás más rápido si pulsas la tecla de correr, sino que se desplazará siempre a la misma velocidad.
- Permito que, en todo momento, Calio pueda saltar de la nube pulsando la tecla del salto. Si vuelves a caer encima, vuelves a manejar la nube de nuevo.
- Programo que no se agache si pulso "abajo" y Calio es grande mientras maneja la nube.
- Dibujo la nube por delante de Calio para que parezca que esta sumergido en parte en ella ya que si mantengo a Calio por encima el efecto de verle los pies por delante de la nube es un poco feo.
- Configuro las colisiones por los 4 costados tanto con ladrillos como bloques de enemigos congelados.
- Calio romperá siempre los ladrillos mientras esté subido a la nube al colisionar con aquéllos por debajo (como si saltara, incluso siendo pequeño), además de sacar monedas, objetos, etc.


Calio encima de la nube.

Versiones 1.91, 1.92 y 1.93: (21-02-2012)
Creo a Lakitu:
- Adapto sus gráficos de NES al estilo de mi juego, además de uno especial del Mario World para cuando se le quite la nube.
- Lo dibujo y configuro que "persiga" a Calio. Es decir, se moverá en torno a Calio pero desplazándose casi libremente, pudiendo salirse de los márgenes en ciertos momentos y volviendo a entrar en seguida. Aclaro que sólo se moverá en horizontal, nunca en vertical.
- Hago que vuelva a aparecer un nuevo Lakitu después de X segundos si ha sido matado.
- Codifico que caiga si Calio le pisa, dejando la nube libre para que la uses tú si te subes encima (esto todavía está sin implementar).
- Programo que Lakitu dañe.
- Realizo que Lakitu desaparezca por un lateral al estar cercano al final de fase.
- Muere también al contacto con la estrella, el disparo de fuego y por Ground Pound, pero en estos casos no liberará nunca la nube, sólo lo hará si lo pisas.
- Desarrollo que al contacto con el disparo de hielo, quede congelado.
- Materializo que arroje Spinys. Estos caerán hechos una bola hasta impactar en ladrillo o bloque de hielo, que hará que empiecen a caminar y a actuar normalmente.
- Animo el lanzamiento de Lakitu tirando Spinys, haciendo como que se esconde detrás de la nube, volviendo a asomarse con el enemigo hasta tirarlo.
- Le pongo un límite de enemigos que puede disparar (más que nada para evitar miles de vidas extras seguidas), así como también uno de tiempo entre lanzamiento y lanzamiento.
- Hago que si la nube no es cogida durante un determinado tiempo, se vaya.


Lakitu tirando un Spiny.

Versiones 1.88, 1.89 y 1.90: (12-02-2012)
Hago que Birdo y Koopa maten a un caparazón lanzado si éste impacta con ellos.
Creo al enemigo: Venus Fire Trap:
Es la planta carnívora que dispara bolas de fuego que aparece por primera vez en el Super Mario Bros 3.
- Adapto sus gráficos al estilo de mi juego y los creo y destruyo en el código.
- Configuro que salga de la tubería y se meta en ella más rápido que la planta carnívora normal, además de que tiene que subir más alto, puesto que es más larga.
- Al igual que la otra, no sale si Calio está cerca.
- Mueve su cabeza arriba, abajo, a izquierda y a derecha, mirando a Calio en todo momento. Su tronco queda inmóvil.
- Hago que dañe a Calio en cuanto contacten.
- Programo que muera por disparo de flor de fuego, por estrella, al contacto con un caparazón lanzado, y por Ground Pound al estar congelada en un bloque de hielo.
- Por esto último, codifico que se congele al contacto con el disparo de la flor de hielo. Además, mientras está helada no cambia la cabeza persiguiendo a Calio.
- Hago que la planta dispare bolas de fuego:
· Lo dibujo de otro color para distinguirlo de el de Calio y que no haya confusiones.
· Lo dibujo en pantalla y hago que gire a medida que pasa el tiempo.
· Sigue hasta alejarse lo suficiente, incluso si la planta ha muerto, el disparo continúa avanzando.
· La planta orientará el disparo para que vaya siempre a la posición donde esté Calio, pero respetando unos límites de velocidad.
· Saldrán de 1 a 3 disparos, dependiendo del mundo en que te encuentres, o del tipo de planta (que hay una que lanza 3 disparos a la vez).
· Configuro que el disparo dañe a Calio y que destruya bloques de hielo, tanto de enemigos, como de monedas o de suelo.
Hago que tanto esta planta como la anterior, al morir, caigan boca abajo, en vez de que aparezca una especie de humo blanco.
Actualizo un par de variables de estas plantas para una mejor codificación.


Detalle de la nueva planta y de su disparo.

Versiones 1.84, 1.85, 1.86 y 1.87: (02-02-2012)
Creo otro enemigo más: Birdo:
- Modifico sus sprites del Mario 2 para adaptarlos al estilo de mi juego.
- Dibujo sus imágenes en pantalla.
- Hago que aparezca y se mueva sin avanzar.
- Que salte.
- Que cambie a la animación de disparar, pero todavía no he puesto el huevo.
- Que golpee a Calio.
- Que sea dañado por el disparo de flor de fuego, el de hielo (que no lo congela, si no que se rompe al instante), y por la estrella.
- Le pongo sonido al disparar y al recibir daño.
- Le agrego el huevo:
· Hago que lo dispare hacia el lado que corresponda, verificando que si no hay huevos libres disponibles, haga otra cosa (caminar, saltar...).
· Codifico que el huevo lastime.
· Permito que Calio pise el huevo.
· Con la estrella también "muere" el huevo.
· Con el disparo de hielo hago que se congele y te puedas subir encima de él.
· Programo que el disparo de fuego no le haga nada.
· Con Ground Pound también te lo cargas.
· Además, hago que los caparazones maten a los huevos al contactar con ellos.
· Permito que el huevo lanzado pueda romper bloques de hielo (y Birdo también).
- Codifico que Birdo camine hasta ciertos límites.
Birdo aparecerá en las fortalezas de los mundos 3 y 4. Con lo que programo que al impactarle 4 disparos de fuego u 8 de hielo, o con la estrella, se transforme en un Trouter muerto, tal como hacía Koopa hasta ahora.
Hago que patalee al tocar Calio el hacha de fin de fortaleza y quitarse el puente, precipitándose como Koopa hacia la lava.
Todos los huevos y bloques de hielo activos en la fortaleza son aniquilados al contacto con el hacha.


Birdo tirando un huevo en el aire.

Versiones 1.82 y 1.83: (27-01-2012)
Ordeno internamente las maneras de dibujar a Calio (saltando, disparando, quieto, grande, pequeño...), ya que lo tenía un poco de aquella manera. Ahora me ahorro casi 100 líneas de código y bastantes comprobaciones.
Al guardar un juego ahora salvo también el estado de los logros, los objetos almacenados, la resolución, volumen y demás opciones en el propio savegame, etc. Esto significa que puedes guardar unas preferencias para cada vez que arranques el programa, y si cargas un juego salvado, esas opciones son sustituidas por las almacenadas en este último; vamos, que prevalecen las del juego por encima de las del menú principal.
Observo que si tengo la estrella y entro por una tubería que tiene una planta enemiga en su interior, la mato. Evito que ocurra eso tanto al introducirse como al salir de un tubo, porque no es lógico matar enemigos que no ves xD
Veo que si tengo una casa de objetos habilitada en un mundo (por ejemplo, en la fase 1-1) y juego ese nivel pero de otro mundo diferente (por ejemplo, la 3-1), me carga el minijuego de los objetos. Lo arreglo para que solo la cargue en el mundo donde es.
Me doy cuenta de que uno de los logros funcionaba mal. No digo ni cuál ni qué le pasaba porque entonces se descubre el pastel xD
En ocasiones ocurre que al golpear por debajo una caja con seta, dicho objeto no termina de subir del todo y traspasa un poco el ladrillo. CREO que lo arreglo.
Versiones 1.79, 1.80 y 1.81: (21-01-2012)
En el menú de selección de fase, añado la opción de ir al menú de objetos por medio de la letra Z (en este menú todavía no he implementado el ratón).
Creo dicho menú:
- Dibujo a Calio y los 5 objetos que se pueden usar y sus contadores.
- Hago que se pueda nevagar entre los objetos con las flechas izquierda y derecha.
- El menú se vuelve a cerrar al pulsar la misma letra, la Z, mientras que se elige un objeto con la X, que al pulsarla, transformará a Calio si así lo requiere indicando que ya usa ese objeto al instante, y el contador de dicho elemento se decrementará en una unidad.
- Puedes machacar un objeto con otro ya usado, menos la estrella. Es decir, puedes seleccionar una flor de fuego y si luego eliges una seta roja, perderás el poder de la flor.
- Al usar la estrella, saldrá dibujada al lado de Calio, y así sabrás si tiene el poder de alguna flor, etc.
- Puedes usar varios objetos a la vez del mismo tipo (por ejemplo, 5 setas azules), es tontería, pero puedes xD
- Si el contador de un objeto llega a 0, por mucho que le des a la X, no podrás usar más de dicho objeto. Sin embargo, podrás almacenar más de 100.
- Pongo sonidos de navegación entre objetos, al darle a la X para indicar que lo usas, para abrir y cerrar el menú...
- Si tienes estrella y vuelves al menú de fase, verás una estrella en vez de Calio, indicando que empezaras la fase con la estrella activa.
Elimino sprites de Calio grande y chico mirando para la izquierda y los dibujo directamente en pleno juego, como ya hice con los Goombas. Realizo lo mismo con Buzzy Beetle, Banderilla, Spiny, Koopa, Boo, Trouter, Ptooie, Pokey, Nipper Plant, Dry Bones, Troopa, Podoboo, Firebar y los disparos de fuego y de hielo.


Menú de objetos.

Versiones 1.76, 1.77 y 1.78: (17-01-2012)
Creo la casa de los objetos. Saldrá en el menú de selección de fase al pasarte un determinado nivel y dentro podrás conseguir objetos para usar antes de ir a otra fase. Es el minijuego que aparece por primera ver en el Mario Bros 3: una especie de Memory donde ganarás todos los objetos que consigas emparejar.
Se compone de 18 cartas y pueden aparecer los objetos: seta roja, seta azul, seta verde (vida), flor de fuego, flor de hielo, monedas, estrella, seta negra y seta morada. Estas dos últimas, si las emparejas, te harán perder el juego.
Después de una breve descripción del minijuego, voy con lo que he realizado:
Codifico que en el menú de selección de fase aparezca un dibujito de una casa con forma de seta y con las letras OBJ al pasarte una determinada fase en un determinado mundo. Si eliges esa fase con la seta, entrarás al minijuego, pero una sola vez. Al terminarlo, la fase volverá a ser jugable.
Hago que te puedas desplazar por las 18 cartas, arriba, abajo, izquierda y derecha.
Realizo que ponga objetos aleatoriamente, pero siempre habrá 1 pareja de setas negras y 1 de moradas.
Si presionas Z o X en una carta, se voltea, viendo su objeto. Cuando "caces" otro igual, lo ganas.
Limito la aparición de vidas a solo una pareja.
Añado sonidos de moverte entre las cartas y a la hora de conseguir un objeto.
Acoto la presentación de un mismo elemento a un máximo de 3 parejas.
Creo el array de objetos de Calio para que los pueda almacenar para elegirlos después.
Si logras una pareja de monedas, ganarás 10, no una xD.
Si por el contrario volteas las dos cartas de las setas negras o moradas (tiene que ser la pareja del mismo color, el minijuego no termina con una morada y una negra), se descubren todas y el juego espera a que pulses una tecla. Al darla, se suman los objetos y se vuelve a esperar para que procedas a teclear de nuevo, para que te enteres de que se han sumado más que nada, y entonces se sale al menú de fases.
Quito 3 sprites que usaba hasta ahora de más y así gasto menos RAM.
Reinicio los contadores de los objetos al salir al menú principal, evitando que al salir de un juego y empezar otro nuevo, los objetos sigan.
Agrego también un sonido al haber obtenido una seta malvada. Y además distingo a éstas con el fondo de la carta de color negro.
Aclaro que el minijuego termina siempre al emparejar una seta malvada. Esto es, que si consigues el resto de objetos, no termina, si no que debes unir las setas negras o moradas y entonces ya finaliza.


A la izquierda, la seta que indica la fase para entrar al minijuego. A la derecha, el juego gráficamente.

Versiones 1.73, 1.74 y 1.75: (12-01-2012)
En el menú de opciones, añado la de pedir confirmación (al abandonar cualquier cosa: el juego entero, una fase, etc). Lo que se decida lo guardo en el archivo de configuración para no tener que andar cambiando su valor a cada rato. Y por ello:
- permito salir del menú de opciones sin guardar y sin pedir confirmación si así se ha deseado.
- también posibilito salir con o sin afirmación del juego entero (por pulsar la tecla ESC, por darle al INTRO cuando está seleccionada la opción de SALIR y por click de ratón en el mismo lugar).
- así mismo, salir mientras se juega con o sin acreditación.
Edito todos los gráficos de Calio y le doy un aspecto más actual: mono azul, guantes, camisa roja, zapatos, bigote y pelo negro, ojos... También a Peach y a Toad.
Hago que las Piranha Plant no dañen mientras estén metidas dentro de la tubería, para que Calio se pueda meter y salir por una que tenga ese enemigo.
Habilito el ratón en los mensajes de confirmación de salir de opciones sin salvar (es decir, hago que se vea el cursor, que se recuadre la opción que está señalando y que los clicks con el botón izquierdo funcionen).
El ratón también está activo en el aviso al intentar abandonar una fase y al salir del juego entero, teniendo en cuenta la posición en la que estés en la fase en ese momento, ya que no es lo mismo al extremo izquierdo, que al derecho, que en el medio.
Me percato de que al modificar las imagenes de Calio y los colores, el Goomba amarillo, el Podoboo, la Firebar y el disparo de la planta de fuego han sido afectados también. Los arreglo en seguida.
Oculto el ratón si se pulsa ESC en el juego y se elige NO en el menú de confirmación, ya que de lo contrario, el cursor aparecía en pleno juego.
Posiciono el cursor del ratón para que al salir de un menú no me pulse la opción de otro sin querer.
Pongo un cursor de ratón grande y bonito, para no perderlo nunca de vista xD
Veo que si tengo el poder de la seta azul y cojo una flor, Calio se hace grande, pero sin disparar y sin cambiar a la paleta de la flor en cuestión. Lo arreglo.


Confirmación al salir de la partida.

Versiones 1.68, 1.69, 1.70, 1.71 y 1.72: (08-01-2012)
Arreglo la última cosa que me quedaba de las baldosas: cuando caía una, si caminabas encima de ella podías seguir andando por el aire e incluso saltar antes de que llegases al suelo. Ahora ya en cuanto dejas de pisar a la baldosa, directamente caes como si hubieras saltado.
Corrijo que aparezca la animación de "Icicle roto" al contacto de éste con un disparo de la flor de fuego.
Me doy cuenta de que si cojo una flor y cambio de pantalla, la primera flor que aparece en esta nueva fase no sube de la "caja". Veo que es porque no reinicio la cuenta de comienzo de la animación de subir cuando salió la anterior. La reinicio y ya suben todas las flores.
También con esta nueva forma de hacer aparecer los objetos, observo que una flor puede aparecerme un poco más arriba de donde debe salir. Hago una mezcla entre la forma anterior y esta nueva y la flor sale donde tiene que salir y hace la animación de salir de la caja perfectamente, o eso creo.
Actualizo que los Coquitos (Buzzy Beetle), Pinchos (Spiny), Goombas, Flurrys y las Setas caigan por un precipicio de un solo trozo, que por alguna actualización anterior, no caían.
Veo que algunos pingüinos (Cooligan) no caen por los precipicios de dos trozos y sin embargo otros sí... Creo que ya caen todos, aunque alguno siempre se puede escapar, dependiendo de la velocidad que lleve.
Hago que un Cooligan muerto por la estrella y por dos disparos de flor de fuego, caiga muerto boca abajo, que antes tenía puesta la animación de "chafado".
Configuro que no se pueda congelar a Dry Bones cuando está desparramado en el suelo. El disparo ahora se cancela.
Le añado a Calio la habilidad Ground Pound (Salto Bomba en español):
Pulsando Flecha Abajo y Salto (X) mientras estás en el aire, Calio dará una vuelta de campana sobre sí mismo, y caerá de culo machacando los enemigos, bloques de hielo y ladrillos oportunos. Para ver qué enemigos conseguirás machacar, puedes acudir a la página especial de los enemigos en el FAQ. En general, son todos los que puedes pisar, pero por ejemplo, Buzzy Beetle morirá directamente y su caparazón no saldrá lanzado.
Calio destrozará todos los bloques de hielo, y a la totalidad de los enemigos que estos alberguen en su interior: Buzzy Beetle, Goomba, Flurry, Piranha Plant, Ptooie, Nipper Plant, Fang, Troopa, Cooligan, Trouter y Boo.
En cuanto a los ladrillos: los rompibles serán partidos en trozos si eres grande, mientras que si eres pequeño, solo los moverás; los normales harán que pare el efecto del Ground Pound; el monedero sacará una moneda y Calio rebotará si sigues manteniendo pulsada la combinación de teclas hasta lograr todas las monedas; el resto de los premiados, extraerán su objeto (moneda, seta, bloque P...) por debajo; y los ocultos jamás aparecerán, solo son accesibles con salto normal.
Además de hacer todo este funcionamiento, que incluye estados nuevos de enemigos, colisiones, etc., dibujo sus imágenes, tanto para Calio grande como pequeño y le pongo un sonido cuando comienza a dar la vuelta.
Observo que si Calio está encima de baldosa que cae, y salto y activo el Ground Pound dejando las teclas apretadas, Calio cae más deprisa que la baldosa. Era porque con el Ground Pound duplicaba la velocidad de bajada y cuando dejaba de estar activo no volvía a la velocidad normal.
Le pongo gravedad a las plantas para que al sacarlas por encima de la caja, estas caigan al suelo y no se queden ahí colgando.


Funcionamiento del Ground Pound.

Versiones 1.64, 1.65, 1.66 y 1.67: (30-12-2011)
Otro enemigo más: Fang:
creo y añado sus sprites en estilo 8 bits, los dibujo en pantalla, hago que caiga cuando Calio esté cerca, que bata las alas, muere si le pisas y cae muerto con los ojos cerrados, va dejando una estela de puntos a medida que avanza (pero no dañan ni nada) como en su versión original, hago que reproduzca un sonido cuando se mueve en círculo, que lo mate un caparazón lanzado y Calio al tener la estrella, programo que sea él quien dañe a Calio, al contacto con un disparo de fuego lo vences, con el de hielo lo encierras en un bloque congelado cuyo tamaño depende del sprite con el que ha contactado, hago que pueda ir para un lado u otro, que cuando le apetezca cambie de lado (rara vez), que si se acerca al final de la fase también se gire, que muera al salirse de los márgenes, mejoro el movimiento inicial de "volar en círculo" (ahora es más circular xD), y corrijo que no suene el sonido del círculo al empezar una fase donde haya Fangs, que sonaba misteriosamente al comenzarla. Aclaro que este enemigo atraviesa todo tipo de bloques, es decir, no se choca ni con paredes ni suelos ni bloques helados ni nada de nada.
Al resbalar Calio, compruebo que no se choque con ningún bloque de hielo que esté en el aire, que vi que no lo comprobaba y los atravesaba xD
Calio se queda parado a veces justo cuando comienza el puente por debajo, es decir, no sube del todo sino que se queda en medio parado. Lo arreglo y ya siempre se posiciona encima.
Quito los sprites de los Goombas cuando caen boca abajo y cambiando de lado, y los dibujo directamente con las funciones _v_flip y _h_flip, para ahorrar BITMAPs.
Hago que se pueda ir al menú de opciones (configurar volumen de música, velocidad del juego, etc) desde el menú de selección de fase, que tal como estaba solo podías cambiarlas al empezar el juego. Ahora permito cambiar todas en cualquier momento, menos el checkpoint, que autorizo modificarlo solo mientras esté el mundo 1 activo. Si te pasas la 1-6, ya no podrás volver a cambiar la opción de los puntos de control.
Creo la baldosa que cae después de pisarla unos segundos seguidos:
añado sus sprites, los dibujo en pantalla, hago que se mantenga quieta si Calio no la pisa, si se sube encima avisa que se va a caer cambiando de color, pero si Calio salta el tiempo vuelve a 0 y contará de nuevo cuando vuelva a caer encima y si pasa el tiempo preciso cae, Calio se mantiene encima quieto tanto si la baldosa está parada como si está cayéndose, mientras la baldosa cae arrastrando a Calio, éste puede seguir moviéndose (caminando, saltar), si Calio cae con baldosa se precipita hasta que impacte nuestro personaje con otro tipo de suelo o hasta morir si no hay donde pisar, veo que me salen algunas baldosas donde no están puestas, así que evito que eso ocurra, y me sucede lo mismo que con el puente, que podía pisar Calio en medio de la baldosa en vez de arriba, donde tiene que ser, así pues lo soluciono de la misma manera.
Además, veo que si piso dos baldosas juntas al mismo tiempo, Calio cae más deprisa que ellas. Al intentar arreglarlo, observo que si una baldosa está cayendo y tú te posicionas en otra más a la izquierda, la primera se para y no sigue cayendo hasta que comience a caer otra, o se queda en el sitio con el color de caer, etc. Corrijo satisfactoriamente ambas cosas.
También (vaya quebradero de cabeza que me han dado las dichosas baldosas), veo que hay veces que mientras cae una baldosa, Calio no se queda pegado a ella, sino que hace como si cayera del salto y descendieran cada una por su lado. Creo que lo evito, pero en ocasiones observo que ahora Calio pega un pequeño salto cuando la baldosa desciende, y si estás mirando hacia la izquierda, primero cae hasta la altura de la mitad de la baldosa, luego sube, pega el saltito, y comienza a caer. Maldigo a todo lo que se me pone por medio. Cuando por fin consigo arreglarlo, ya sin saber ni cómo lo he hecho, me doy cuenta de que sigue ocurriendo lo mismo... ¡pero solo cuando un enemigo está congelado! Después de darle vueltas y más vueltas por fin veo el error: tenía puesto que cuando haya un bloque de hielo en pantalla, si la gravedad es 0, se active. Quito esa condición y ya no lloro más funciona de todas las maneras posibles.
Me queda una sola cosa por mejorar de las baldosas, pero ahora mismo quiero olvidarme de ellas cuanto antes xD


Vemos a Fang y a la baldosa que se cae :)

Versiones 1.60, 1.61, 1.62 y 1.63: (18-12-2011)
Hago que también las setas colisionen con bloques de hielo.
Programo que los objetos suban lentamente de detrás de las cajas al golpearlas (setas, flores y estrellas concretamente).
Por este motivo, estos objetos comentados estaban dibujados por detrás de los gráficos de fondo, pasando incluso por detrás de árboles, montañas... los vuelvo a poner por delante, y más por delante todavía dibujo el bloque usado.
Creo 3 enemigos nuevos:
- Icicle (pico helado que cae):
Creo sus sprites en 8 bits a mi estilo (el enemigo aparece ya en el Mario Bros en el que salen tortugas y mariposas de las tuberías, pero su estilo no me convencía), hago que caiga al paso de Calio, que se rompa al contactar con el suelo, que reproduzca un sonido al hacerlo, que libere a un enemigo encerrado en un bloque si contacta con él, configuro que se destruya al contacto con el disparo de fuego y que el de hielo no le afecte, y que la estrella le mate al igual que al contacto con un caparazón lanzado.
- Flurry (bola blanca que camina):
Configuro sus sprites, pergeño que se mueva persiguiendo a Calio, resbalando cuando tenga que cambiar de lado, configuro sus movimientos al contacto con los bloques de hielo, puede ser chafado, muere con un disparo de fuego, es congelado al contacto con un disparo de hielo, con la estrella también es destruido e incluso al impactar con él un caparazón lanzado.
- Cooligan (Pingüino con gafas de sol):
Dibujo sus sprites en 8 bits (que el original es de Wii; cambio los gráficos hasta 2 veces más -incluyendo colisiones- porque no me gustaba el resultado, y a la tercera parece que sí fue la vencida), hago el caminar principal, que se choque con los bloques de hielo y permanezca encima de él si cae, creándole gravedad y todas las colisiones en general, hago que se frene para que cambie de lado al chocar, morirá siempre a los dos toques tanto por disparo de fuego como al pisarle encima, cuando recibe el primer toque le saltan las gafas de sol y caminará más despacio y moviendo las aletas más rápido, con el disparo de hielo será encerrado en un bloque congelado, con la estrella con un solo toque muere (aquí no hacen falta dos), y se destruye también de un solo impacto al contactar un caparazón lanzado con él. También, para hacerlo más bonito, hago que cuando camine con las gafas de sol puestas, se frene y tenga que apoyar las aletas en el suelo para darse impulso de nuevo. Cuando no tiene las gafas esto lo hará cada 3 veces que bata sus aletas.
Corrijo que el fantasma muera con un caparazón de coquito lanzado, que estaba mal puesto.
Escondo el ratón durante el juego. Es decir, solo será visible en los menús.


Aquí vemos los 3 enemigos nuevos.

Versiones 1.56, 1.57, 1.58 y 1.59: (09-12-2011)
Añado un huevo de pascua en el juego. No diré cuál es, solo facilitaré que está escondido en las fortalezas.
Al coger una seta en el aire veo que puede caer en medio del bloque de la seta. He hecho que al agrandarse suba unos píxeles más arriba con el fin de evitarlo.
Me ha gustado lo del huevo de pascua y decido que en vez de eso sea un "logro desbloqueable" de esos que están tan de moda. Sigue en el mismo sitio y oirás un efecto de sonido que te hará saber si lo has desbloqueado.
Habilito hasta 12 logros desbloqueables de los que solo activo el que he comentado como huevo de pascua y otro más. Poco a poco iré añadiéndolos. No diré cuales son, pero ya aviso de que no sera "por matar a tu primer enemigo", "por matar a 10 enemigos", "por matar a 50 enemigos", etc.
Agrego una subopción de ver los logros en el apartado de selección de fase. De momento al salvar un juego no se guardan los logros, pero lo haré, no hay problema. Eso sí, si empiezas un juego nuevo, obviamente estarán todos bloqueados, y si sales al menú principal sin salvar, igual.
Hago un nuevo logro (ya van 3) y lo reinicializo al morir, pasar de fase, y abandonar y volver al menú principal, ya que éste va contando algo y si no se logra en una sola fase, es necesario que vuelva a empezar a contar de 0.
Aclaro que una vez logrado un logro se desbloquea para todo el juego, aunque repitas lo mismo que hiciste para desbloquearlo.
Me doy cuenta (después de más de 150 versiones) que al coger monedas de un bloque monedero, éste te otorga más monedas de las que en realidad hay. Lo corrijo.
Programo que si están todos los bloques de hielo ocupados, se rompa el que más tiempo lleve, liberando al enemigo que contenga. No creo que llegue a ese extremo, pero mejor prevenir que lamentar.
Un logro más. Ya son 4 los disponibles.
Hago que los enemigos que así lo requieran, tengan colisiones con el puente por encima y por debajo (ejemplo, las tortugas saltarinas no se meten dentro de un puente atravesándolo por debajo).
Realizo que se choque la estrella al contactar con un bloque de hielo, por cualquiera de los 4 lados.
Les añado un dibujito a los logros desbloqueados, además de indicar una breve descripción de cómo lo has conseguido (visibles solo al desbloquearlos, claro).
Trato en bucle las flores y las setas tal como tenía las estrellas. Así me ahorro líneas de código y colisiones, y permito que puedan aparecer varias flores y setas de idéntico tipo en el mismo trozo de pantalla.
Creo el Bloque P en forma de estructura para que no me anden pululando por ahí variables que luego no sé para que uso xD
Pongo flores en el ladrillo de objetos aleatorios. Antes no las puse porque no me cuadraban bien las posiciones donde salían las flores y podían estar casi fuera de la caja. Ahora están ajustadas correctamente.
Añado funcionalidad de ratón al menú principal. Al pasar el cursor por cualquiera de las 6 opciones, ésta se ilumina. El resto de menús todavía no lo tiene, con calma xD

A la izquierda, a parte de la lista de logros, podéis ver el ratón, que precisamente en este menú todavía no sirve xD
Tapo la descripción del logro NABAB, aunque con el dibujito y el significado podéis intuir algo :P

Versiones 1.51, 1.52, 1.53, 1.54 y 1.55: (04-12-2011)
Hago que los enemigos Goomba, Pinchos, Coquito, Pokey, Planta Andante, Tortugas y Dry Bones, se choquen contra los bloques de hielo.
Veo que al crear el ladrillo oculto que da flor de hielo, dicho ladrillo tiene colisiones, y si es oculto, no puede tenerlas! xD Así pues se las quito.
Codifico que los adversarios Trouter, Barra de Fuego, Thwomp, Rana Blanca, Planta Carnívora, Bola de Fuego, Banderilla, Koopa y Banderilla de Koopa, rompan el bloque de hielo con el que colisionan al instante, liberando al enemigo de su interior.
Pongo por esto de arriba que cuando se rompa el bloque, haya gravedad, que antes Calio no caía si estaba subido en uno y lo rompían antes de pasar el tiempo de congelación.
Configuro que Pokey colisione con bloques de hielo y todo tipo de ladrillos, en cualquiera de los trozos de su cuerpo, que antes solo era cabeza y "pies".
Hago desaparecer a los Pokeys que ya no estén en pantalla, pues antes continuaban su actividad aunque estuvieran al otro extremo de la fase.
Le he puesto colisiones a la planta andante con las monedas congeladas.
Toco donde no debo y Dry Bones aparece unos píxeles por encima del suelo y las Tortugas Saltarinas no saltan sino que van rectas en horizontal. Corrijo ambas cosas.
Al haber sacado la parte de dibujar a los enemigos a otro sitio, observo que Dry Bones ahora no se mueve al levantarse cuando ha sido pisado. Lo arreglo y ya vuelve a moverse avisando de que se levantará en seguida.
Hago que las Tortugas voladoras verticales se giren cuando Calio esté detrás, que antes siempre miraban al mismo sitio. Evito que se gire cuando esté congelada.
Visualizo que sale un caparazón azul a la izquierda de la pantalla si un Pokey esta cerca del comienzo de la fase. Descubro que ha sido por cambiar la estructura de este enemigo, que la puse SHORT cuando era INT para que ocupase internamente la mitad, pero la he vuelto a dejar otra vez INT y el caparazón ha desaparecido.
Por el mismo motivo que antes me sale una cabeza de Pokey cuando una Tortuga vertical se gire. Al volverlo a dejar como INT tampoco sale.
Veo que se reproduce el sonido de banderilla continuamente si vas hacia atrás justo después de sonar. Lo evito.
El juego se estropea al darle a la S de salir en la pantalla de selección de fase primero y luego al salir del juego después. No se qué he hecho pero ya no ocurren ambas cosas xD
La seta roja da flor de fuego por algo que he cambiado. Lo soluciono.
Le hago gravedad a la Rana Blanca, que en la fase 3-1 creo que es, hay una rana subida en bloques rompibles, y si los rompías, no caía. Ahora ya sí cae hasta encontrar un nuevo suelo en el que apoyarse.
Me doy cuenta de que si existe algún bloque de hielo activo, las arenas movedizas no funcionan y Calio se cae por el precipicio. Después de mucho indagar los hago compatibles y ya se mantiene en las arenas haya bloques de hielo o no.
Permito caminar un poco en las arenas movedizas, que hasta ahora solo podias saltar. Además si saltas, avanzas menos que antes tanto si pulsas Z como si no. Digamos que si antes avanzabas 8 píxeles, ahora solo 6. No es mucha diferencia.
Como consecuencia de lo último, redibujo por encima de Calio las paredes contiguas a las arenas movedizas, que por la derecha nuestro personaje sacaba una pierna a pasear entre las arenas y la pared.
Creo una función a la que llamo en cada mundo y fortaleza para reutilizar varios sprites y cambiarles las dimensiones, porque cuantos menos use, menos recursos consumirá el juego, y como no paro de añadirle cosas... xD.
Le pongo colisión a la estrella con el puente por su parte superior, que si no se la ponía, subía contínuamente hasta "dejar de impactar con puente".
Versiones 1.46, 1.47, 1.48, 1.49 y 1.50: (30-11-2011)
Creo la animación del bloque de hielo rompiéndose. Caen unos trocitos del mismo durante un tiempo.
Hago que si el bloque de hielo está lo suficientemente alejado de Calio, se destruya, liberando al enemigo, que como está lejos, también queda inactivo.
Configuro que el enemigo de pinchos rompa el bloque de hielo nada más impactar el disparo y congelarle.
Congelo al coquito y veo que me fallan las colisiones por arriba con Calio grande mientras que en pequeño va bien. Es curioso, pues es lo mismo que con el Goomba y aquí va mal. Modifico un parámetro y ya funciona estupendamente.
Dibujo en función a parte a todos enemigos. Así me evito el tener que redibujarlos cuando Calio cambie de estado o cuando el enemigo esté congelado.
Con motivo de esto último, aparecen misteriosamente plantas carnívoras mezcladas en las animaciones de las tortugas, al igual que banderillas de fuego en las fortalezas cuando hay un Goomba cerca, o el disparo hace que el juego se bloquee... Después de darle un montón de vueltas veo que es por no usar todos los enemigos que tengo declarados, asi que hago un pequeño apaño y de momento va.
En la misma zona donde dibujo los enemigos, pinto también las tuberías por delante de estos, del mismo modo que los bloques de hielo y los objetos (setas, flores y demás).
Veo que si congelo el caparazón de un coquito cuando viene lanzado, se crea el bloque de hielo pero él sigue adelante. Lo corrijo.
Arreglo un fallo al coger una flor siendo pequeño, que no se dónde ni cuándo habría tocado pero cogía el poder de la flor directamente en vez de hacerse grande.
Congelo a los enemigos Rana Blanca y Trouter, codificándoles todo aquello que sea necesario.
Quito los márgenes del bloque de hielo y lo dibujo después de crearlo con 4 líneas internas para que solo tenga un píxel el borde aún redimensionado, pues le cambio el tamaño al bloque cuanto más grande sea el enemigo para que se ajuste a él.
Congelo al fantasma, a Thwomp, a las banderillas de fase y las de Koopa, a bola de fuego y a la planta andante. Todos los enemigos de fuego rompen el bloque nada más crearse. El resto de enemigos permanecen helados un determinado tiempo.
Koopa también es congelado, pero directamente el bloque se rompe, aunque le daña. Necesitas encerrarlo 8 veces para matarlo (en lugar de 4 como con la flor de fuego).
Al igual que con los enemigos de fuego, todo aquel que tenga pinchos destruye el bloque enseguida. Es el caso de Thwomp que congelé antes, y de Pokey.
Ajusto los trocitos de hielo roto para que salgan más dispersos entre sí.
Congelo a la planta carnívora de tubería y de arenas movedizas.
Las barras de fuego también las congelo, pero solo el trozo impactado. Al contacto se rompe el hielo, ya que es de fuego.
Y por último, congelo todo tipo de tortugas: andantes, voladoras, saltarinas, dentro de caparazón y Dry Bones. Con lo que termino de congelar todos los enemigos hasta que añada nuevos.


Versiones 1.42, 1.43, 1.44 y 1.45: (24-11-2011)
Hago que cuanto más presiones la tecla del salto, más te eleves. Antes con pulsarla un poco ya recorrías toda la trayectoria del salto. Ahora podrás saltar lo que quieras, hasta el límite que había antes.
Detengo la música de Calio muerto si se sale al menú principal pulsando ESC. Para que no se mezclen las dos músicas más que nada.
Veo que no dañan los goombas, ni las tortugas, ni los Dry Bones, ni los pinchitos, ni los coquitos, a Calio cuando es pequeño. Lo corrijo y ya le laceran todos.
Observo que sale el mensaje de Tira pal mundo N, pardal al morir en cualquier fortaleza si el checkpoint está inactivo. Lo solvento.
Congelo monedas al contacto con el disparo de la planta de hielo. Les pongo sus colisiones, su sonido... y configuro que el disparo de fuego las descongele.
Modifico las colisiones de los bloques de hielo por los 4 lados, para que queden más encuadradas.
Descongelo los bloques de hielo que aprisionan a los enemigos congelados, al impactar en ellos el disparo de la flor de fuego.
Hago que cuando el disparo congelado choque con un bloque de hielo, éste reinicie la cuenta del tiempo de congelación que dura dicho bloque.
Si hay dos bloques de enemigos congelados casi pegados, uno abajo y otro a la derecha, Calio al pisar el de debajo, no corre. Si salta, puede que lo haga recto en vertical o que se desplace hacia el lado contrario al que mira. Lo arreglo después de llorar un poco.
Congelo también las monedas que antes eran ladrillos (es decir, al estar activo el bloque P). Si alguna moneda sigue congelada al acabar el efecto del bloque P, éstas continuarán heladas.
Vuelvo a corregir las colisiones por la parte inferior de los bloques de hielo, que me han desaparecido misteriosamente (vamos, por tocar donde no debía xD).
Del mismo modo, veo que Calio ya no se queda quieto en las plataformas naranjas, si no que se cae. Después de investigar un rato consigo solucionarlo.
Observo que si hay un bloque congelado en una fase y vas a otra (has pasado de nivel o vas a través de una tubería), el bloque helado sigue en la misma posición pero en esa nueva fase. Ahora directamente reinicio todos los bloques al cambiar de fase.
Programo que el caparazón lanzado de una tortuga rompa el bloque de hielo que contiene a un enemigo en su interior, y si procede, lo mata. Hago lo mismo para el caparazón del coquito.


Versiones 1.39, 1.40 y 1.41: (15-11-2011)
Trasteando veo que no se reproduce el sonido al coger la flor de hielo o la de fuego. Lo arreglo.
Hago que el bloque helado "parpadee" cuando quede poco tiempo para que el enemigo vuelva a moverse.
Pongo sonido tanto al congelar a un enemigo como a cuando éste rompa el bloque.
Creo el salto contra la pared, con su correspondiente sonido, colisiones, que tenga una duración diferente si ha cogido la seta azul o no, etc. Para que funcione debes estar en pleno salto e impactar con un ladrillo o tubería y presionar la flecha del lado contrario para saltar. Esto es que si tienes un ladrillo o tubería a tu izquierda, y quieres saltar hacia la derecha, debes presionar la tecla izquierda (además de la del salto, claro), que es donde está el muro en el que impulsarse. Calio avanzará un poco hacia el otro lado a pesar de tener pulsada la tecla para la dirección opuesta. Si quieres alternar varios saltos seguidos, recuerda levantar totalmente el dedo de la tecla.
Veo que cuando queda poco tiempo en el Mundo 2 y se pone el cielo rojo, los detallitos de las estrellas tienen fondo negro. Lo soluciono.
Observo que el juego se estropea al querer cambiar de resolución muchas veces y muy rápido desde el menú de opciones. Lo solvento.
Me doy cuenta de que la música del menú principal vuelve a ir deprisa si en la fase última en la que has jugado, iba deprisa por quedar poco tiempo (en el de selección de fase va bien). Lo corrijo.
Contemplo que el retardo configurado en el submenú de opciones se machaca con el puesto en la función principal. Por ello, guardo externamente todos los datos de dicho menú (en un archivo en el disco duro). Configuro también las teclas INTRO para aceptar los cambios y guardar y ESC para cancelar las últimas modificaciones sin salvar, pidiendo confirmación. Si se selecciona que no, vuelvo al estado original.
Creo internamente la estructura Calio para ir ordenando poco a poco las variables sueltas que he ido creando sin control. De momento ya he quitado 4.
Reviso las colisiones con los bloques ocultos cuando aparecen, que veo que he tocado algo y se puede quedar en medio de un ladrillo oculto justo cuando sale. Del mismo modo altero la duración del salto al contacto con las monedas, que mientras había colisión con moneda no incrementaba el valor y podías realizar saltos estratosféricos.
Modifico las animaciones de "coger flor" de fuego o de hielo, ya seas grande, o tengas la misma flor o diferente, alternando adecuadamente las paletas entre sí para notificar el cambio; también la animación de "perder flor", y de "coger seta" roja o azul, además de quitar variables que no usaba para ello. También, evito el parpadeo que en ocasiones se veía en la zona de vidas, monedas, etc durante estas transformaciones.
Veo que la música va rápida en la misma fase si te mata el tiempo y con checkpoint activo (si no está activo, la música va a la velocidad correcta). Lo corrijo pues.
Versiones 1.36, 1.37 y 1.38: (06-11-2011)
Creo un estado de "congelado" para los goombas para algo que explico más adelante.
Le pongo colisiones a este goomba cuando está helado; por arriba, abajo, izquierda y derecha.
Distingo ahora mismo dos tipos de disparo: de fuego (como hasta ahora, al coger la flor naranja), y de hielo, por lo que explicaré dentro de nada.
Creo colisiones genéricas con un bloque helado, y quito las que le había puesto al goomba, que lo usé como conejillo de indias.
Aquí viene lo que decía: creo la planta de hielo. Se distingue de la de fuego porque ésta es de color azul cian. Permite también dos disparos en pantalla. Si impactan con un enemigo, lo encierran en un bloque de hielo durante varios segundos (de momento solo está configurado el goomba, pero planeo que cuanto más grande sea el enemigo, menos tiempo de congelación tendrá, o los enemigos con picos no se podran helar, etc). El propio bloque parpadeará cuando quede poco tiempo para deshacerse.
Los disparos de hielo avanzan en vertical más que los de fuego.
Eso de las colisiones genéricas que comenté anteriormente, significa que me crea automáticamente un bloque de la medida del enemigo al que impacta el disparo helado, y dicho bloque aparece con todas sus colisiones, sea de la medida que sea. Lo intenté hacer medio transparente con toques azules, pero no he sido capaz, siempre me lo pone totalmente sólido. Ya volveré a intentarlo si me aburro.
Creo las imágenes de los disparos helados, así como su impacto contra otros bloques, codificando todo con respecto a los disparos.
Me quito sprites de Calio con el traje de flor de fuego y lo que hago es crear una paleta con los colores de la flor. Del mismo modo creo otra con los colores de la flor de hielo (traje verde y blanco, para variar un poquito).
Configuro que al recibir daño, Calio con cualquier flor cambie sus colores por los de la paleta normal, que sin esta modificación, nuestro personaje seguía con los colores de las flores siendo pequeño o grande sin tener el poder de la planta.
Creo un puente que solo tiene colisiones por arriba. Es decir, puedes traspasarlo saltando pero no puedes descenderlo. Tampoco patina el puente.


El goomba congelado es azul. No es efecto de congelación

Versiones 1.33, 1.34 y 1.35: (03-11-2011)
Actualizo la estrella: ahora admito 3 estrellas en pantalla rebotando al mismo tiempo. Antes solo era una y si ella iba caminando y tú golpeabas otro ladrillo que contuviese otra estrella, ésta que saltaba desaparecía. Ahora permanecen las dos o las tres en pantalla hasta cogerlas o que se salgan por los márgenes.
Si coges una y el resto sigue botando, al coger la siguiente, el tiempo de invencibilidad vuelve a empezar, pero la cuenta de enemigos no, ya que no ha pasado su efecto todavía. Planeo hacerlo también con el resto de setas y flor para que unas no se cancelen con otras.
Veo que el juego se estropea al querer salir después de haber actualizado la estrella y que también se destroza al tocar bandera de fin de fase. Descubro que es porque en ocasiones se sale del límite de estrellas marcado. Lo amojono y el juego ya no se echa a perder de ninguna de las dos maneras.
Hago que Calio sume cada vez más puntos mientras chafe enemigos sin que toque el suelo.
Hago que los caparazones de las tortugas y los coquitos incrementen la puntuación a medida que vayan matando enemigos, pudiendo también conseguir vidas.
Incremento el menú principal con 2 opciones más: una es la propia opción de OPCIONES, donde se podrá elegir el volumen, la resolución, la velocidad... y otra de EXTRAS, por poner algo y no dejar un hueco xD. Esta última no es accesible todavía porque no sé qué poner :P
Del submenú de opciones, hago las subopciones de cambiar la velocidad y la resolución.
Antes en el menú principal, al elegir la opción de ver el HighScore, se llamaba contínuamente al menú principal después de verlo. Ahora evito eso y vuelve al menú tal como lo había dejado (verás que los enemigos siguen en las mismas posiciones donde los dejaste).
Pongo un fondo especial para el submenú de opciones. También añado una música de fondo y sonidos de opción.
Veo que la música de selección de fase y la del menú principal, pueden ir rápidas si en la fase anterior han ido rápidas porque quedaba poco tiempo. Lo arreglo y ya se oye normal.
Hago la opción de activar o desactivar el checkpoint. Si se elige SI, jugarás como hasta ahora: si te matan, sigues en la misma fase. Si habías pasado la mitad del nivel (el icono de checkpoint se volvía naranja), continuabas por allí en vez de empezar desde cero. Pues bien, si ahora eliges NO, al morir regresarás al menú de selección de fase, pudiendo elegir otro nivel distinto o la misma fase si se quiere. Esto es ideal para por si has perdido muchas vidas en una fase, irte a otra a recuperarlas.
Añado también las opciones de cambiar el volumen de los efectos de sonido y de la música.


Evidentemente, quitaré a todos los Dry Bones en estas circunstancias xD

Versiones 1.30, 1.31 y 1.32: (23-10-2011)
Observo con ahínco y frenesí que al patinar y caer por un hueco de una sola baldosa, Calio sale repelido hacia atrás, encajándose en la mitad del ladrillo anterior. Hago que si lo tiene justo detrás, no rebote, y caiga directamente por el hueco.
Convierto las dos fortalezas que me quedaban. Les añado columnas y velas que solo las había puesto en la primera fortaleza.
Dibujo la lava por detrás de las tuberías en todas las fortalezas, en los casos en que la lava apareciera como cortada por la presencia de la tubería en medio.
Adapto todas las fases anteriores al nuevo formato.
Actualizo las letras nuevas en el resto de sitios donde hacían falta.
Veo que ciertas plantas carnívoras andantes aceleran y no paran, sin respetar colisiones ni márgenes xD Lo arreglo y ya se mueven como corresponde.
Internamente cambio el símbolo del fondo por uno más claro, para ver mejor las fases a la hora de su creación.
Arreglo palmeras mal dibujadas misteriosamente y corrijo dos bordes del mundo 3 que no hacían esquina.
Me doy cuenta de que una bola de fuego con la estrella da varios puntos seguidos, como si no "muriera". Ahora sí, al primer impacto la bola ya no tiene colisiones donde golpear.
Descubro que si con la estrella matas la cantidad necesaria de enemigos para obtener una vida, suena el sonido de vida conseguida y sale 1UP en pantalla, pero la vida no se suma al contador. Lo soluciono ipsofacto, pues es una metedura de pata gorda xD
Ya que estoy, hago que mientras tengas el poder de la estrella, matarás a todas las setas negras. Antes solo no te hacían nada, pero la seta seguía ahí paseándose. Ahora cuenta como un enemigo más y da los correspondientes puntos.
Codifico que si pisas a un Goomba, a una tortuga, Dry Bones, coquito o caparazón, y presionas el salto, Calio salta normal, como si saltara desde el suelo. Si no lo presionas salta pero menos, como estaba hasta ahora. Tienes que ser muy preciso a la hora de pulsarlo. Distinguirás si has pulsado bien o no, a parte de porque saltarás más o menos altura, si oyes o no el sonido del salto al pisar a un enemigo.
Versiones 1.27, 1.28 y 1.29: (09-10-2011)
Codifico que el personaje no resbale para fuera del margen izquierdo (al principio de la fase, que no se meta para donde no se ve).
Actualizo las primeras fases con un programa externo que me he creado. Las colisiones van bien, pero están cambiados algunos gráficos del fondo. Lo miro con más calma y pongo cada uno donde tiene que ir.
Al hacer este apaño anterior, veo que tengo que configurar de nuevo algunas colisiones existentes: las quito al romper un ladrillo rompible, se las quito también a los ladrillos ocultos, se las pongo a los ladrillos ocultos al "cambiar de estado", es decir, al golpear en él es cuando ya deben estar activas las colisiones, ya que se habrá descubierto una moneda/seta/vida oculta.
Corrijo del todo los gráficos de las fases del mundo 1 (menos la fortaleza), habiendo actualizado todas las con el programa externo que comenté con anterioridad, incluidas las fases ocultas.
Actualizo el bloque P, que habiendo tenido que cambiar los símbolos a la hora de dibujar, al pisarlo no intercambiaba ladrillos con monedas. Ahora ya sí vuelve a funcionar.
Veo que el disparo destruye los ladrillos normales en el mundo 1. Lo limito solo al mundo 4, que es el de hielo.
La fase oculta de la 1-2 ha perdido las colisiones al hacer el cambio, ya que este nivel es especial al estar dibujado todo con ladrillos. Se las vuelvo a poner solo en esta fase.
Dibujo las tuberías por delante de Calio, que con el cambio no lo había transformado y se veían claramente que tuberías tenían plantas y cuáles son.
Observo que Calio se mueve hacia la derecha más de lo que debe en las fases ocultas, saliéndose del margen. A la hora de hacer el resbalón, se lo permití. Mal por mí. Ya está solventado.
Me doy cuenta de que he tocado donde no debía y ahora Calio no patina hacia la derecha. Investigo y doy con el problema. No cumplía una condición que había puesto. La modifico y ya resbala bien.
Cambio con el programita externo la fortaleza del mundo 1. Los gráficos aparecen correctamente.
Animo la vela y el hacha de nuevo al haber cambiado los símbolos a la hora de dibujar.
También hago que el puente se quite, que si lo dejaba como estaba, al no haber actualizado el símbolo correspondiente no desaparecía.


Muestro las columnas y velas añadidas a las fortalezas

Versiones 1.25 y 1.26: (23-09-2011)
En vista de que me estaba quedando sin símbolos para definir los diversos sprites del mundo del hielo, divido en 2 arrays las cosas a dibujar, como en el Megaman CalEdit: en uno el piso y en otro el fondo. Creo otro tercer array para quitarme colisiones y líneas de código a lo bestia (unas 1800 así por las buenas) y hacerlo mucho más fácil.
Hago que el disparo de la flor descongele las monedas y los ladrillos. Arreglo que coja bien las monedas, que al principio pasaba por encima de ellas sin atraparlas. También las dibuja bien que hacía una animación un poco extraña.
Quito nieve de una fase a otra, ya que al empezar una de otro mundo distinto al 4, nieva durante un poco con los sprites que usa ahora dicho mundo (nubes, arboles... y como que no es plan xD).
Arreglo colisiones de los disparos con baldosas de nieve, con monedas, con fondo y con precipicios, que me hacía cosas raras de vez en cuando. Ahora rebota e impacta donde debe.
Configuro el resbalón para que patine más si corre y deslice menos si anda.
Veo que hay un hueco negro en el fondo de la fase 4-1. Después de investigar un rato largo, veo que le estaba ordenando que me dibujase un caracter que no uso, y al no encontrarlo, lo deja con el color de fondo, que es el negro. Ya está solucionado.
Añado los gráficos de cañones y nube sonriente. No me hace falta configurarles las colisiones por tener ese tercer array que comenté más arriba. Ya directamente aparecen solas :)
Veo que cuando Calio supera la mitad de la tubería, se cae por delante y no sigue por encima. Había quitado la colisión que le tenía al hacer estos cambios de arrays. Ya no cae por delante.
Versiones 1.22, 1.23 y 1.24: (08-09-2011)
Creo 5 resoluciones de juego: 320x260 (la original), 480x390, 640x520, 800x650 y 960x780 (ver imagen inferior).
Hago todos los ajustes necesarios para que funcione en:
- todas las fases, sea mundo 1, 2, 3, fortaleza o pasadizo
- pantalla de selección de fase
- principal (y de paso evito el parpadeo que en ocasiones daba)
- ver el HighSscore
- carga de juego salvado
- guardar juego
- poner nombre
Le pongo codificación ASCII al juego y ya aparecen caracteres extraños como la ñ o las letras acentuadas.
Añado más detalles en las fortalezas, para que no estén tan vacías: vela y columnas.
Coloco en su sitio los dibujos de vida, tiempo, fase, monedas... que según la resolución que sea, van más arriba o más abajo.
Empiezo a crear el mundo 4: el mundo de nieve, añadiendo sus sprites.
Arreglo los sprites, que se me habían traspapelado unos cuantos.
Hago que el efecto de las arenas movedizas solo influya en el mundo 3, que me infuía en el mundo 4 también con la nieve y no es plan xD
Codifico que durante las pantallas de este mundo pueda nevar más o menos.
Programo que el disparo de Mario Flor descogele las monedas y los ladrillos de hielo.
Hago que Mario resbale hacia un lado y hacia el otro cuando pise hielo o nieve. Resbala tanto andando normal como corriendo. Durante el salto se cancela si ibas resbalando y también se aborta si chocas con un ladrillo que no te deja pasar o al contactar con el margen izquierdo de la fase, evitando que se cuele por debajo de un ladrillo si esta agachado, ya que su cabezón se lo impide.
Veo que me hace poner nombre al pasarme la fase 3-9, y eso es porque al crear un mundo nuevo no he cambiado "el final". Ahora lo he configurado para que salga en la fase 4-7, que es la ultima de este mundo.


Resolución máxima: 960x780


Ver desarrollo hasta la v1.21 (tercera versión)
Ver desarrollo hasta la v0.70 (segunda versión)
Ver desarrollo hasta la v0.37 (primera versión)



www.000webhost.com