Snake V1-I: La serpiente

SnakeSnake, ese juego sencillo que todos teníamos en los clásicos Nokia ladrillo y que usábamos para matar el tiempo, es el elegido para comenzar con esto de los minijuegos.

Constará de varias partes porque, aunque es sencillo, se hace más largo de lo que parece, especialmente si hay que explicar cómo y porqué se van haciendo las cosas, y es exactamente eso lo que quiero hacer. Lo dejo como «el tutorial que me hubiera gustado a mí», explicando algunos detalles que no suelo ver explicados y que me habría gustado que alguien me hubiese dicho sobre el funcionamiento de alguna cosa.

Descripción

En Snake controlamos a un ente alargado que recuerda a una serpiente que se mueve constantemente y sin parar dentro de un plano cerrado: si choca con el borde del plano, perdemos el juego y hay que volver a empezar. Podemos mover a la serpiente en las cuatro direcciones básicas (arriba, abajo, izquierda, derecha), y nuevamente si la cabeza de la serpiente choca con su propio cuerpo, perdemos. Para ir ganando puntos aparecen aleatoriamente nuevas piezas que la serpiente irá «comiendo» para hacerse más larga. Cuanto más consigas, más puntos tienes, pero la serpiente será más larga y difícil de maniobrar.

En esta versión solamente haré lo que es el gameplay: nada de menús, opciones ni extras más allá de la serpiente y su funcionalidad básica.

Sigue leyendo

Los esenciales

snake-gameUna de las ideas principales de este blog es hablar de videojuegos, pero antes de meterse en cosas serias es necesario comprender lo básico. Hay tres o cuatro juegos que son sencillos en extremo y que sirven para aprender conceptos básicos y para empezar a comprender las tecnologías que se van a utilizar en otros más complejos. Snake, Tetris, Brickles, Pong, Space Invaders, Asteroids… todos esos juegos arcade old-school, que se programan en 15 minutos, pero que ha habido que pensarlos antes. Con ellos comenzaré, y en este post dejaré la lista de los que considero que deberían poderse llevar a cabo sin grandes complicaciones.

Mi versión la haré en principio con JavaScript, aprovechando algunas de las ventajas que ofrece HTML5 (lo principal: que me ahorro el compilar y se puede ver funcionando de inmediato), e igualmente de las ventajas de uno de sus frameworks esenciales: JQuery. Para estos juegos realmente JQuery no es necesario en absoluto, pero tiene implementada una abstracción para la lectura de entrada de teclado que resulta muy útil para ahorrarse un poco de código. Es decir, lo que en JavaScript «puro» sería:

if(evt.keyCode == 37 && d != “right”) d = “left”;

con JQuery se queda en:

if(key == "37" && d != "right") d = "left";

No es una diferencia muy importante, pero es por comodidad, trabajar con JQuery es muy fácil y una vez que uno se acostumbra hay ciertas cosas que son automáticas. Y siempre será más bonito escribir menos código.

En principio, estos son los juegos que voy a desentrañar para ir cogiendo práctica en lo que llamaré primera generaciónGen I:

  • Snake: V1 []
  • Breakout: V1
  • Pong
  • Tetris
  • Space Invaders
  • Arkanoid
  • Columns
  • Pacman

Todos son minijuegos muy simples, ya más adelante comenzaré con otros más elaborados, e implementaré alguno propio para describir técnicas más avanzadas.