Excitebike es un juego de desplazamiento lateral en el que conduces una motocicleta sobre saltos, maniobras alrededor de obstáculos y aceleras hacia la línea de meta.

Nintendo lanzó por primera vez este juego de carreras de BMX para NES. A partir de ahí, la empresa modernizó Excitebike y la lanzó en la N64 y, finalmente, en la Wii.

Ya no existen muchas consolas NES, lo que hace que sea difícil volver a jugar a Excitebike. Gracias a algunos fanáticos retro de Wireframe Magazine, un fragmento de código de Python puede recrear este clásico de NES para disfrutar de horas de diversión en su Raspberry Pi o PC en casa.

Obtener el código y configurar

Aunque puede usar nano o vim para editar su código python, querrá aprovechar una función completa editor de texto o IDE.

Deberá instalar Pygame Zero para admitir las funciones integradas en este homenaje a Excitebike. Pygame Zero contiene módulos de Python para que los creadores de juegos se concentren sin tener que repetir fundamentos simples.

Si no tiene python3 instalado en su PC, puede

instagram viewer
descargar la última versión desde Python directamente. También querrás asegúrese de tener PIP instalado también.

Con la última versión de Python y PIP instalada, abra su terminal de PowerShell o Linux y escriba:

pip3 instalar pgcero

Por último, deberá obtener una copia del código de Python del repositorio de GitHub de la revista Wireframe. Escriba el siguiente comando en una terminal:

git clon https://github.com/Wireframe-Magazine/Wireframe-66.git

Alternativamente, puede descargar el código comprimido directamente desde la página de GitHub de Wireframe.

Desglosando el código

Para comprender lo que hace el código, primero ejecute el juego Excitebike. Hágalo navegando hasta el código fuente y luego ejecutándolo usando Pygame Zero:

cd Estructura alámbrica-66/fuente-code-excitebike/
pgzrunexitebike.py

Luego puede abrir el archivo exitebike.py con un editor de texto para ver el código.

El dibujar La función dibuja el fondo a medida que se mueve la imagen de la bicicleta. A "blit" se refiere a un bloque que se dibuja en la pantalla. La palabra, "fondo," se refiere a la imagen de fondo (vincular las imágenes al bloque de fondo es gracias a los módulos Pygame Zero importados).

definitivamentedibujar():
pantalla.blit("fondo", (0, 0))
dibujarPista()
bicicleta.dibujar()
pantalla.dibujar.texto("TIEMPO DE VUELTA: "+str (int (hora.hora() - horaInicio)), (20, 555),color=(255,255,255), tamaño de fuente=50)
pantalla.dibujar.texto("ÚLTIMA VUELTA: "+str (última vuelta), arriba a la derecha = (780, 555), color = (255,255,255), tamaño de fuente = 50)

También notará los cálculos del tiempo de vuelta y la última vuelta (esto está representado por el contador de tiempo en la parte inferior de la pantalla). El tiempo de vuelta calcula constantemente la diferencia entre la pulsación inicial de la tecla de flecha derecha (hora de inicio) y la hora actual.

La última vuelta es un cálculo similar. En lugar de la hora de inicio, la hora se calcula desde que la moto pasa por una posición de pista predefinida (mencionada como trackPos < -4800 en el código). Los siguientes elementos entre comillas representan una imagen.

Este código dibuja bloques de imágenes en la pantalla a ciertos intervalos y posiciones particulares en la pantalla. La imagen de multitud proporcionada tiene solo 100 px de ancho. Sin embargo, el código, a continuación, le dice a la computadora cuándo dibujar la imagen para que parezca que hay una multitud simulada detrás de la motocicleta mientras se mueve.

Las imágenes de rocas se muestran en la pantalla en dos partes. La segunda y tercera líneas de código, a continuación, funcionan juntas para simular el escenario de manera ordenada.

Una vez que cree una copia de seguridad del código Python, intente cambiar los números a continuación para ver qué sucede con las rocas en la pantalla.

pantalla.blit("multitud1", ((t*100)+desplazamiento de pista-100, 0))
pantalla.blit("roca1", ((t*100)+desplazamiento de pista-100, 270))
pantalla.blit("roca1", ((t*100)+desplazamiento de pista-50, 270))

¿Quieres cambiar tu moto por un Monster truck, un todoterreno u otro vehículo? ¿Quizás quieras competir con un unicornio hasta la línea de meta?

Todo lo que necesita hacer es dibujar una imagen de 50x50px (con un fondo transparente). Luego, coloque este archivo (imagen.png) en el 'imágenes' carpeta (dentro de la código-fuente-excitebike carpeta). Deberá crear dos imágenes (una con una altura ligeramente mayor) para agregar algo de realismo. Todo lo que necesita hacer es cambiar la referencia a 'bici0' aquí:

bicicleta = Actor('bicicleta0', centro=(150, 350), ancla=('centro', 'abajo'))

También asegúrese de realizar una acción de buscar y reemplazar con el nombre de la imagen (sin la extensión de la imagen).

comprobarBikeRamp() es la función que hace el trabajo de calcular el eje Y para que tu moto (o camión) suba la rampa (y tome un poco de aire serio si tienes suerte). El teclado.derecho y teclado.izquierda Los parámetros se definen en el actualizar() función.

Estos bits de código le dicen a la computadora que disminuya la velocidad de la motocicleta o que la acelere (dependiendo de qué tecla presione el usuario en el teclado). Traducción: Cuanto más rápido se mueva tu moto, mayor será el número del eje Y (o salto muy grande).

Transversalmente, el on_key_down (tecla) La función hará que su moto caiga en picada.

si clave.nombre == "ABAJO":
bicicleta.dirección = 1
bici.carrilY = límite(bicicleta.carrilY + 50, 375, 525)
bicicleta.y += bicicleta.dirección

El mucklane El parámetro reducirá la velocidad de su motocicleta utilizando el siguiente cálculo:

vertedero = En t((bicicleta.carrilY-375)/50)+1

La línea 66 del código determina cuándo mostrar la imagen de 'muck' en la pantalla. Ahora que la computadora sabe cuándo su motocicleta pasará sobre la suciedad, reducirá la velocidad de su motocicleta a la mitad a medida que se mueve sobre la suciedad en la pista. Cambie el valor de muckLane de /50 a /25 o /75 para ver qué sucede a continuación.

¡Corredores (ejem, programadores de Python)! ¡Enciendan sus motores!

Incluso si no te sientes cómodo programando este homenaje a Excitebike desde cero, este código sigue siendo un excelente manual. Al modificarlo y darse cuenta del impacto visual de los cambios, puede aprender mucho. ¿Intentarás agregar más funciones o corredores de IA en tu juego? ¡A por ello!

Con un poco de práctica de Python en tu haber, otra idea para que pruebes es agregar diferentes niveles una vez que pases la línea de meta después de 4 o 5 veces. Además, es posible que desee agregar recompensas por el primer, segundo y tercer lugar. Si está en primer lugar, ¡agregue también un archivo de audio para animar a la multitud! Hay muchas posibilidades.

Cuando esté satisfecho con las mejoras de Excitebike, ¿por qué no emprender la creación de un juego de aventuras de texto? ¡Hay muchas piezas diferentes que asegurarán que estés aprendiendo algo emocionante durante horas, días o incluso semanas!