Advertisement
Guest User

Untitled

a guest
Apr 24th, 2018
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.25 KB | None | 0 0
  1. import turtle
  2. import math
  3. import random
  4. import time
  5. import winsound
  6. window = turtle.Screen()
  7. window.bgpic("title screen.gif")
  8. window.title("Nerd Chase")
  9. window.bgcolor("black")
  10. window.setup(700,700)
  11. window.tracer(0)
  12. time.sleep(4)
  13. window.bgpic("")
  14. winsound.PlaySound("Off Limits.wav", winsound.SND_ASYNC)
  15.  
  16. #Sprites
  17. images = ["nerd_right.gif", "nerd_left.gif", "arcade.gif", "wall.gif", "blob_left.gif",
  18. "blob_right.gif", "title screen.gif", "easter-egg.gif"]
  19. for image in images:
  20. turtle.register_shape(image)
  21.  
  22. #Create Pen object
  23. class Pen(turtle.Turtle):
  24. def __init__(self):
  25. turtle.Turtle.__init__(self)
  26. self.shape("square")
  27. self.color("white")
  28. self.penup()
  29. self.speed(0)
  30.  
  31. #Create player class
  32. class Player(turtle.Turtle):
  33. def __init__(self):
  34. turtle.Turtle.__init__(self)
  35. self.shape("nerd_right.gif")
  36. self.color("blue")
  37. self.penup()
  38. self.speed(0)
  39. self.points = 0
  40.  
  41. def go_up(self):
  42. #calc spot to go to
  43. move_to_x = self.xcor()
  44. move_to_y = self.ycor() + 24
  45.  
  46. #check if wall detected
  47. if (move_to_x, move_to_y) not in walls:
  48. self.goto(move_to_x, move_to_y)
  49.  
  50. def go_down(self):
  51. #calc spot to go to
  52. move_to_x = self.xcor()
  53. move_to_y = self.ycor() - 24
  54.  
  55. #check if wall detected
  56. if (move_to_x, move_to_y) not in walls:
  57. self.goto(move_to_x, move_to_y)
  58.  
  59. def go_left(self):
  60. #calc spot to go to
  61. move_to_x = self.xcor() - 24
  62. move_to_y = self.ycor()
  63.  
  64. #check if wall detected
  65. if (move_to_x, move_to_y) not in walls:
  66. self.goto(move_to_x, move_to_y)
  67.  
  68. self.shape("nerd_left.gif")
  69.  
  70.  
  71. def go_right(self):
  72. #calc spot to go to
  73. move_to_x = player.xcor()+ 24
  74. move_to_y = player.ycor()
  75.  
  76. self.shape("nerd_right.gif")
  77.  
  78. #check if wall detected
  79. if (move_to_x, move_to_y) not in walls:
  80. self.goto(move_to_x, move_to_y)
  81.  
  82. #Checks for a collision between Arcade and player, Pythag theorem
  83. def is_collision(self, other):
  84. a = self.xcor()-other.xcor()
  85. b = self.ycor()-other.ycor()
  86. distance = math.sqrt((a ** 2) + (b ** 2) )
  87.  
  88. if distance < 5:
  89. return True
  90. else:
  91. return False
  92.  
  93. #Create Arcade class(reward)
  94. class Arcade(turtle.Turtle):
  95. def __init__(self, x, y):
  96. turtle.Turtle.__init__(self)
  97. self.shape("arcade.gif")
  98. self.color("green")
  99. self.penup()
  100. self.speed(0)
  101. self.points = 100
  102. self.goto(x, y)
  103.  
  104. #Moving arcade off screen, hiding it
  105. def destroy(self):
  106. self.goto(2000, 2000)
  107. self.hideturtle()
  108.  
  109. #Blob class
  110. class Enemy(turtle.Turtle):
  111. def __init__(self, x, y):
  112. turtle.Turtle.__init__(self)
  113. self.shape("blob_left.gif")
  114. self.color("red")
  115. self.penup()
  116. self.speed(0)
  117. self.points = 20
  118. self.goto(x, y)
  119. self.direction = random.choice(["up", "down", "left", "right"])
  120.  
  121. def move(self):
  122. if self.direction == "up":
  123. dx = 0
  124. dy = 24
  125. elif self.direction == "down":
  126. dx = 0
  127. dy = -24
  128. elif self.direction == "left":
  129. dx = -24
  130. dy = 0
  131. self.shape("blob_left.gif")
  132. elif self.direction == "right":
  133. dx = 24
  134. dy = 0
  135. self.shape("blob_right.gif")
  136. else:
  137. dx = 0
  138. dy = 0
  139.  
  140. #Calc spot to go to
  141. move_to_x = self.xcor() + dx
  142. move_to_y = self.ycor() + dy
  143.  
  144. #check if wall detected
  145. if (move_to_x, move_to_y) not in walls:
  146. self.goto(move_to_x, move_to_y)
  147. else:
  148. #choose another direction
  149. self.direction = random.choice(["up", "down", "left", "right"])
  150.  
  151. #set timer(miliseconds)
  152. turtle.ontimer(self.move, t=random.randint(100, 300))
  153.  
  154. def destroy(self):
  155. self.goto(2000, 2000)
  156. self.hideturtle()
  157.  
  158. def is_close(self, other):
  159. a = self.xcor()-other.xcor()
  160. b = self.ycor()-other.ycor()
  161. distance = math.sqrt((a ** 2) + (b ** 2) )
  162.  
  163. if distance < 100:
  164. return True
  165. else:
  166. return False
  167.  
  168. #Check is the player is in proximity to blob
  169. # If it is then follow
  170. if self.is_close(player):
  171. if player.xcor() < self.xcor():
  172. self.direction = "left"
  173. elif player.xcor() > self.xcor():
  174. self.direction = "right"
  175. elif player.ycor() < self.ycor():
  176. self.direction = "down"
  177. elif player.ycor() > self.ycor():
  178. self.direction = "up"
  179.  
  180. class Egg(turtle.Turtle):
  181. def __init__(self, x, y):
  182. turtle.Turtle.__init__(self)
  183. self.shape("easter-egg.gif")
  184. self.color("yellow")
  185. self.penup()
  186. self.speed(0)
  187. self.points = 100,000
  188. self.goto(x, y)
  189.  
  190. #Moving arcade off screen, hiding it
  191. def destroy(self):
  192. self.goto(2000, 2000)
  193. self.hideturtle()
  194.  
  195. #Create list for the levels
  196. levels = [""]
  197.  
  198. #first level
  199. level_1 = [
  200. "XXXXXXXXXXXXXXXXXXXXXXXXX",
  201. "XP XXXXXXX XXXXX",
  202. "X XXXXXXX A XXXXX",
  203. "X XX XXXXXX XXXXX",
  204. "XB XX XXX XX",
  205. "XXXXXX XX XXXB XX",
  206. "XXXXXX XX XXXXXX XXXXX",
  207. "XXXXXX XX XXXXXX XXXXX",
  208. "X XXX BXXXX XXXXX",
  209. "X XXX XXXXXXXXXXXXXXXXX",
  210. "X XXXXXXXXXXXX ",
  211. "XB XXXXXXXXXXX",
  212. "XXXXXXXXXXXXX XXXXX X",
  213. "XXXXXXXXXXXXXX XXX AX",
  214. "XXX XXXXXXX XXX",
  215. "XXXXXXXXXXXXXX X",
  216. "XXX XXXXXXXXX X",
  217. "XXX X",
  218. "XXXB B XXA X",
  219. "XX XXXXXXXXXXXXXX X X",
  220. "XXX XXXXXXXXXXXXXX X X",
  221. "XXXXX XXXXXXXXXXXXX XXXX",
  222. "XXXX XXXXX X",
  223. "XXXXXXXXXXXXXXXXXXXXXXXXX"
  224. ]
  225.  
  226. level_2 = [
  227. "XXXXXXXXXXXXXXXXXXXXXXXXX",
  228. "XXXXXXXXXXXXXXXXXXXXXXXXX",
  229. "XXXXXXXXXXXXXXXXXXXXXXXXX",
  230. "XXXXXXXXXXXXXXXXXXXXXXXXX",
  231. "XXXXXXXXXXXXXXXXXXXXXXXXX",
  232. "XXXXXXXXXXXXXXXXXXXXXXXXX",
  233. "XXXXXXXXXXXXXXXXXXXXXXXXX",
  234. "XXXXXXXXXXXXXXXXXX XXXXX",
  235. "X X",
  236. "X X",
  237. "X X",
  238. "X X",
  239. "XXXXXXXXXXXXXXXXXXXXXXXXX",
  240. "XXXXXXXXXXXXXX XXX X",
  241. "XXX XXXXXXX XXX",
  242. "XXXXXXXXXXXXXX X",
  243. "XXX XXXXXXXXX X",
  244. "XXX X",
  245. "XXX X XX X",
  246. "XX XXXXXXXXXXXXXX X X",
  247. "XXX XXXXXXXXXXXXXX X X",
  248. "XXXXX XXXXXXXXXXXXX XXXX",
  249. "XXXX XXXXX X",
  250. "XXXXXXXXXXXXXXXXXXXXXXXXX"
  251.  
  252.  
  253. #Add an arcade list
  254. arcades = []
  255.  
  256. #enemy list
  257. enemies = []
  258.  
  259. #egg list
  260. eggs = []
  261.  
  262. #Add maze to list
  263. levels.append(level_1)
  264.  
  265. #Create function for levels
  266. def setup_maze(level):
  267. for y in range(len(level)):
  268. for x in range(len(level[y])):
  269. #Get value at each (x,y) coord
  270. # switch places as we set up the list
  271. character = level[y][x]
  272. screen_x = -288 + (x * 24)
  273. screen_y = 288 - (y * 24)
  274.  
  275. #Check if "X"
  276. if character == "X":
  277. pen.goto(screen_x,screen_y)
  278. pen.shape("wall.gif")
  279. pen.stamp()
  280. #Add coord to wall list
  281. walls.append((screen_x, screen_y))
  282.  
  283. #Check if it is Player
  284. if character == "P":
  285. player.goto(screen_x,screen_y)
  286.  
  287. #Check if it is A (Arcade)
  288. if character == "A":
  289. arcades.append(Arcade(screen_x, screen_y))
  290.  
  291. #Check if "B" (blob creature)
  292. if character == "B":
  293. enemies.append(Enemy(screen_x, screen_y))
  294.  
  295. if character == "E":
  296. eggs.append(Egg(screen_x, screen_y))
  297.  
  298.  
  299. #These are class instances
  300. pen = Pen()
  301. player = Player()
  302.  
  303. #Create wall coord list
  304. walls = []
  305.  
  306. #Set up level
  307. setup_maze(levels[1])
  308. setup_maze(levels[2])
  309.  
  310. #Keys
  311. turtle.listen()
  312. turtle.onkey(player.go_left, "Left")
  313. turtle.onkey(player.go_right, "Right")
  314. turtle.onkey(player.go_up, "Up")
  315. turtle.onkey(player.go_down, "Down")
  316.  
  317. #turn off updates
  318. window.tracer(0)
  319.  
  320. #Moving blobs
  321. for enemy in enemies:
  322. turtle.ontimer(enemy.move, t=250)
  323.  
  324. #Game loop
  325. while True:
  326. #Check collisions
  327. #Iterate Arcade list
  328. for arcade in arcades:
  329. if player.is_collision(arcade):
  330. #Add points from arcade to player
  331. player.points += arcade.points
  332. print ("You received: {} points".format(player.points))
  333. #destroy arcade
  334. arcade.destroy()
  335. #Remove arcade from list
  336. arcades.remove(arcade)
  337.  
  338. #If player interacts with enemy
  339. for enemy in enemies:
  340. if player.is_collision(enemy):
  341. print ("You died!")
  342.  
  343. for egg in eggs:
  344. if player.is_collsion(egg):
  345. player.points += arcade.points
  346. print ("You received: {} points".format(player.points))
  347.  
  348.  
  349. window.update()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement