from turtle import Turtle STARTING_POSITIONS = [(0, 0), (-20, 0), (-40, 0)] MOVE_DISTANCE = 20 UP = 90 DOWN = 270 LEFT = 180 RIGHT = 0 class Snake: def __init__(self): self.segments = [] self.create_snake() self.head = self.segments[0] def create_snake(self): for position in STARTING_POSITIONS: self.add_segment(position) def add_segment(self, position): segment = Turtle(shape="square") segment.color("white") segment.penup() segment.goto(position) self.segments.append(segment) def extend(self): # Add a new segment to the snake. self.add_segment(self.segments[-1].position()) def move(self): for segment_index in range(len(self.segments) - 1, 0, -1): new_x = self.segments[segment_index - 1].xcor() new_y = self.segments[segment_index - 1].ycor() self.segments[segment_index].goto(new_x, new_y) self.head.forward(MOVE_DISTANCE) def up(self): if self.head.heading() != DOWN: self.head.setheading(90) def down(self): if self.head.heading() != UP: self.head.setheading(270) def left(self): if self.head.heading() != RIGHT: self.head.setheading(180) def right(self): if self.head.heading() != LEFT: self.head.setheading(0)