Guest User

Untitled

a guest
Apr 6th, 2020
440
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.69 KB | None | 0 0
  1. import turtle
  2. import random
  3.  
  4. WIDTH = 500
  5. HEIGHT = 500
  6. DELAY = 200 # milliseconds
  7.  
  8. def move_snake():
  9. for index in range(len(segments) - 1, 0, -1):
  10. x = segments[index - 1].xcor()
  11. y = segments[index - 1].ycor()
  12. segments[index].goto(x, y)
  13.  
  14. # Move segment 0 to where the head is
  15. if len(segments) > 0:
  16. x = head.xcor()
  17. y = head.ycor()
  18. segments[0].goto(x, y)
  19.  
  20. if head.direction == "up":
  21. head.sety(head.ycor() + 20)
  22. elif head.direction == "right":
  23. head.setx(head.xcor() + 20)
  24. elif head.direction == "down":
  25. head.sety(head.ycor() - 20)
  26. elif head.direction == "left":
  27. head.setx(head.xcor() - 20)
  28.  
  29. def check_food_collision():
  30. if head.distance(food) < 15:
  31. x = random.randint(- WIDTH / 2 + 10, WIDTH / 2 - 10)
  32. y = random.randint(- HEIGHT / 2 + 10, HEIGHT / 2 - 10)
  33. food.goto(x, y)
  34.  
  35. # Add new segment
  36. new_segment = turtle.Turtle()
  37. new_segment.shape("square")
  38. new_segment.color("cyan")
  39. new_segment.penup()
  40. segments.append(new_segment)
  41.  
  42. def check_head_collision():
  43. self_collision = False
  44. for segment in segments:
  45. if segment.distance(head) < 20:
  46. head.goto(0, 0)
  47. head.direction = "stop"
  48. self_collision = True
  49.  
  50. if self_collision:
  51. new_game()
  52.  
  53. def go_up():
  54. if head.direction != "down":
  55. head.direction = "up"
  56.  
  57. def go_right():
  58. if head.direction != "left":
  59. head.direction = "right"
  60.  
  61. def go_down():
  62. if head.direction != "up":
  63. head.direction = "down"
  64.  
  65. def go_left():
  66. if head.direction != "right":
  67. head.direction = "left"
  68.  
  69. def new_game():
  70. global head, food, segments
  71. # Set up screen
  72. screen.clear()
  73. screen.bgcolor("pink")
  74. screen.tracer(0)
  75.  
  76. # Event handlers
  77. screen.listen()
  78. screen.onkey(go_up, "Up")
  79. screen.onkey(go_right, "Right")
  80. screen.onkey(go_down, "Down")
  81. screen.onkey(go_left, "Left")
  82.  
  83. # Snake head
  84. head = turtle.Turtle()
  85. head.speed(0)
  86. head.shape("square")
  87. head.color("black")
  88. head.penup()
  89. head.goto(100, 100)
  90.  
  91. # Food
  92. food = turtle.Turtle()
  93. food.shape("circle")
  94. food.color("red")
  95. food.shapesize(10 / 20)
  96. food.penup()
  97. segments = []
  98. head.direction = "up"
  99.  
  100.  
  101. def game_loop():
  102. move_snake()
  103. check_head_collision()
  104. check_food_collision()
  105. screen.update()
  106. turtle.ontimer(game_loop, DELAY)
  107.  
  108.  
  109. # Initialise screen
  110. screen = turtle.Screen()
  111. screen.title("Snake Game")
  112. screen.setup(500, 500)
  113.  
  114. # Let's go!
  115. new_game()
  116. game_loop()
  117. turtle.done()
Advertisement
Add Comment
Please, Sign In to add comment