bngtan

space invader with score storage

Mar 31st, 2019
357
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.77 KB | None | 0 0
  1. #Space Invaders
  2. #Sound (Mac0SX Only)
  3. from turtle import *
  4. import math
  5. import random
  6.  
  7. lstEmail = list()
  8. lst = list()
  9. idCount = 0
  10. bulletstate = "ready"
  11. class game:
  12. def __init__(self,name,score):
  13. self.name = name
  14. self.score = score
  15. self.record_name = []
  16. self.record_score = []
  17. def main(self):
  18.  
  19. xit = True
  20. while xit is True:
  21. print("\nWelcome to SPACE GUARDIAN")
  22. print("Press 1 to Play\nPress 2 to Highscore\nPress 3 to Save the Game\n")
  23.  
  24.  
  25. choice = input("\nEnter Choice: ")
  26. if choice == "1":
  27. print("\n")
  28. ui.Game()
  29. elif choice == "2":
  30. print("\n")
  31. ui.rank()
  32. elif choice == "3":
  33. print("\n")
  34. ui.record("")
  35. elif choice == "4":
  36. print("\nThanks for playing!")
  37. xit = False
  38. def record(self,name):
  39. self.name = input("Enter Username: ")
  40.  
  41. print("Name: %s"%self.name)
  42. print("Score: %d"%self.score)
  43. self.record_name.append(self.name)
  44. self.record_score.append(self.score)
  45. self.score = 0
  46. ui.main()
  47. def rank(self):
  48. print("~~~ H I G H S C O R E ~~~")
  49. for i in range(len(self.record_name)):
  50. print("Name: " + self.record_name[i])
  51. print("Score: %d" %self.record_score[i])
  52. print("\n")
  53. ui.main()
  54.  
  55.  
  56. bulletstate = "ready"
  57.  
  58. def Game(self):
  59.  
  60. #Set up screen
  61. wn = Screen()
  62. wn.bgcolor("black")
  63. wn.title("Space Invaders")
  64. wn.bgpic("space_invaders_background.gif")
  65.  
  66. #Register shapes
  67. wn.addshape("invader.gif")
  68. wn.addshape("player (2).gif")
  69. wn.addshape("knife.gif")
  70.  
  71. numofenemies =5
  72. enemies =[]
  73. print("-- 1 Easy\n-- 2 Medium\n-- 3 Hard\n ")
  74. cha = input("Enter Choice: ")
  75. if cha =="1":
  76. for i in range(10):
  77. enemies.append(Turtle())
  78. enemyspeed = 10
  79. elif cha =="2":
  80. for i in range(30):
  81. enemies.append(Turtle())
  82. enemyspeed = 15
  83. elif cha =="3":
  84. for i in range(50):
  85. enemies.append(Turtle())
  86. enemyspeed = 15
  87. #Draw border
  88. borderpen = Turtle()
  89. borderpen.speed(0)
  90. borderpen.color("white")
  91. borderpen.penup()
  92. borderpen.setposition(-300,-300)
  93. borderpen.pendown()
  94. borderpen.pensize(5)
  95. for side in range(4):
  96. borderpen.fd(600)
  97. borderpen.lt(90)
  98. borderpen.hideturtle()
  99.  
  100. self.score= 0
  101.  
  102. #display score
  103. scorepen = Turtle()
  104. scorepen.speed(0)
  105. scorepen.color("white")
  106. scorepen.penup()
  107. scorepen.setposition(-290,280)
  108. scorestring = "Score: %d" %self.score
  109. scorepen.write(scorestring,False,align="Left",font=("Arial", 14, "normal"))
  110. scorepen.hideturtle()
  111.  
  112. #Create player
  113. player = Turtle()
  114. player.color("blue")
  115. player.shape("player (2).gif")
  116. player.penup()
  117. player.speed(0)
  118. player.setposition(0, -250)
  119. player.setheading(90)
  120.  
  121. playerspeed = 25
  122.  
  123.  
  124. #Add enemies to list
  125.  
  126.  
  127. for goal in enemies:
  128. goal.shape("invader.gif")
  129. goal.penup()
  130. goal.speed(0)
  131. x = random.randint(-200,200)
  132. y = random.randint(100,250)
  133. goal.setposition(x,y)
  134.  
  135.  
  136.  
  137. #Bullet
  138. bullet = Turtle()
  139. bullet.color("yellow")
  140. bullet.shape("circle")
  141. bullet.penup()
  142. bullet.speed(0)
  143. bullet.setheading(90)
  144. bullet.shapesize(0.5,0.5)
  145. bullet.hideturtle()
  146.  
  147. bulletspeed = 90
  148.  
  149. #bulletstate
  150. #ready = to fire
  151. #fire = firing
  152. bulletstate = "ready"
  153. #Move player left to right
  154. def moveleft():
  155. x = player.xcor()
  156. x -= playerspeed
  157. if x < -280:
  158. x = - 280
  159. player.setx(x)
  160. def moveright():
  161. x = player.xcor()
  162. x += playerspeed
  163. if x > 280:
  164. x = 280
  165. player.setx(x)
  166.  
  167. def firebullet():
  168. #global bulletstate
  169. bulletstate = "ready"
  170. if bulletstate == "ready":
  171. bulletstate = "fire"
  172. #move bullet upward
  173. x =player.xcor()
  174. y= player.ycor()+10
  175. bullet.setposition(x,y)
  176. bullet.showturtle()
  177. def isCollision(t1,t2):
  178. distance = math.sqrt(math.pow(t1.xcor()-t2.xcor(),2)+ math.pow(t1.ycor()-t2.ycor(),2))
  179. if distance <15:
  180. return True
  181. else:
  182. return False
  183.  
  184. #Keyboard bindings
  185. wn.listen()
  186. wn.onkey(moveleft, "Left")
  187. wn.onkey(moveright, "Right")
  188. wn.onkey(firebullet, "space")
  189.  
  190. #game loop
  191. while True:
  192.  
  193. for enemy in enemies:
  194. #move enemy
  195. x= enemy.xcor()
  196. x += enemyspeed
  197. enemy.setx(x)
  198. #Boundary check
  199. if enemy.xcor() > 300 or enemy.xcor() < -300:
  200. print("GAME OVER")
  201. t1 = Pen()
  202. t1.pencolor("red")
  203. t1.hideturtle()
  204. t1.penup()
  205. t1.write("GAME OVER", align = "center", font=("Verdana", 45, "bold"))
  206. t1.setposition(0,-350)
  207. t1.penup()
  208.  
  209.  
  210. if enemy.ycor() > 300 or enemy.ycor() < -300:
  211. print("Game OVER")
  212. t1 = Pen()
  213. t1.pencolor("red")
  214. t1.hideturtle()
  215. t1.penup()
  216. t1.write("GAME OVER", align = "center", font=("Verdana", 45, "bold"))
  217. t1.setposition(0,-350)
  218. t1.penup()
  219. ui.repeat()
  220.  
  221. #Move enemy back and down
  222. if enemy.xcor() > 280:
  223. #enemy down
  224. for e in enemies:
  225. y = e.ycor()
  226. y -= 40
  227. e.sety(y)
  228. #change direction
  229. enemyspeed *= -1
  230. if enemy.xcor() < - 280:
  231. #enemy down
  232. for e in enemies:
  233. y = e.ycor()
  234. y -= 40
  235. e.sety(y)
  236. #change direction
  237. enemyspeed *= -1
  238. #check collision between bullet and enemy
  239. if isCollision(bullet, enemy):
  240. #reset bullet
  241. bullet.hideturtle()
  242. bulletstate = "ready"
  243. bullet.setposition(0,-400)
  244. #reset enemy
  245. x = random.randint(-200,200)
  246. y = random.randint(100,250)
  247. enemy.setposition(x,y)
  248.  
  249. #Update
  250. self.score += 10
  251. scorestring = "Score: %d" %self.score
  252. scorepen.clear()
  253. scorepen.write(scorestring, False, align="left", font=("Arial", 14, "normal"))
  254. print("Your score is", self.score)
  255.  
  256. #lst.append(Inorder)
  257. if isCollision(player,enemy):
  258. player.hideturtle()
  259. enemy.hideturtle()
  260. pen=Turtle()
  261. pen.hideturtle()
  262. pen.speed(0)
  263. pen.color("red")
  264. pen.penup()
  265. pen.goto(-200,0)
  266. pen.write("GAME OVER", font = ("Verdana 45 bold"))
  267. pen.clear()
  268. ui.repeat()
  269.  
  270.  
  271. # move bullet
  272. if bulletstate == "fire":
  273. y = bullet.ycor()
  274. y += bulletspeed
  275. bullet.sety(y)
  276.  
  277. #Check bullet disapperance
  278. if bullet.ycor() > 275:
  279. bullet.hideturtle()
  280. bulletstate = "ready"
  281.  
  282.  
  283. delay = raw_input("Press enter to finish")
  284.  
  285.  
  286. def repeat(self):
  287. again = input("\n WANNA PLAY AGAIN\nY - YES\nN - NO\n")
  288. if again == 'Y':
  289.  
  290. ui.main()
  291.  
  292. elif again == 'N':
  293. quit()
  294.  
  295.  
  296.  
  297. ui = game("User", 0)
  298. ui.main()
Advertisement
Add Comment
Please, Sign In to add comment