Advertisement
Guest User

Star Dust (tutorial 5)

a guest
Nov 17th, 2018
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.92 KB | None | 0 0
  1. #Star Dust
  2. import turtle
  3. import os
  4. import math
  5.  
  6. #Set up the screen
  7. wn = turtle.Screen()
  8. wn.tracer(0)
  9. wn.bgcolor("black") #space
  10. wn.title("Star Dust")
  11.  
  12. #Draw border
  13. border_pen = turtle.Turtle()
  14. border_pen.speed(0)
  15. border_pen.color("white") #border color
  16. border_pen.penup()
  17. border_pen.setposition(-300, -300) #cor. system location
  18. border_pen.pendown()
  19. border_pen.pensize(3) #border size
  20. for side in range(4):
  21.     border_pen.fd(600) #forward 600 degrees
  22.     border_pen.lt(90) #left 90 degrees
  23. border_pen.hideturtle()
  24.  
  25. #Create the player turtle
  26. player = turtle.Turtle()
  27. player.color("silver") #turtle color
  28. player.shape("triangle") #turtle shape
  29. player.penup()
  30. player.speed(0) #max speed
  31. player.setposition(0, -250) #1st position
  32. player.setheading(90) #90 = up
  33.  
  34. playerspeed = 15 #best speed option
  35.  
  36. #Create the enemy
  37. enemy = turtle.Turtle()
  38. enemy.color("red")
  39. enemy.shape("circle")
  40. enemy.penup() #no drawing on screen
  41. enemy.speed(0)
  42. enemy.setposition(-200, 250) #starting pos. not a necessity
  43.  
  44. enemyspeed = 0.35
  45.  
  46. #Create the turtle's bullet
  47. bullet = turtle.Turtle()
  48. bullet.color("yellow")
  49. bullet.shape("square")
  50. bullet.penup()
  51. bullet.speed(0)
  52. bullet.setheading(90) #bullet's heading
  53. bullet.shapesize(0.25, 0.25) #dimensions of the bullet
  54. bullet.hideturtle() #hides bullet when game is started
  55.  
  56. bulletspeed = 1.5
  57.  
  58. #Define bullet state(s)
  59. #ready - ready to fire
  60. #fire - bullet is firing
  61. bulletstate = "ready" #bullet state when game is started
  62.  
  63. #Move the player turtle left and right
  64. def move_left(): #left function
  65.     x = player.xcor() #x = turtle x
  66.     x -= playerspeed #negative movement
  67.     if x < - 285:
  68.         x = - 285
  69.     player.setx(x) #sets x to x(turtle)
  70.  
  71. def move_right(): #right function
  72.     x = player.xcor()
  73.     x += playerspeed #positive movement
  74.     if x > 285:
  75.         x = 285
  76.     player.setx(x)
  77.    
  78. def fire_bullet():
  79.     #Declare bullet state as a global
  80.     global bulletstate
  81.     if bulletstate == "ready":
  82.         bulletstate = "fire"
  83.         #Move the bullet just above the player upon start
  84.         x = player.xcor()
  85.         y = player.ycor()   +10 #10 pixels above turtle
  86.         bullet.setposition(x, y)
  87.         bullet.showturtle()
  88.        
  89. def isCollision(t1, t2):
  90.     distance = math.sqrt(math.pow(t1.xcor() - t2.xcor(), 2) + math.pow(t1.ycor()- t2.ycor(), 2))
  91.     if distance < 15: #15 or any
  92.         return True
  93.     else:
  94.         return False
  95.  
  96. #Create keyboard bindings
  97. turtle.listen() #listen for keyword actions
  98. turtle.onkey(move_left, "Left")
  99. turtle.onkey(move_right, "Right")
  100. turtle.onkey(fire_bullet, "space")
  101.  
  102. #Main game loop
  103. while True:
  104.     wn.update()
  105.     #Move the enemy
  106.     x = enemy.xcor() #cor. position of enemy(starting)
  107.     x += enemyspeed #enemy moves alone with this speed
  108.     enemy.setx(x) #set enemy as that x
  109.  
  110.     #Move the enemy back and down
  111.     if enemy.xcor() > 285:
  112.         y = enemy.ycor()
  113.         y -= 70 #when enemy hits boundary, drop down 40px
  114.         enemyspeed *=-1 #when touching boundary, turn negative to reverse
  115.         enemy.sety(y) #set y pos. to y(enemy)
  116.        
  117.     if enemy.xcor() < - 285:
  118.         y = enemy.ycor()
  119.         y -= 70
  120.         enemyspeed *= -1
  121.         enemy.sety(y)
  122.        
  123.     #Move the bullet
  124.     y = bullet.ycor()
  125.     y += bulletspeed
  126.     bullet.sety(y)
  127.     if bulletstate == "fire":
  128.         y = bullet.ycor()
  129.         y += bulletspeed
  130.         bullet.sety(y)
  131.            
  132.     #Check to see if bullet hit boundary
  133.     if bullet.ycor() > 282.5:
  134.         bullet.hideturtle() #hides bullet if it crosses boundary
  135.         bullet.sety(-240)
  136.         bulletstate = "ready" #when it does, it switches to 'ready' state
  137.        
  138.     if isCollision(bullet, enemy):
  139.         #Reset the bullet
  140.         bullet.hideturtle() #if hit enemy, hide bullet
  141.         bulletstate = "ready" #when enemy hit, ready another bullet
  142.         bullet.setposition(-600, -600) #move bullet offscreen(bc. hidden bullet still impacts)
  143.         #Reset the enemy
  144.         enemy.setposition(-200, 250) #when killed, spawn another on this cor.
  145.        
  146.     if isCollision(player, enemy):
  147.         player.hideturtle()
  148.         enemy.hideturtle()
  149.         print("GAME OVER")
  150.         break #breaks the main loop(ends the game)
  151.            
  152.            
  153.            
  154.            
  155.            
  156. turtle.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement