Todos los proyectos

2023

Snake

Un puzzle por niveles con gravedad, escrito en Java sobre Swing.

No es el Snake de arcade: aquí la serpiente cae si se queda sin suelo y cada nivel es un problema que resolver hasta llegar a la manzana. Hecho sin motor de juego, con el bucle, el dibujado y la entrada de teclado a mano.

Snake — Un puzzle por niveles con gravedad, escrito en Java sobre Swing. (animación)

El problema

Era mi primer juego y quería entender qué hay debajo cuando no hay motor que lo resuelva por ti: cómo se mantiene un bucle a ritmo constante, cómo se dibuja un fotograma y, sobre todo, cómo representar un mundo con reglas para que esas reglas queden en unas pocas líneas en vez de en una maraña de condicionales.

Stack

  • Java 19
  • Swing
  • Graphics2D

Decisiones

  1. El mapa es la estructura de datos

    Un nivel es un array de cadenas donde cada carácter es una casilla: B bloque, - vacío, S cabeza, T cuerpo, A manzana. El estado del juego no vive en objetos aparte, vive en el mapa, y moverse es reescribir caracteres. El efecto secundario es que los niveles se dibujan como arte ASCII dentro del código y se leen de un vistazo.

  2. La gravedad, un recorrido del mapa

    Caer es «seguir bajando mientras la casilla de abajo esté vacía». Con el mundo representado así, la mecánica que da personalidad al juego cabe en un bucle de cinco líneas.

  3. Sin motor, a propósito

    JFrame y JPanel para la ventana, Graphics2D para pintar y un KeyListener para el teclado. Elegir la vía difícil era el objetivo: al no delegar en una librería, el bucle de juego y el refresco de pantalla dejaron de ser magia.

Roger Ramos Sabadell

Full Stack Developer

in/roger-ramos-sabadell — Se abre en una pestaña nueva

Diseñado y desarrollado con Angular 21