Turtle Race
The turtle wants to race. Our program uses functions (def) and keyboard input (turtle.onkey()).

flowchart TD A[Program Start] --> B[Initialize Variables] B --> C[Setup Screen & Title] C --> D[Draw Finish Line] D --> E[Display Game Rules] E --> F[Create Player Turtles] F --> G[Position Players at Start] G --> H[Show Countdown] H --> I[Display 'Go!'] I --> J[Setup Key Bindings] J --> K[Start Main Loop] K --> L{Key Pressed?} L -->|A pressed| M[Player 1 Move Forward] L -->|\# pressed| N[Player 2 Move Forward] L -->|No key| L M --> O[Check Winner] N --> O O --> P{Player reached finish?} P -->|No| L P -->|Yes| Q[Disable Key Bindings] Q --> R[Clear Countdown Display] R --> S[Show Winner Message] S --> T[End Game]
import turtle
from time import sleep
colors = ["red", "green"]
end_x = 300 # Zielposition auf x-Achse
players = []
start_y = -20
def check_winner():
for player in players:
if player.xcor() >= end_x:
turtle.onkey(None, "a")
turtle.onkey(None, "#")
# Siegeranzeige
countdown_turtle.clear()
worker_turtle.teleport(countdown_turtle.xcor(), countdown_turtle.ycor())
worker_turtle.color(player.color()[0])
worker_turtle.write(f"{player.color()[0].capitalize()} gewinnt!", align="center", font=("Arial", 28, "bold"))
print(f"{player.color()[0].capitalize()} gewinnt!")
def player1_move():
players[0].forward(10)
check_winner()
def player2_move():
players[1].forward(10)
check_winner()
# Bildschirm vorbereiten
turtle.title("Turtle Race")
screen = turtle.Screen()
screen.bgcolor("lightblue")
# Ziellinie zeichnen
worker_turtle = turtle.Turtle()
worker_turtle.hideturtle()
worker_turtle.teleport(end_x, -100)
worker_turtle.left(90)
worker_turtle.forward(200)
# Spielregeln schreiben
worker_turtle.teleport(0, -150)
worker_turtle.write("Spieler 1 nutzt die Taste A, Spieler 2 nutzt die Taste #, möge der bessere Spieler gewinnen!", align="center", font=("Arial", 18, "bold"))
# Rennteilnehmer erstellen und aufstellen
for color in colors:
player_turtle = turtle.Turtle()
player_turtle.color(color)
player_turtle.shape("turtle")
player_turtle.penup()
player_turtle.goto(-300, start_y)
player_turtle.pendown()
players.append(player_turtle)
start_y += 40
# Countdown
countdown_turtle = turtle.Turtle()
countdown_turtle.hideturtle()
countdown_turtle.teleport(0, 100)
for i in range(3, 0, -1): # Countdown zählt rückwärts
countdown_turtle.clear()
countdown_turtle.write(f"{i}", align="center", font=("Arial", 36, "bold"))
sleep(1)
countdown_turtle.clear()
countdown_turtle.write("Los!", align="center", font=("Arial", 32, "bold"))
# Das Rennen starten
turtle.onkey(player1_move, "a") # Player1 Taste zuweisen
turtle.onkey(player2_move, "#") # Player2 Taste zuweisen
turtle.listen() # Tastatur Abfragen aktivieren
turtle.mainloop() # Fortlaufende Schleife, damit Tastaturabfrage ausgeführt wird