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()

#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():
    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()
    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()

    anzeige_punkte(punkte)
    platziere_blatt()

    while True:
        raupe.forward(raupe_speed)

        #Raupe frisst Blatt
        if raupe.distance(blatt) < 20:
            platziere_blatt()
            raupe_laenge = raupe_laenge+1
            raupe.shapesize(1, raupe_laenge, 1)
            raupe_speed = raupe_speed + 1
            punkte = punkte + 10
            anzeige_punkte(punkte)

        if ausserhalb_fenster():
            spiel_ende()
            break


def bewege_hoch():
    if raupe.heading() == 0 or raupe.heading() == 180:
        raupe.setheading(90)


def bewege_runter():
    pass


def bewege_links():
    pass


def bewege_rechts():
    pass


t.onkey(starte_spiel, "space")
t.onkey(bewege_hoch, "Up")
t.listen()
t.mainloop()
Zuletzt geändert: Mittwoch, 1. Februar 2023, 12:40