Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import turtle
- import random
- import math
- import winsound
- import time
- def hauptspiel():
- sf=turtle.Screen()
- sf.clear()
- sf.bgcolor("black")
- sf.title("Hearts")
- turtle.setundobuffer(1)
- sf.tracer(0)
- sf.bgpic("hintergrund.gif")
- sf.register_shape("treibstoff1.gif")
- sf.register_shape("schwarzesloch.gif")
- class Sprite(turtle.Turtle):
- def __init__(self,spriteshape,color,startx,starty):
- turtle.Turtle.__init__(self,shape=spriteshape)
- self.speed(0)
- self.penup()
- self.color(color)
- self.goto(startx,starty)
- self.speed=0
- class Geschoss(turtle.Turtle):
- def __init__(self,spriteshape,color,startx,starty):
- Sprite.__init__(self,spriteshape,color,startx,starty)
- self.shape("square")
- self.shapesize(stretch_wid=0.05,stretch_len=0.5,outline=None)
- self.color("green")
- self.speed=25
- self.status="bereit"
- self.goto(0,-500)
- def schießen(self):
- if self.status=="bereit":
- winsound.PlaySound("lasersound.wav",winsound.SND_ASYNC)
- self.showturtle()
- self.goto(spieler.xcor(),spieler.ycor())
- self.setheading(spieler.heading())
- self.status="schießen"
- def move(self):
- if self.status=="schießen":
- self.forward(self.speed)
- if self.xcor()>=630 or self.xcor()<=-630 or self.ycor()>=330 or self.ycor()<=-350:
- self.hideturtle()
- self.status="bereit"
- class Loch(turtle.Turtle):
- def __init__(self):
- turtle.Turtle.__init__(self)
- self.penup()
- self.shape("schwarzesloch.gif")
- self.setposition(random.randint(-610,610),random.randint(-300,300))
- class Gameover(turtle.Turtle):
- def __init__(self):
- turtle.Turtle.__init__(self)
- self.penup()
- self.color("white")
- self.setposition(-230,500)
- def game_over(self):
- winsound.PlaySound("gameoversound.wav",winsound.SND_ASYNC)
- sf.tracer(0)
- self.setposition(-230,-20)
- self.write("game over !",False,align="left",font=("Times",70,"normal"))
- time.sleep(2)
- hauptspiel()
- class Treibstoff(turtle.Turtle):
- def __init__(self):
- turtle.Turtle.__init__(self)
- self.penup()
- self.color("white")
- self.setposition(150,340)
- self.treibstoff=5
- def update_treibstoff(self):
- self.clear()
- self.treibstoffgerundet=round(self.treibstoff)
- if self.treibstoff<=0:
- self.treibstoffgerundet=0
- self.write("Treibstoff: {}".format(self.treibstoffgerundet),False,align="left",font=("Times",14,"normal"))
- def change_treibstoffp(self):
- self.treibstoff+=10
- self.update_treibstoff()
- def change_treibstoff(self):
- self.treibstoff-=0.02
- self.update_treibstoff()
- if self.treibstoff<=0:
- gameover.game_over()
- class Spiel(turtle.Turtle):
- def __init__(self):
- turtle.Turtle.__init__(self)
- self.penup()
- self.color("white")
- self.setposition(-290,340)
- self.score=0
- def update_score(self):
- self.clear()
- self.write("Score: {}".format(self.score),False,align="left",font=("Times",14,"normal"))
- def change_score(self,punkte):
- self.score+=punkte
- treibstoff.change_treibstoffp()
- self.update_score()
- def sound(self):
- winsound.Beep(2000,2)
- class Treffer(turtle.Turtle):
- def __init__(self):
- turtle.Turtle.__init__(self)
- self.penup()
- self.speed(0)
- self.color("green")
- self.shape("treibstoff1.gif")
- self.speed=0.75
- self.goto(random.randint(-610,610),random.randint(-350,310))
- self.setheading(random.randint(1,360))
- def hüpfen(self):
- self.goto(random.randint(-610,610),random.randint(-350,310))
- self.setheading(random.randint(1,360))
- def bewegen(self):
- self.forward(self.speed)
- if self.xcor()>=630:
- turtle.tracer(100)
- self.setposition(self.xcor()-1260,self.ycor())
- self.setheading(random.randint(1,150))
- if self.xcor()<=-630:
- turtle.tracer(100)
- self.setposition(self.xcor()+1260,self.ycor())
- self.setheading(random.randint(1,150))
- if self.ycor()>=330:
- turtle.tracer(100)
- self.setposition(self.xcor(),self.ycor()-680)
- self.setheading(random.randint(1,150))
- if self.ycor()<=-350:
- turtle.tracer(100)
- self.setposition(self.xcor(),self.ycor()+680)
- self.setheading(random.randint(1,150))
- class Grenze(turtle.Turtle):
- def __init__(self):
- turtle.Turtle.__init__(self)
- self.penup()
- self.hideturtle()
- self.speed(0)
- self.color("white")
- self.pensize(5)
- def grenzemalen(self):
- self.penup()
- self.goto(-640,-360)
- self.pendown()
- self.goto(-640,340)
- self.goto(640,340)
- self.goto(640,-360)
- self.goto(-640,-360)
- class Spieler(turtle.Turtle):
- def __init__(self):
- turtle.Turtle.__init__(self)
- self.penup()
- self.shape("triangle")
- self.color("white")
- self.speed=1
- self.richtung="gerade"
- def bewegen(self):
- self.forward(self.speed)
- if self.xcor()>=630:
- turtle.tracer(100)
- self.setposition(self.xcor()-1260,self.ycor())
- turtle.tracer(5)
- if self.xcor()<=-630:
- turtle.tracer(100)
- self.setposition(self.xcor()+1260,self.ycor())
- turtle.tracer(5)
- if self.ycor()>=330:
- turtle.tracer(100)
- self.setposition(self.xcor(),self.ycor()-680)
- turtle.tracer(5)
- if self.ycor()<=-350:
- turtle.tracer(100)
- self.setposition(self.xcor(),self.ycor()+680)
- turtle.tracer(5)
- if self.richtung=="links":
- self.left(3)
- elif self.richtung=="rechts":
- self.right(3)
- def stop(self):
- self.richtung="gerade"
- def links(self):
- self.richtung="links"
- def rechts(self):
- self.richtung="rechts"
- def schneller(self):
- self.speed+=1
- winsound.PlaySound("schnellersound.wav",winsound.SND_ASYNC)
- def langsamer(self):
- if self.speed>=1:
- self.speed-=1
- def kollision(t1,t2):
- a=t1.xcor()-t2.xcor()
- b=t1.ycor()-t2.ycor()
- distanz=math.sqrt((a**2)+(b**2))
- if distanz<=20:
- return True
- else:
- return False
- def kollisionloch(t1,t2):
- a=t1.xcor()-t2.xcor()
- b=t1.ycor()-t2.ycor()
- distanz=math.sqrt((a**2)+(b**2))
- if distanz<=30:
- spieler.hideturtle()
- winsound.PlaySound("schwarzeslochsound.wav",winsound.SND_ASYNC)
- treibstoff.treibstoff-=random.randint(3,8)
- spieler.setposition(loch.xcor(),loch.ycor())
- time.sleep(0.5)
- return True
- else:
- return False
- spieler=Spieler()
- grenze=Grenze()
- spiel=Spiel()
- treibstoff=Treibstoff()
- gameover=Gameover()
- loch=Loch()
- geschoss=Geschoss("square","red",0,0)
- treibstoff.change_treibstoff()
- spiel.change_score(0)
- grenze.grenzemalen()
- trefferliste=[]
- for i in range(4):
- trefferliste.append(Treffer())
- turtle.listen()
- turtle.onkeypress(spieler.links,"Left")
- turtle.onkeyrelease(spieler.stop,"Left")
- turtle.onkeypress(spieler.rechts,"Right")
- turtle.onkeyrelease(spieler.stop,"Right")
- turtle.onkey(spieler.schneller,"Up")
- turtle.onkey(spieler.langsamer,"Down")
- turtle.onkey(geschoss.schießen,"space")
- while True:
- sf.update()
- spieler.bewegen()
- geschoss.move()
- treibstoff.change_treibstoff()
- if kollisionloch(spieler,loch)==True:
- spieler.setposition(random.randint(-610,610),random.randint(-300,300))
- spieler.setheading(random.randint(1,360))
- spieler.showturtle()
- for treffer in trefferliste:
- treffer.bewegen()
- if kollision(spieler,treffer)==True or kollision(geschoss,treffer)==True:
- geschoss.hideturtle()
- geschoss.goto(0,-360)
- treffer.hüpfen()
- spiel.change_score(10)
- spiel.sound()
- turtle.tracer(0)
- if kollision(treffer,loch)==True:
- treffer.setposition(random.randint(-610,610),random.randint(-300,300))
- treffer.setheading(random.randint(1,360))
- mainloop()
- hauptspiel()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement