Programa final – Programación de computadores
Juego clásico “snake”
Julian Oliveros
Juan Mora
NRC: 11213
2023
The Snake:
El objetivo principal del proyecto es utilizar el lenguaje de programación Java para crear
un juego Snake clásico. El juego se basará en las reglas tradicionales del Snake, donde
una serpiente debe moverse por la pantalla, comer alimentos y crecer sin chocar con los
bordes del juego o su propio cuerpo, lo que por supuesto, lo hace interactivo
y entretenido.
Se abarcan los siguientes puntos:
Desarrollo Funcional:
∙ Implementar un mecanismo de control de la serpiente mediante el teclado. ∙
Permitir una jugabilidad continua, donde el desafío radica en aumentar la longitud
de la serpiente sin perder
∙ Generar elementos de comida de manera aleatoria en el tablero de juego. ∙
Controlar las colisiones de la serpiente con los bordes y su propio cuerpo,
terminando el juego en caso de colisión.
Entrega del Proyecto:
Para la entrega final, el proyecto será compilado y empaquetado en un CD que
contendrá los siguientes elementos:
Archivos del Proyecto:
Archivo .java: Se incluirán todos los archivos fuente del proyecto.
Documento Explicativo:
Se proporcionará un documento en formato Word que detalla cada uno de los
programas y archivos Java incluidos en el proyecto. (este word)
Grabación de Explicación:
Se entregará un video donde ambos explicaremos el proceso del desarrollo del juego. En el
video se destacarán los aspectos clave, desafíos enfrentados, decisiones de diseño y
funcionamiento del juego. Este video proporcionará una visión general del proyecto.
Explicación del programa
El código se divide en dos clases: Snake y RenderPanel. La clase Snake se encarga de la
lógica del juego, mientras que la clase RenderPanel se encarga de la parte gráfica.
La clase Snake implementa las interfaces ActionListener y KeyListener, que le permiten
reaccionar a los eventos del temporizador y del teclado, respectivamente.
La clase Snake declara e inicializa varias variables que almacenan el estado del juego,
como la ventana, el panel, el temporizador, la serpiente, el cerezo, la dirección, la
puntuación, el tiempo, etc.
La clase Snake también declara un array de colores y una variable global del color del
cerezo, que se usan para cambiar el color del cerezo y de la serpiente cada vez que la
serpiente come un cerezo.
La clase Snake tiene un constructor que se encarga de crear y configurar la ventana y el
panel del juego, y de iniciar el juego llamando al método startGame.
El método startGame se encarga de establecer los valores iniciales de las variables del
juego, como la posición de la serpiente y del cerezo, la longitud de la cola, la dirección, la
puntuación, el tiempo, etc. También inicia el temporizador del juego.
El método actionPerformed se ejecuta cada vez que el temporizador llama al objeto actual.
Este método se encarga de actualizar el estado del juego, como mover la serpiente,
comprobar si ha comido un cerezo, generar un nuevo cerezo con un color aleatorio,
comprobar si el juego ha terminado o está pausado, etc. También llama al método repaint
del panel para que se redibuje el juego.
El método noTailAt se encarga de comprobar si hay alguna parte de la cola de la serpiente
en una posición determinada, devolviendo true si no hay ninguna y false si hay alguna. Este
método se usa para evitar que la serpiente choque con su propia cola.
El método keyPressed se ejecuta cada vez que el usuario pulsa una tecla. Este método se
encarga de cambiar la dirección de la serpiente según la tecla pulsada, o de iniciar, reiniciar
o pausar el juego si se pulsa la tecla espacio.
Los métodos keyReleased y keyTyped se ejecutan cada vez que el usuario suelta o escribe
una tecla, respectivamente. Estos métodos no hacen nada, pero se deben implementar
porque la clase Snake implementa la interfaz KeyListener.
La clase RenderPanel hereda de la clase JPanel, que es un componente gráfico que se puede
añadir a una ventana. La clase RenderPanel se encarga de dibujar el juego en el panel.
La clase RenderPanel declara una constante que representa el color verde que se usa para el
fondo del panel.
El método paintComponent se ejecuta cada vez que se llama al método repaint del panel.
Este método se encarga de dibujar el juego en el panel, usando el objeto de tipo Graphics
que recibe como parámetro. Este método dibuja el fondo, la serpiente, el cerezo, y el texto
con la información del juego, usando los colores y las coordenadas adecuados. También
dibuja el texto de “Game Over” o “Paused” si el juego está terminado o pausado,
respectivamente.