Spielerisch Lernen - [Teil 1]

Programar juegos usted mismo y hacer los controladores de juego usted mismo con poco esfuerzo - Parte 1

Con el fin de no salir del ejercicio, de vez en cuando hago seminarios en línea en el Fundación Raspberry Pi o echar un vistazo a los muchos ejemplos publicados en su página de inicio. De esta manera, me di cuenta de la raza tortuga (como ejemplo para el módulo Turtle Graphics) y Pong (como ejemplo del módulo pygame cero).

En el primer juego, cuatro tortugas pequeñas compiten; un número aleatorio determina el incremento. Sin embargo, me faltó la cooperación de los (hasta cuatro) jugadores. Para el segundo juego, un clon del primer juego arcade exitoso, me faltaban las paletas, ya que estos controladores fueron llamados en ese momento y fueron fabricados por Atari en grandes cantidades. A lo sumo puedes conseguirlos en un mercado de pulgas por casualidad. Así que corrió a trabajar y hacerlo usted mismo.

Hardware necesario

Además del cable requerido y un convertidor analógico-digital, la imagen en la parte superior izquierda muestra todo lo que necesitamos para nuestros controladores de juego: huevos (alternativamente corchos de champán), botones y potenciómetros con 10 kOhm.





Las imágenes hablan por sí solas: perforar el huevo en la parte superior e inferior, abrir el Ob-egg (lo siento, nada más en él), instalar botones o potenciómetros, tirar a través de cables y soldadura. Cierre el O-Egg de nuevo. Terminado.

Ahora al primer juego, para el que se necesitan los mandos con los botones.

La estructura

En primer lugar, el esquema:


El software


Para los mandos del juego con los botones utilizo los GPPO 6, 13, 19 y 26, que se cierran contra el pin GND cercano. Así que puedo crear instancias de los objetos de botón con los ajustes preestablecidos de gpiozero.

Nombré a mis tortugas por las inolvidables Tortugas Ninja Mutantes Adolescentes, la película de la década de 1990 (y sus nombres se remontan a los antiguos maestros italianos). Para asegurarse de que sigue siendo emocionante incluso con jugadores desiguales, el azar juega a lo largo de un poco. Por clic, la tortuga se mueve con randint (7,9) 7, 8 o 9 píxeles hacia adelante.

# Turtle race with four buttons to be pressed as often as possible
# Random steps of 7 to 9 units per click
# based on projects.rapberrypi.org/en/projects/turtle-race
# Empfehlung: Deutsche Projekte unter projects.rapberrypi.org/de-DE/projects
# Die Namen in Erinnerung an die unvergesslichen Teenage Mutant Ninja Turtles# und deren Namensgeber, die italienischen Meister
import turtle
from turtle import Turtle
from random import randint
from gpiozero import Button
from signal import pause
Leonstep=0
Rafistep=0
Mickstep=0
Donnystep=0
play=True

button1 = Button(6)
button2 = Button(13)
button3 = Button(19)
button4 = Button(26)
def Leonforward():
global Leonstep
Leonstep=randint(7,9)

def Rafiforward():
global Rafistep
Rafistep=randint(7,9)

def Mickforward():
global Mickstep
Mickstep=randint(7,9)

def Donnyforward():
global Donnystep
Donnystep=randint(7,9)
finish=Turtle()
finish.penup()
finish.goto(200,200)
finish.pendown()
finish.goto(200,-50)
finish.hideturtle()

Leon = Turtle()
Leon.color("red")
Leon.shape("turtle")
Leon.penup()
Leon.goto(-200,150)
Leon.pendown()

Rafi = Turtle()
Rafi.color("green")
Rafi.shape("turtle")
Rafi.penup()
Rafi.goto(-200,100)
Rafi.pendown()

Mick = Turtle()
Mick.color("blue")
Mick.shape("turtle")
Mick.penup()
Mick.goto(-200,50)
Mick.pendown()

Donny = Turtle()
Donny.color("pink")
Donny.shape("turtle")
Donny.penup()
Donny.goto(-200,0)
Donny.pendown()
while play:
button1.when_pressed = Leonforward
if Leonstep!=0:
Leon.forward(Leonstep)
Leonstep=0
if Leon.xcor()>200:
print("Red Turtle wins")
play=False
button2.when_pressed = Rafiforward
if Rafistep!=0:
Rafi.forward(Rafistep)
Rafistep=0
if Rafi.xcor()>200:
print("Green Turtle wins")
play=False
button3.when_pressed = Mickforward
if Mickstep!=0:
Mick.forward(Mickstep)
Mickstep=0
if Mick.xcor()>200:
print("Blue Turtle wins")
play=False
button4.when_pressed = Donnyforward
if Donnystep!=0:
Donny.forward(Donnystep)
Donnystep=0
if Donny.xcor()>200:
print("Pink Turtle wins")
play=False

print()
print("Distance to finish line:")
print("Red Turtle",200-Leon.xcor())
print("Green Turtle",200-Rafi.xcor())
print("Blue Turtle",200-Mick.xcor())
print("Pink Turtle",200-Donny.xcor())

button1.close()
button2.close()
button3.close()
button4.close()
turtle.bye()


Download Code

Aquí de nuevo el enlace a la documentación de gpiozero:

Diviértete siguiendo y si es necesario mejorando el código del programa, retocando los mandos del juego y por supuesto jugando. En la segunda parte mostraré cómo usar los controladores del juego con los potenciómetros como paletas.


Sorpresa para mí al hacer la captura de pantalla: Al activar el programa de escroto, las tortugas desaparecieron completamente de la ventana activa. Por eso tomé esta foto con la cámara compacta. Tal vez encuentre una explicación para esto en algún momento.

Proyectos para principiantes

1 comentario

Tobias

Tobias

In den Links in den Code-Kommentaren fehlt ein ‘s’ (___ => projects.ra___pberrypi.org/en/projects/turtle-race).
Ansonsten Cooles Projekt, das werde ich mal ausprobieren. Klasse fände ich es, wenn ihr kleine Bundles schnüren würdet, so das man mit einem Klick das passende bestellen kann.

Gruß, Tobias

Deja un comentario

Todos los comentarios son moderados antes de ser publicados

Artículos de blog

  1. Ahora instalamos el esp32 a través de la administración.
  2. Lüftersteuerung Raspberry Pi
  3. Arduino IDE - Programmieren für Einsteiger - Teil 1
  4. ESP32 - das Multitalent
  5. Transporte Aéreo - programación de ESP mediante redes locales inalámbricas