Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import turtle
- import random
- WIDTH = 500
- HEIGHT = 500
- DELAY = 200 # milliseconds
- def move_snake():
- for index in range(len(segments) - 1, 0, -1):
- x = segments[index - 1].xcor()
- y = segments[index - 1].ycor()
- segments[index].goto(x, y)
- # Move segment 0 to where the head is
- if len(segments) > 0:
- x = head.xcor()
- y = head.ycor()
- segments[0].goto(x, y)
- if head.direction == "up":
- head.sety(head.ycor() + 20)
- elif head.direction == "right":
- head.setx(head.xcor() + 20)
- elif head.direction == "down":
- head.sety(head.ycor() - 20)
- elif head.direction == "left":
- head.setx(head.xcor() - 20)
- def check_food_collision():
- if head.distance(food) < 15:
- x = random.randint(- WIDTH / 2 + 10, WIDTH / 2 - 10)
- y = random.randint(- HEIGHT / 2 + 10, HEIGHT / 2 - 10)
- food.goto(x, y)
- # Add new segment
- new_segment = turtle.Turtle()
- new_segment.shape("square")
- new_segment.color("cyan")
- new_segment.penup()
- segments.append(new_segment)
- def check_head_collision():
- self_collision = False
- for segment in segments:
- if segment.distance(head) < 20:
- head.goto(0, 0)
- head.direction = "stop"
- self_collision = True
- if self_collision:
- new_game()
- def go_up():
- if head.direction != "down":
- head.direction = "up"
- def go_right():
- if head.direction != "left":
- head.direction = "right"
- def go_down():
- if head.direction != "up":
- head.direction = "down"
- def go_left():
- if head.direction != "right":
- head.direction = "left"
- def new_game():
- global head, food, segments
- # Set up screen
- screen.clear()
- screen.bgcolor("pink")
- screen.tracer(0)
- # Event handlers
- screen.listen()
- screen.onkey(go_up, "Up")
- screen.onkey(go_right, "Right")
- screen.onkey(go_down, "Down")
- screen.onkey(go_left, "Left")
- # Snake head
- head = turtle.Turtle()
- head.speed(0)
- head.shape("square")
- head.color("black")
- head.penup()
- head.goto(100, 100)
- # Food
- food = turtle.Turtle()
- food.shape("circle")
- food.color("red")
- food.shapesize(10 / 20)
- food.penup()
- segments = []
- head.direction = "up"
- def game_loop():
- move_snake()
- check_head_collision()
- check_food_collision()
- screen.update()
- turtle.ontimer(game_loop, DELAY)
- # Initialise screen
- screen = turtle.Screen()
- screen.title("Snake Game")
- screen.setup(500, 500)
- # Let's go!
- new_game()
- game_loop()
- turtle.done()
Advertisement
Add Comment
Please, Sign In to add comment