Programmcode für diese Lektion
import turtle as t
import random
#Hintergrund
t.bgcolor("sienna1")
#Raupenkoerper
raupe = t.Turtle()
raupe.shape("square")
raupe.color("DarkRed")
raupe.speed(0)
raupe.penup()
raupe.hideturtle()
#Raupenkoerper2
raupe2 = t.Turtle()
raupe2.shape("square")
raupe2.color("DarkSlateGrey")
raupe2.speed(0)
raupe2.penup()
raupe2.hideturtle()
#Blattkoerper
blatt = t.Turtle()
blatt_koerper = ((0,0), (14,2), (18, 6), (20,20), (6,18), (2,14))
t.register_shape("blatt", blatt_koerper)
blatt.shape("blatt")
blatt.color("ForestGreen")
blatt.speed(0)
blatt.penup()
blatt.hideturtle()
#Texte
spiel_startet = False
text_turtle = t.Turtle()
text_turtle.color("maroon")
text_turtle.write("Drücke Leertaste", align="center", font=("Arial", 16, "bold"))
text_turtle.hideturtle()
#Punkte
punkte_turtle = t.Turtle()
punkte_turtle.speed(0)
punkte_turtle.hideturtle()
def ausserhalb_fenster(raupe):
linke_wand = -t.window_width() / 2
rechte_wand = t.window_width() / 2
oben_wand = t.window_height() / 2
unten_wand = -t.window_height() / 2
(x,y) = raupe.pos()
ausserhalb = x < linke_wand or x > rechte_wand or y < unten_wand or y > oben_wand
return ausserhalb
def spiel_ende():
raupe.hideturtle()
raupe2.hideturtle()
blatt.hideturtle()
t.hideturtle()
t.color("blue")
t.write("GAME OVER!", align="center", font=("Arial", 30, "bold"))
def anzeige_punkte(aktuelle_punkte):
punkte_turtle.clear()
punkte_turtle.penup()
x = (t.window_width() / 2) - 50
y = (t.window_height() / 2) - 50
punkte_turtle.setpos(x, y)
punkte_turtle.color("blue")
punkte_turtle.write(str(aktuelle_punkte), align="right", font=("Arial", 40, "bold"))
def platziere_blatt():
#blatt.ht ist kurz für blatt.hideturtle()
blatt.ht()
#blatt.setpos(random.randint(-200, 200), random.randint(-200, 200))
#oder
blatt.setx(random.randint(-200, 200))
blatt.sety(random.randint(-200, 200))
#blatt.st ist kurz für blatt.showturtle()
blatt.st()
def starte_spiel():
global spiel_startet
if spiel_startet == True:
return
else:
spiel_startet = True
punkte = 0
text_turtle.clear()
raupe_speed = 2
raupe_laenge = 3
raupe.shapesize(1, raupe_laenge, 1)
raupe.showturtle()
raupe2.shapesize(1, raupe_laenge, 1)
raupe2.setheading(180)
raupe2.showturtle()
anzeige_punkte(punkte)
platziere_blatt()
while True:
raupe.forward(raupe_speed)
raupe2.forward(raupe_speed)
#Raupe frisst Blatt
if raupe.distance(blatt) < 20 or raupe2.distance(blatt) < 20:
platziere_blatt()
raupe_laenge = raupe_laenge+1
raupe.shapesize(1, raupe_laenge, 1)
raupe2.shapesize(1, raupe_laenge, 1)
raupe_speed = raupe_speed + 1
punkte = punkte + 10
anzeige_punkte(punkte)
#Raupe aus Bildschirm raus
if ausserhalb_fenster(raupe) or ausserhalb_fenster(raupe2):
spiel_ende()
break
def bewege_hoch():
if raupe.heading() == 0 or raupe.heading() == 180:
raupe.setheading(90)
def bewege_runter():
if raupe.heading() == 0 or raupe.heading() == 180:
raupe.setheading(270)
def bewege_links():
if raupe.heading() == 90 or raupe.heading() == 270:
raupe.setheading(180)
def bewege_rechts():
if raupe.heading() == 90 or raupe2.heading() == 270:
raupe.setheading(0)
def raupe2_bewege_hoch():
if raupe2.heading() == 0 or raupe2.heading() == 180:
raupe2.setheading(90)
def raupe2_bewege_runter():
if raupe2.heading() == 0 or raupe2.heading() == 180:
raupe2.setheading(270)
def raupe2_bewege_links():
if raupe2.heading() == 90 or raupe2.heading() == 270:
raupe2.setheading(180)
def raupe2_bewege_rechts():
if raupe2.heading() == 90 or raupe2.heading() == 270:
raupe2.setheading(0)
t.onkey(raupe2_bewege_hoch, "w")
t.onkey(raupe2_bewege_runter, "s")
t.onkey(raupe2_bewege_links, "a")
t.onkey(raupe2_bewege_rechts, "d")
t.onkey(starte_spiel, "space")
t.onkey(bewege_hoch, "Up")
t.onkey(bewege_runter, "Down")
t.onkey(bewege_links, "Left")
t.onkey(bewege_rechts, "Right")
t.listen()
t.mainloop()
import random
#Hintergrund
t.bgcolor("sienna1")
#Raupenkoerper
raupe = t.Turtle()
raupe.shape("square")
raupe.color("DarkRed")
raupe.speed(0)
raupe.penup()
raupe.hideturtle()
#Raupenkoerper2
raupe2 = t.Turtle()
raupe2.shape("square")
raupe2.color("DarkSlateGrey")
raupe2.speed(0)
raupe2.penup()
raupe2.hideturtle()
#Blattkoerper
blatt = t.Turtle()
blatt_koerper = ((0,0), (14,2), (18, 6), (20,20), (6,18), (2,14))
t.register_shape("blatt", blatt_koerper)
blatt.shape("blatt")
blatt.color("ForestGreen")
blatt.speed(0)
blatt.penup()
blatt.hideturtle()
#Texte
spiel_startet = False
text_turtle = t.Turtle()
text_turtle.color("maroon")
text_turtle.write("Drücke Leertaste", align="center", font=("Arial", 16, "bold"))
text_turtle.hideturtle()
#Punkte
punkte_turtle = t.Turtle()
punkte_turtle.speed(0)
punkte_turtle.hideturtle()
def ausserhalb_fenster(raupe):
linke_wand = -t.window_width() / 2
rechte_wand = t.window_width() / 2
oben_wand = t.window_height() / 2
unten_wand = -t.window_height() / 2
(x,y) = raupe.pos()
ausserhalb = x < linke_wand or x > rechte_wand or y < unten_wand or y > oben_wand
return ausserhalb
def spiel_ende():
raupe.hideturtle()
raupe2.hideturtle()
blatt.hideturtle()
t.hideturtle()
t.color("blue")
t.write("GAME OVER!", align="center", font=("Arial", 30, "bold"))
def anzeige_punkte(aktuelle_punkte):
punkte_turtle.clear()
punkte_turtle.penup()
x = (t.window_width() / 2) - 50
y = (t.window_height() / 2) - 50
punkte_turtle.setpos(x, y)
punkte_turtle.color("blue")
punkte_turtle.write(str(aktuelle_punkte), align="right", font=("Arial", 40, "bold"))
def platziere_blatt():
#blatt.ht ist kurz für blatt.hideturtle()
blatt.ht()
#blatt.setpos(random.randint(-200, 200), random.randint(-200, 200))
#oder
blatt.setx(random.randint(-200, 200))
blatt.sety(random.randint(-200, 200))
#blatt.st ist kurz für blatt.showturtle()
blatt.st()
def starte_spiel():
global spiel_startet
if spiel_startet == True:
return
else:
spiel_startet = True
punkte = 0
text_turtle.clear()
raupe_speed = 2
raupe_laenge = 3
raupe.shapesize(1, raupe_laenge, 1)
raupe.showturtle()
raupe2.shapesize(1, raupe_laenge, 1)
raupe2.setheading(180)
raupe2.showturtle()
anzeige_punkte(punkte)
platziere_blatt()
while True:
raupe.forward(raupe_speed)
raupe2.forward(raupe_speed)
#Raupe frisst Blatt
if raupe.distance(blatt) < 20 or raupe2.distance(blatt) < 20:
platziere_blatt()
raupe_laenge = raupe_laenge+1
raupe.shapesize(1, raupe_laenge, 1)
raupe2.shapesize(1, raupe_laenge, 1)
raupe_speed = raupe_speed + 1
punkte = punkte + 10
anzeige_punkte(punkte)
#Raupe aus Bildschirm raus
if ausserhalb_fenster(raupe) or ausserhalb_fenster(raupe2):
spiel_ende()
break
def bewege_hoch():
if raupe.heading() == 0 or raupe.heading() == 180:
raupe.setheading(90)
def bewege_runter():
if raupe.heading() == 0 or raupe.heading() == 180:
raupe.setheading(270)
def bewege_links():
if raupe.heading() == 90 or raupe.heading() == 270:
raupe.setheading(180)
def bewege_rechts():
if raupe.heading() == 90 or raupe2.heading() == 270:
raupe.setheading(0)
def raupe2_bewege_hoch():
if raupe2.heading() == 0 or raupe2.heading() == 180:
raupe2.setheading(90)
def raupe2_bewege_runter():
if raupe2.heading() == 0 or raupe2.heading() == 180:
raupe2.setheading(270)
def raupe2_bewege_links():
if raupe2.heading() == 90 or raupe2.heading() == 270:
raupe2.setheading(180)
def raupe2_bewege_rechts():
if raupe2.heading() == 90 or raupe2.heading() == 270:
raupe2.setheading(0)
t.onkey(raupe2_bewege_hoch, "w")
t.onkey(raupe2_bewege_runter, "s")
t.onkey(raupe2_bewege_links, "a")
t.onkey(raupe2_bewege_rechts, "d")
t.onkey(starte_spiel, "space")
t.onkey(bewege_hoch, "Up")
t.onkey(bewege_runter, "Down")
t.onkey(bewege_links, "Left")
t.onkey(bewege_rechts, "Right")
t.listen()
t.mainloop()
Zuletzt geändert: Dienstag, 7. Februar 2023, 10:52