PONG!

En el año de 1972, Atari, Inc. de la mano de Nolan Bushnell creó un videojuego de deportes basado en el tenis de mesa o ping pong. Este juego es reconocido mundial mente como uno de los más comerciales, se le considera el primer videojuego de la historia.
El juego consiste en un jugador que controla una raqueta moviéndola verticalmente en la pantalla, puede competir tanto contra un oponente controlado por computadora, como con otro jugador humano que controla una segunda raqueta en la parte opuesta.
El objetivo consiste en que uno de los jugadores consiga más puntos que el oponente al finalizar el juego. Estos puntos se obtienen cuando el jugador adversario falla al devolver la pelota.

Lo interesante de este juego es que no se utilizó microprocesador, para todo el proceso se utilizaron dispositivos discretos y lógica discreta.

Todo el proceso de estudio y prácticas del curso permiten la creación de proyectos interesantes, para esta nueva práctica se desea diseñar el juego de Pong en la matriz de LED usando sólo dos módulos de los cinco disponibles, es decir se va a trabajar 7 filas 10 columnas. Las columnas 1 y 10 son correspondientes a las raquetas que deben ser de 3 LED’s y solo tienen movimiento vertical (arriba y abajo) a través de dos pulsadores para cada jugador.
Los movimientos de la pelota del Pong solo será en diagonal y debe rebotar en los límites del tablero y cuando se encuentra con la raqueta. Se debe contar los puntos de cada jugador y gana el que primero llegue a 7 puntos.
Plus:
– Tamaño variable del tablero
– Velocidad de la pelota incremental
– Tamaño de la raqueta configurable


Lo primero que haremos será entender como funcionarán las raquetas del juego. Estas deberán moverse únicamente en vertical, tendrá un tamaño inicial de 3 LED’s; su movimiento será ocasionado por dos pulsadores, uno para arriba (1) y otro para abajo (0). Para eso, realizamos un diagrama de estados:
El diagrama presenta que ocurre si oprimimos el pulsador (1), moverá la raqueta para arriba. Si oprimimos (0) bajaría.

Diagrama de Estados de las raquetas

Implementamos este diagrama en PSoC y queda de la siguiente manera:

Máquina de estados raquetas

Sin embargo, ahora tenemos que lograr mostrar las raquetas únicamente en las columnas 1 y 10 de la matriz, para ello multiplexamos las columnas y queda la visualización dinámica de la siguiente manera:

Finalmente en la matriz visualizamos algo como esto:

Movimiento de las raquetas

Ahora bien, hay que generar el desplazamiento de la pelota, existen diferentes maneras de hacerlo, en este caso decidimos realizarlo con memorias. Escoger este método tiene algunas dificultades porque no permite ampliar la cancha.

El desplazamiento de la pelota se pensó en un recorrido (sólo en diagonal) en el que la pelota siempre se encontrara con el obstáculo de las raquetas y paredes tanto inferior como superior. El diseño animado se muestra a continuación:

Trayectoria de la pelota

La pelota toma 96 puntos en el tablero (matriz) hasta que se reinicia la secuencia, todo esto irá en una ROM.

ROM Pelota

Los LED’s de la matriz donde posiblemente pueda ocurrir un punto son los siguientes:

Para hacer las comprobaciones de que es punto o si es un rebote, fijamos la posición en que la pelota se encuentra en los puntos anteriores y realizamos la verificación cuando esta llega por ambos lados.

Puntos donde la pelota llega a la comprobación

La anterior imagen muestra los puntos en los que la pelota puede llegar a la comprobación del punto.
La siguiente muestra ya, la comprobación llevada a cabo para saber si es punto o rebote. Por ejemplo, la primera AND tiene como condiciones que la Fila 4 este encendida (como se enciende con 0 se niega), la otra condición es que la pelota se encuentre en la columna al lado de la raqueta, en este caso CD (Columna derecha), y la otra condición proviene de una OR. En la cual es gol si la Fila 3 y 4 están apagadas; es decir, no esta la paleta, y también si la Fila 4 y 5 están apagadas. Adicional mente la pelota viene de arriba hacia abajo, esta parte se comprueba con esa AND y el numero de la secuencia.

Comprobaciones

Para finalizar, debemos hacer el marcador de goles. Para ello todas las comprobaciones anteriores irán a dos AND, Gol izquierdo y Gol derecho respectivamente. Los demás componentes allí puestos están para que la configuración no se dañe a causa de la frecuencia, al final este marcador arrojará dos números en arreglo de bits que entrarán por motivo de espacio a otra PSoC.

De la primera PSoC, salen 6 pines; 3 de ellos con el número de goles del marcador izquierdo en Bits, y los otros 3 con el marcador derecho.
Estos datos entran a un deco de Binario a 7 Segmentos previamente realizado en anteriores practicas como Visualización dinámica (7 Segmentos).

Visualización dinámica en Display
Diseña un sitio como este con WordPress.com
Comenzar