Advertisement
Guest User

Untitled

a guest
Jan 20th, 2020
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.41 KB | None | 0 0
  1. from turtle import *
  2. import random
  3. import time
  4.  
  5. pipes = []
  6. scorePipes = []
  7. score = 0
  8. spacing = 200
  9. speed = 10
  10. gravity = 7
  11. lift = -50
  12. velocity = 0
  13.  
  14. window = Screen()
  15. def setupWindow():
  16. pipes = []
  17. width = 1000
  18. height = 750
  19. window.clearscreen()
  20. window.setup(width, height)
  21. window.tracer(0) # Turn off automatic window updates
  22. window.bgcolor("#ffffff")
  23. window.title("Flappy Bird")
  24. window.register_shape("pipe_up.gif")
  25. window.register_shape("pipe_down.gif")
  26. window.register_shape("bird.gif")
  27. window.register_shape("floor.gif")
  28. window.register_shape("bg.gif")
  29. setupWindow()
  30.  
  31. bg = Turtle()
  32. bg.speed(0)
  33. bg.penup()
  34. bg.shape("bg.gif")
  35. bg.goto(0, 0)
  36.  
  37. scoreTurtle = Turtle()
  38. scoreTurtle.speed(0)
  39. scoreTurtle.penup()
  40. scoreTurtle.hideturtle()
  41. scoreTurtle.goto(-475, 300)
  42.  
  43. bird = Turtle()
  44. bird.speed(0)
  45. bird.penup()
  46. bird.shape("bird.gif")
  47. bird.goto(-400, 0)
  48.  
  49. for i in range(3):
  50. for j in range(2):
  51. turtle = Turtle()
  52. if(j == 0):
  53. turtle.shape("pipe_down.gif")
  54. else:
  55. turtle.shape("pipe_up.gif")
  56. turtle.penup()
  57. turtle.turtlesize(100, 5);
  58. turtle.hideturtle()
  59. if(j == 1):
  60. pipes[i] = (pipes[i], turtle)
  61. scorePipes[i] = (scorePipes[i], turtle)
  62. else:
  63. pipes.append(turtle)
  64. scorePipes.append(turtle)
  65.  
  66. floor1 = Turtle()
  67. floor2 = Turtle()
  68. floor1.speed(0)
  69. floor2.speed(0)
  70. floor1.penup()
  71. floor2.penup()
  72. floor1.shape("floor.gif")
  73. floor2.shape("floor.gif")
  74. floor1.goto(-500, -400)
  75. floor2.goto(500, -400)
  76.  
  77. def newPipe(pipe):
  78. y = random.randint(880, 1290)
  79. x = 450 if pipe == pipes[0] else 0 if pipe == pipes[1] else 900
  80. pipe[0].goto(x, y)
  81. pipe[0].showturtle()
  82. pipe[1].goto(x, y - spacing - 2000)
  83. pipe[1].showturtle()
  84.  
  85. newPipe(pipes[0])
  86. newPipe(pipes[1])
  87. newPipe(pipes[2])
  88.  
  89. def jump():
  90. global velocity
  91. if(velocity > 3):
  92. velocity = 3
  93. velocity += lift
  94.  
  95. def checkPipes():
  96. rightPipe = 0
  97. leftPipe = 0
  98. for p in pipes:
  99. if(p[0].xcor() > pipes[rightPipe][0].xcor()):
  100. rightPipe = pipes.index(p)
  101. if(p[0].xcor() < pipes[leftPipe][0].xcor()):
  102. leftPipe = pipes.index(p)
  103.  
  104. if pipes[leftPipe] in scorePipes and scorePipes[scorePipes.index(pipes[leftPipe])][0].xcor() < -350:
  105. global score
  106. score += 1
  107. scorePipes.remove(scorePipes[scorePipes.index(pipes[leftPipe])])
  108.  
  109. for p in pipes:
  110. if p[0].xcor() < -552:
  111. y = random.randint(880, 1290)
  112. p[0].setx(pipes[rightPipe][0].xcor() + 450)
  113. p[1].setx(pipes[rightPipe][0].xcor() + 450)
  114. p[0].sety(y)
  115. p[1].sety(y - spacing - 2000)
  116. scorePipes.append(p)
  117.  
  118. if pipes[leftPipe][0].xcor() <= -330 and pipes[leftPipe][0].xcor() >= -500 and ((bird.ycor() > pipes[leftPipe][0].ycor() - 1000 and bird.ycor() > pipes[leftPipe][0].ycor() - 1020) or (bird.ycor() < pipes[leftPipe][1].ycor() + 1000 and bird.ycor() < pipes[leftPipe][1].ycor() + 1020)):
  119. reset()
  120.  
  121. def reset():
  122. window.clear()
  123. setupWindow()
  124. global pipes
  125. global scorePipes
  126. global bird
  127. global score
  128. global velocity
  129. global floor1
  130. global floor2
  131. global bg
  132. global scoreTurtle
  133. bg = Turtle()
  134. bg.speed(0)
  135. bg.penup()
  136. bg.shape("bg.gif")
  137. bg.goto(0, 0)
  138. scoreTurtle = Turtle()
  139. scoreTurtle.speed(0)
  140. scoreTurtle.penup()
  141. scoreTurtle.hideturtle()
  142. scoreTurtle.goto(-475, 300)
  143. velocity = 0
  144. pipes = []
  145. scorePipes = []
  146. bird = Turtle()
  147. bird.speed(0)
  148. bird.penup()
  149. bird.shape("bird.gif")
  150. bird.goto(-400, 0)
  151. bird.goto(-400, 0)
  152. for i in range(3):
  153. for j in range(2):
  154. turtle = Turtle()
  155. if(j == 0):
  156. turtle.shape("pipe_down.gif")
  157. else:
  158. turtle.shape("pipe_up.gif")
  159. turtle.penup()
  160. turtle.turtlesize(100, 5);
  161. turtle.hideturtle()
  162. if(j == 1):
  163. pipes[i] = (pipes[i], turtle)
  164. scorePipes[i] = (scorePipes[i], turtle)
  165. else:
  166. pipes.append(turtle)
  167. scorePipes.append(turtle)
  168. newPipe(pipes[0])
  169. newPipe(pipes[1])
  170. newPipe(pipes[2])
  171. score = 0
  172. floor1 = Turtle()
  173. floor2 = Turtle()
  174. floor1.speed(0)
  175. floor2.speed(0)
  176. floor1.penup()
  177. floor2.penup()
  178. floor1.shape("floor.gif")
  179. floor2.shape("floor.gif")
  180. floor1.goto(-500, -400)
  181. floor2.goto(500, -400)
  182. window.listen()
  183. window.onkeypress(jump, "space")
  184. time.sleep(2)
  185.  
  186. def updateScore():
  187. scoreTurtle.clear()
  188. scoreTurtle.write(score, font=("Arial", 50, "normal"))
  189.  
  190. window.listen()
  191. window.onkeypress(jump, "space")
  192.  
  193. while True:
  194. window.update()
  195.  
  196. velocity += gravity
  197. bird.sety(bird.ycor() - velocity)
  198.  
  199. for p in pipes:
  200. p[0].setx(p[0].xcor() - speed)
  201. p[1].setx(p[1].xcor() - speed)
  202. #floor1.setx(floor1.xcor() - speed)
  203. #floor2.setx(floor2.xcor() - speed)
  204. if floor1.xcor() < -1000:
  205. floor1.setx(floor2.xcor() + 1000)
  206. if floor2.xcor() < -1000:
  207. floor2.setx(floor2.xcor() + 1000)
  208. checkPipes()
  209. updateScore()
  210.  
  211. if bird.ycor() < -275:
  212. reset()
  213.  
  214. if velocity < -15:
  215. velocity = -15
  216.  
  217. time.sleep(0.05)
  218.  
  219. window.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement