bmm115

space invaders

Dec 21st, 2018
46
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #Space Invaders
  2.  
  3. import os
  4. import turtle
  5. import math
  6. import random
  7.  
  8.  
  9. wn = turtle.Screen()
  10. wn.bgcolor("black")
  11. wn.title("Space Invaders")
  12.  
  13. #Draw border
  14. border_pen = turtle.Turtle()
  15. border_pen.speed(0)
  16. border_pen.color("green")
  17. border_pen.penup()
  18. border_pen.setposition(-300,-300)
  19. border_pen.pendown()
  20. border_pen.pensize(3)
  21. for side in range(4):
  22. border_pen.fd(600)
  23. border_pen.lt(90)
  24. border_pen.hideturtle()
  25.  
  26. #set score to 0
  27. score = 0
  28.  
  29. #draw score
  30. score_pen = turtle.Turtle()
  31. score_pen.speed(0)
  32. score_pen.color("white")
  33. score_pen.penup()
  34. score_pen.setposition(-290, 280)
  35. scorestring = "Score: %s" %score
  36. score_pen.write(scorestring, False, align="left", font=("Arial", 14, "normal"))
  37. score_pen.hideturtle()
  38.  
  39.  
  40. #create player
  41. player = turtle.Turtle()
  42. player.color("purple")
  43. player.shape("triangle")
  44. player.penup()
  45. player.speed(0)
  46. player.setposition(0, -250)
  47. player.setheading(90)
  48.  
  49. playerspeed = 25
  50.  
  51. #choose number of enemies
  52. number_of_enemies = 5
  53. #create an empty list of enemies
  54. enemies = []
  55.  
  56. #add enemies to list
  57. for i in range(number_of_enemies):
  58. #create the enemy
  59. enemies.append(turtle.Turtle())
  60.  
  61.  
  62. #create enemy
  63. for enemy in enemies:
  64. enemy.color("red")
  65. enemy.shape("circle")
  66. enemy.penup()
  67. enemy.speed(0)
  68. x = random.randint(-200, 200)
  69. y = random.randint(100, 250)
  70. enemy.setposition(x, y)
  71.  
  72. enemyspeed = 2
  73.  
  74.  
  75. #create bullet
  76. bullet = turtle.Turtle()
  77. bullet.color("yellow")
  78. bullet.shape("triangle")
  79. bullet.penup()
  80. bullet.speed(0)
  81. bullet.setheading(90)
  82. bullet.shapesize(0.5, 0.5)
  83. bullet.hideturtle()
  84.  
  85. bulletspeed = 20
  86.  
  87. #define bullet state
  88. #ready - ready to fire
  89. #fire - bullet is firing
  90. bulletstate = "ready"
  91.  
  92.  
  93.  
  94.  
  95.  
  96. #Move player left and right
  97. def move_left():
  98. x = player.xcor()
  99. x -= playerspeed
  100. if x < -280:
  101. x = - 280
  102. player.setx(x)
  103.  
  104. def move_right():
  105. x = player.xcor()
  106. x += playerspeed
  107. if x > 280:
  108. x = 280
  109. player.setx(x)
  110.  
  111. def fire_bullet():
  112. #declare bulletstate as global
  113. global bulletstate
  114. if bulletstate == "ready":
  115. bulletstate = "fire"
  116. #move bullet
  117. x = player.xcor()
  118. y= player.ycor() + 10
  119. bullet.setposition(x, y)
  120. bullet.showturtle()
  121.  
  122. def isCollision(t1, t2):
  123. distance = math.sqrt(math.pow(t1.xcor()-t2.xcor(),2)+math.pow(t1.ycor()-t2.ycor(),2))
  124. if distance < 15:
  125. return True
  126. else:
  127. return False
  128.  
  129.  
  130.  
  131. #create keyboard bindings
  132. turtle.listen()
  133. turtle.onkey(move_left, "Left")
  134. turtle.onkey(move_right, "Right")
  135. turtle.onkey(fire_bullet, "space")
  136.  
  137.  
  138. #maiin game loop
  139. while True:
  140. for enemy in enemies:
  141. #move enemy
  142. x = enemy.xcor()
  143. x += enemyspeed
  144. enemy.setx(x)
  145.  
  146. #move enemy back and forth
  147. if enemy.xcor() > 280:
  148. for e in enemies:
  149. y = e.ycor()
  150. y -= 40
  151. e.sety(y)
  152. enemyspeed *= -1
  153.  
  154. if enemy.xcor() < -280:
  155. for e in enemies:
  156. y = e.ycor()
  157. y -= 40
  158. e.sety(y)
  159. enemyspeed *= -1
  160.  
  161. #check for a collision between the bullet and enemy
  162. if isCollision(bullet, enemy):
  163. #reset the bullet
  164. bullet.hideturtle()
  165. bulletstate = "ready"
  166. bullet.setposition(0, -400)
  167. #reset enemy
  168. x = random.randint(-200, 200)
  169. y = random.randint(100, 250)
  170. enemy.setposition(x, y)
  171. #Update score
  172. score += 10
  173. scorestring = "Score: %s" % score
  174. score_pen.clear()
  175. score_pen.write(scorestring, False, align="left", font=("Arial", 14, "normal"))
  176.  
  177. if isCollision(bullet, enemy):
  178. bullet.hideturtle()
  179. bulletstate = "ready"
  180. bullet.setposition(0, -400)
  181. #reset enemy
  182. enemy.setposition(-200, 250)
  183.  
  184. if isCollision(player, enemy):
  185. player.hideturtle()
  186. enemy.hideturtle()
  187. print ("Game Over Bitches!")
  188. break
  189.  
  190.  
  191. #move bullet
  192. if bulletstate == "fire":
  193. y = bullet.ycor()
  194. y += bulletspeed
  195. bullet.sety(y)
  196.  
  197. #check to see if bullet has gone to top
  198. if bullet.ycor() > 275:
  199. bullet.hideturtle()
  200. bulletstate = "ready"
  201.  
  202. turtle.done()
  203. dealy = input("Press Enter to finsih.")
Add Comment
Please, Sign In to add comment