Code un homenaje a un clásico de Game & Watch | Estructura alámbrica #63

Vuelva a visitar los primeros años de juego de Nintendo con un homenaje de Python al clásico Fire de Game & Watch. Mark Vanstone tiene el código en la última edición de la revista Wireframe, disponible ahora.

Nintendo comenzó a lanzar la serie Game & Watch en 1980. Fire Game & Watch tenía dos versiones: la versión plateada y la versión de pantalla ancha.

Cuando los años setenta se convirtieron en ochenta, Nintendo comenzó una línea de juegos portátiles: Game & Watch. Creados por Gunpei Yokoi, estos presentaban una pantalla de cristal líquido y controles simples, a menudo solo botones izquierdo y derecho. Uno de esos juegos fue Fire, donde el jugador tenía que controlar a un par de bomberos mientras intentaban salvar a las personas que saltaban de un edificio en llamas. Aunque los gráficos en movimiento eran monocromáticos, había una superposición de colores que mostraba el edificio en llamas, el suelo y la ambulancia.
Estos gráficos de juegos LCD no se dibujaron con una matriz de píxeles como un juego de computadora, sino que tenían un conjunto definido de áreas en la pantalla donde podían aparecer formas. Esto limitó las variaciones de los gráficos posibles en un juego y, debido a la velocidad de la electrónica detrás de la computadora de mano, la frecuencia de actualización fue considerablemente más lenta que la mayoría de los juegos de computadora: solo alrededor de dos fotogramas por segundo.

Para este ejemplo, vamos a recrear la apariencia del Fire original con Pygame Zero. Como lo hemos hecho en ediciones anteriores de Código fuente, hemos descargado nuestros gráficos de spriters-resource.com. Lo primero que debemos hacer es resolver esa velocidad de fotogramas. queremos el draw() para dibujar cada actualización, pero solo queremos que los objetos del juego se muevan cada 30 actualizaciones, así que lo que hacemos es tener una variable de conteo y solo disparar el doUpdate() funcion si count%30 es cero El signo % devuelve el resto cuando dividimos por 30, por lo que obtendremos números entre 0 y 29 en este caso.

Nuestro homenaje a la clásica computadora de mano Fire Game & Watch.

Primero dibujamos la imagen de fondo y luego necesitamos que nuestros dos bomberos se muevan entre tres posiciones a lo largo del suelo. Podemos capturar las pulsaciones de las teclas de flecha izquierda y derecha, pero solo queremos tener un movimiento por actualización, por lo que establecemos un movement variable a -1 o 1 y luego haga el movimiento cuando ocurra la próxima actualización. De hecho, tenemos tres Actores para los bomberos, uno para cada posición, y solo dibujamos el que está en la posición actual.

Ahora para la gente que salta del edificio. Solo hay 22 posiciones en las que puede estar una persona que salta, por lo que podemos ponerlas en una lista de tuplas que representan las coordenadas x e y de las posiciones en la pantalla. También tenemos una imagen diferente para cada posición en la pantalla, por lo que a medida que nuestra persona se mueve, su imagen cambia para reflejar la posición en la pantalla. Comenzamos el juego creando una nueva persona que salta en forma de actor y lo agregamos a una lista de saltadores. Luego, en cada actualización, movemos todos los puentes de la lista un cuadro y cambiamos su imagen. Cuando lleguemos a la draw() función, dibujamos todos nuestros puentes en las coordenadas de su marco.

Aquí está el código de Mark para un juego de acción estilo Fire en Python. Para que funcione en su sistema, primero deberá instalar Pygame Zero. Puede encontrar instrucciones completas en wfmag.cc/pgzero. Para obtener el código completo, diríjase a nuestro Github.

Así que ahora tenemos un juego en el que podemos controlar a los bomberos de izquierda a derecha y hacer que la gente salte del edificio siguiendo un conjunto predefinido de posiciones en la pantalla. Necesitamos detectar si los bomberos están impidiendo que las personas golpeen el suelo, por lo que probamos para ver si hay un saltador en alguno de los marcos donde deben ser atrapados y, de ser así, si los bomberos están en la posición correcta para atraparlos. ¿a ellos? Si no, la persona caerá al suelo y el juego terminará. Sin embargo, si los bomberos están en la posición correcta para salvar a la persona a lo largo de la pantalla, rebotarán hacia la ambulancia y la puntuación del jugador aumentará.

Con eso, el juego está bastante completo. El Fire original te dio tres vidas y dos niveles de dificultad, pero como siempre, dejaremos que agregues esas funciones por ti mismo.

Consigue tu copia de Wireframe #63

Puede leer más funciones como esta en el número 63 de Wireframe, disponible directamente en Raspberry Pi Press, que entregamos en todo el mundo.

Además: ¡tenemos una nueva oferta de subs! Suscríbete a Wireframe por un año y obtén un GRATIS 8BitDo Controlador Pro 2 por valor de £ 30.

El nuevo y brillante Wireframe #63. Si te gustan las consolas portátiles, esta es tu edición.

Y si prefieres tus revistas en formato digital, ¡también puedes descargar el número 63 de Wireframe en PDF gratis!