Advertisement
Guest User

space figth

a guest
Jun 18th, 2018
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 9.86 KB | None | 0 0
  1. import turtle
  2. import random
  3. import math
  4. import winsound
  5. import time
  6.  
  7.  
  8. def hauptspiel():
  9.     sf=turtle.Screen()
  10.     sf.clear()
  11.     sf.bgcolor("black")
  12.     sf.title("Hearts")
  13.     turtle.setundobuffer(1)
  14.     sf.tracer(0)
  15.     sf.bgpic("hintergrund.gif")
  16.     sf.register_shape("treibstoff1.gif")
  17.     sf.register_shape("schwarzesloch.gif")
  18.  
  19.  
  20.  
  21.  
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28.     class Sprite(turtle.Turtle):
  29.  
  30.         def __init__(self,spriteshape,color,startx,starty):
  31.             turtle.Turtle.__init__(self,shape=spriteshape)
  32.             self.speed(0)
  33.             self.penup()
  34.             self.color(color)
  35.             self.goto(startx,starty)
  36.             self.speed=0
  37.                
  38.  
  39.    
  40.     class Geschoss(turtle.Turtle):
  41.  
  42.         def __init__(self,spriteshape,color,startx,starty):
  43.             Sprite.__init__(self,spriteshape,color,startx,starty)
  44.             self.shape("square")
  45.             self.shapesize(stretch_wid=0.05,stretch_len=0.5,outline=None)
  46.             self.color("green")
  47.             self.speed=25
  48.             self.status="bereit"
  49.             self.goto(0,-500)
  50.  
  51.         def schießen(self):
  52.             if self.status=="bereit":
  53.                 winsound.PlaySound("lasersound.wav",winsound.SND_ASYNC)
  54.                 self.showturtle()
  55.                 self.goto(spieler.xcor(),spieler.ycor())
  56.                 self.setheading(spieler.heading())
  57.                 self.status="schießen"
  58.  
  59.         def move(self):
  60.  
  61.             if self.status=="schießen":
  62.                 self.forward(self.speed)
  63.                 if self.xcor()>=630 or self.xcor()<=-630 or self.ycor()>=330 or self.ycor()<=-350:
  64.                     self.hideturtle()
  65.                     self.status="bereit"
  66.                    
  67.            
  68.            
  69.            
  70.            
  71.  
  72.  
  73.  
  74.  
  75.     class Loch(turtle.Turtle):
  76.  
  77.         def __init__(self):
  78.             turtle.Turtle.__init__(self)
  79.             self.penup()
  80.             self.shape("schwarzesloch.gif")
  81.             self.setposition(random.randint(-610,610),random.randint(-300,300))
  82.  
  83.  
  84.     class Gameover(turtle.Turtle):
  85.  
  86.         def __init__(self):
  87.             turtle.Turtle.__init__(self)
  88.             self.penup()
  89.             self.color("white")
  90.             self.setposition(-230,500)
  91.  
  92.         def game_over(self):
  93.             winsound.PlaySound("gameoversound.wav",winsound.SND_ASYNC)
  94.             sf.tracer(0)
  95.             self.setposition(-230,-20)
  96.             self.write("game over !",False,align="left",font=("Times",70,"normal"))
  97.             time.sleep(2)
  98.             hauptspiel()
  99.  
  100.  
  101.     class Treibstoff(turtle.Turtle):
  102.  
  103.         def __init__(self):
  104.             turtle.Turtle.__init__(self)
  105.             self.penup()
  106.             self.color("white")
  107.             self.setposition(150,340)
  108.             self.treibstoff=5
  109.  
  110.         def update_treibstoff(self):
  111.             self.clear()
  112.             self.treibstoffgerundet=round(self.treibstoff)
  113.             if self.treibstoff<=0:
  114.                 self.treibstoffgerundet=0
  115.             self.write("Treibstoff: {}".format(self.treibstoffgerundet),False,align="left",font=("Times",14,"normal"))
  116.  
  117.         def change_treibstoffp(self):
  118.             self.treibstoff+=10
  119.             self.update_treibstoff()
  120.  
  121.         def change_treibstoff(self):
  122.             self.treibstoff-=0.02
  123.             self.update_treibstoff()
  124.             if self.treibstoff<=0:
  125.                 gameover.game_over()
  126.  
  127.     class Spiel(turtle.Turtle):
  128.        
  129.  
  130.         def __init__(self):
  131.             turtle.Turtle.__init__(self)
  132.             self.penup()
  133.             self.color("white")
  134.             self.setposition(-290,340)
  135.             self.score=0
  136.  
  137.         def update_score(self):
  138.             self.clear()
  139.             self.write("Score: {}".format(self.score),False,align="left",font=("Times",14,"normal"))
  140.  
  141.         def change_score(self,punkte):
  142.             self.score+=punkte
  143.             treibstoff.change_treibstoffp()
  144.             self.update_score()
  145.  
  146.         def sound(self):
  147.             winsound.Beep(2000,2)
  148.  
  149.  
  150.            
  151.     class Treffer(turtle.Turtle):
  152.  
  153.         def __init__(self):
  154.             turtle.Turtle.__init__(self)
  155.             self.penup()
  156.             self.speed(0)
  157.             self.color("green")
  158.             self.shape("treibstoff1.gif")
  159.             self.speed=0.75
  160.             self.goto(random.randint(-610,610),random.randint(-350,310))
  161.             self.setheading(random.randint(1,360))
  162.  
  163.         def hüpfen(self):
  164.             self.goto(random.randint(-610,610),random.randint(-350,310))
  165.             self.setheading(random.randint(1,360))
  166.            
  167.  
  168.  
  169.         def bewegen(self):
  170.             self.forward(self.speed)
  171.             if self.xcor()>=630:
  172.                 turtle.tracer(100)
  173.                 self.setposition(self.xcor()-1260,self.ycor())
  174.                 self.setheading(random.randint(1,150))
  175.                
  176.             if self.xcor()<=-630:
  177.                 turtle.tracer(100)
  178.                 self.setposition(self.xcor()+1260,self.ycor())
  179.                 self.setheading(random.randint(1,150))
  180.  
  181.                
  182.             if self.ycor()>=330:
  183.                 turtle.tracer(100)
  184.                 self.setposition(self.xcor(),self.ycor()-680)
  185.                 self.setheading(random.randint(1,150))
  186.  
  187.  
  188.             if self.ycor()<=-350:
  189.                 turtle.tracer(100)
  190.                 self.setposition(self.xcor(),self.ycor()+680)
  191.                 self.setheading(random.randint(1,150))
  192.  
  193.  
  194.  
  195.  
  196.     class Grenze(turtle.Turtle):
  197.  
  198.  
  199.         def __init__(self):
  200.             turtle.Turtle.__init__(self)
  201.             self.penup()
  202.             self.hideturtle()
  203.             self.speed(0)
  204.             self.color("white")
  205.             self.pensize(5)
  206.                
  207.  
  208.  
  209.         def grenzemalen(self):
  210.             self.penup()
  211.             self.goto(-640,-360)
  212.             self.pendown()
  213.             self.goto(-640,340)
  214.             self.goto(640,340)
  215.             self.goto(640,-360)
  216.             self.goto(-640,-360)
  217.  
  218.  
  219.  
  220.  
  221.     class Spieler(turtle.Turtle):
  222.  
  223.         def __init__(self):
  224.             turtle.Turtle.__init__(self)
  225.             self.penup()
  226.             self.shape("triangle")
  227.             self.color("white")
  228.             self.speed=1
  229.             self.richtung="gerade"
  230.         def bewegen(self):
  231.             self.forward(self.speed)
  232.  
  233.             if self.xcor()>=630:
  234.                 turtle.tracer(100)
  235.                 self.setposition(self.xcor()-1260,self.ycor())
  236.                 turtle.tracer(5)
  237.                
  238.             if self.xcor()<=-630:
  239.                 turtle.tracer(100)
  240.                 self.setposition(self.xcor()+1260,self.ycor())
  241.                 turtle.tracer(5)
  242.                
  243.             if self.ycor()>=330:
  244.                 turtle.tracer(100)
  245.                 self.setposition(self.xcor(),self.ycor()-680)
  246.                 turtle.tracer(5)
  247.  
  248.             if self.ycor()<=-350:
  249.                 turtle.tracer(100)
  250.                 self.setposition(self.xcor(),self.ycor()+680)
  251.                 turtle.tracer(5)
  252.  
  253.             if self.richtung=="links":
  254.                 self.left(3)
  255.             elif self.richtung=="rechts":
  256.                 self.right(3)
  257.  
  258.         def stop(self):
  259.             self.richtung="gerade"
  260.                
  261.         def links(self):
  262.             self.richtung="links"
  263.         def rechts(self):
  264.             self.richtung="rechts"
  265.         def schneller(self):
  266.             self.speed+=1
  267.             winsound.PlaySound("schnellersound.wav",winsound.SND_ASYNC)
  268.         def langsamer(self):
  269.             if self.speed>=1:
  270.                 self.speed-=1
  271.  
  272.     def kollision(t1,t2):
  273.         a=t1.xcor()-t2.xcor()
  274.         b=t1.ycor()-t2.ycor()
  275.         distanz=math.sqrt((a**2)+(b**2))
  276.  
  277.         if distanz<=20:
  278.             return True
  279.         else:
  280.             return False
  281.  
  282.     def kollisionloch(t1,t2):
  283.         a=t1.xcor()-t2.xcor()
  284.         b=t1.ycor()-t2.ycor()
  285.         distanz=math.sqrt((a**2)+(b**2))
  286.  
  287.         if distanz<=30:
  288.             spieler.hideturtle()
  289.             winsound.PlaySound("schwarzeslochsound.wav",winsound.SND_ASYNC)
  290.             treibstoff.treibstoff-=random.randint(3,8)
  291.             spieler.setposition(loch.xcor(),loch.ycor())
  292.             time.sleep(0.5)
  293.             return True
  294.         else:
  295.             return False
  296.  
  297.  
  298.  
  299.  
  300.     spieler=Spieler()
  301.     grenze=Grenze()
  302.     spiel=Spiel()
  303.     treibstoff=Treibstoff()
  304.     gameover=Gameover()
  305.     loch=Loch()
  306.  
  307.        
  308.     geschoss=Geschoss("square","red",0,0)
  309.     treibstoff.change_treibstoff()
  310.     spiel.change_score(0)
  311.     grenze.grenzemalen()
  312.  
  313.     trefferliste=[]
  314.     for i in range(4):
  315.         trefferliste.append(Treffer())
  316.  
  317.  
  318.     turtle.listen()
  319.     turtle.onkeypress(spieler.links,"Left")
  320.     turtle.onkeyrelease(spieler.stop,"Left")
  321.     turtle.onkeypress(spieler.rechts,"Right")
  322.     turtle.onkeyrelease(spieler.stop,"Right")
  323.     turtle.onkey(spieler.schneller,"Up")
  324.     turtle.onkey(spieler.langsamer,"Down")
  325.     turtle.onkey(geschoss.schießen,"space")
  326.     while True:
  327.         sf.update()
  328.         spieler.bewegen()
  329.         geschoss.move()
  330.         treibstoff.change_treibstoff()
  331.  
  332.         if kollisionloch(spieler,loch)==True:
  333.             spieler.setposition(random.randint(-610,610),random.randint(-300,300))
  334.             spieler.setheading(random.randint(1,360))
  335.             spieler.showturtle()
  336.        
  337.         for treffer in trefferliste:
  338.             treffer.bewegen()
  339.  
  340.                
  341.             if kollision(spieler,treffer)==True or kollision(geschoss,treffer)==True:
  342.                 geschoss.hideturtle()
  343.                 geschoss.goto(0,-360)
  344.                 treffer.hüpfen()
  345.                 spiel.change_score(10)
  346.                 spiel.sound()
  347.                 turtle.tracer(0)
  348.  
  349.             if kollision(treffer,loch)==True:
  350.                 treffer.setposition(random.randint(-610,610),random.randint(-300,300))
  351.                 treffer.setheading(random.randint(1,360))
  352.     mainloop()
  353.  
  354. hauptspiel()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement