Programmez les jeux vous-même et fabriquez vous-même des contrôleurs de jeu avec peu d'effort - Partie 1
Afin de ne pas perdre ma pratique, j'organise occasionnellement des séminaires en ligne au Fondation Raspberry Pi avec ou regardez les nombreux exemples qui sont publiés sur leur page d'accueil. C'est ainsi que j'ai pris connaissance des jeux Turtle Race (comme exemple pour le module Turtle Graphics) et Pong (comme exemple pour le module pygame zero).
Dans le premier match, quatre petites tortues s'affrontent; un nombre aléatoire détermine la taille du pas. J'ai raté la participation des (jusqu'à quatre) joueurs. Pour le deuxième jeu - un clone du premier jeu d'arcade à succès - j'ai raté les pagaies, comme ces contrôleurs s'appelaient à l'époque et étaient fabriqués par Atari en grand nombre. Vous ne pouvez les obtenir que par hasard dans un marché aux puces. Alors mettez-vous au travail et faites-le vous-même.
Matériel requis
En plus du câble requis et d'un convertisseur analogique-numérique, tout ce dont nous avons besoin pour notre contrôleur de jeu est montré dans l'image en haut à gauche: Ü-oeufs (ou bouchons de champagne), boutons et potentiomètres de 10 kOhm.
Les images parlent d'elles-mêmes: percez l'Ü-œuf au-dessus et en dessous, ouvrez l'Ü-œuf (quel dommage, rien de plus), installez un bouton ou un potentiomètre, tirez le câble à travers et soudez-le. Fermez à nouveau l'Ü-œuf. Fini.
Passons maintenant au premier jeu pour lequel les contrôleurs avec les boutons sont nécessaires.
La structure
D'abord le schéma de circuit:
Les logiciels
Pour les contrôleurs de jeu avec les boutons, j'utilise les GPIO 6, 13, 19 et 26, qui sont fermés contre la broche GND à proximité. Je peux donc instancier les objets bouton avec les paramètres par défaut de gpiozero.
J'ai nommé mes tortues d'après l'inoubliable Teenage Mutant Ninja Turtles, le film cinématographique des années 1990 (et leurs noms remontent aux vieux maîtres italiens). Pour que cela reste passionnant même avec des joueurs inégaux, le hasard joue un rôle. La tortue bouge à chaque clic randint (7,9) 7, 8 ou 9 pixels vers l'avant.
# 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
Ici encore le Lien vers la documentation de gpiozero:
Amusez-vous à suivre et si nécessaire à améliorer le code du programme, à bricoler les contrôleurs de jeu et bien sûr à jouer. Dans la deuxième partie, je montrerai comment utiliser les manettes de jeu avec les potentiomètres comme palettes.
Surprise pour moi lors de la réalisation de la capture d'écran : Lors de l'activation du programme scrotum, les tortues ont complètement disparu de la fenêtre active. C'est pourquoi j'ai pris cette photo avec l'appareil photo compact. Je trouverai peut-être une explication à cela à un moment donné.
1 commentaire
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