Snake Game
Snake Game
Snake Game
import time
import random
# Initialize Screen
wn = turtle.Screen()
wn.title("Snake Game")
wn.bgcolor("green")
wn.setup(width=600, height=600)
wn.tracer(0)
# Snake
class Snake:
def __init__(self):
self.segments = []
self.create_snake()
self.head = self.segments[0]
def create_snake(self):
for i in range(6):
self.add_segment()
def add_segment(self):
segment = turtle.Turtle()
segment.speed(0)
segment.shape("square")
segment.color("orange")
segment.penup()
self.segments.append(segment)
def move(self):
for i in range(len(self.segments) - 1, 0, -1):
self.segments[i].goto(self.segments[i - 1].position())
self.segments[0].forward(20)
# Food
class Food:
def __init__(self):
self.create_food()
def create_food(self):
self.food = turtle.Turtle()
self.food.speed(0)
self.food.shape("circle")
self.food.color("red")
self.food.penup()
self.food.goto(random.randint(-270, 270), random.randint(-270, 270))
def refresh(self):
self.food.goto(random.randint(-270, 270), random.randint(-270, 270))
# Scoreboard
class Scoreboard:
def __init__(self):
self.score = 0
self.high_score = 0
self.pen = turtle.Turtle()
self.pen.speed(0)
self.pen.color("white")
self.pen.penup()
self.pen.hideturtle()
self.pen.goto(0, 260)
self.update_scoreboard()
def update_scoreboard(self):
self.pen.clear()
self.pen.write(
"Score: {} High Score: {}".format(self.score, self.high_score),
align="center",
font=("Arial", 24, "bold"),
)
def increase_score(self):
self.score += 10
if self.score > self.high_score:
self.high_score = self.score
self.update_scoreboard()
def move_down():
if snake.head.direction != "up":
snake.head.direction = "down"
def move_left():
if snake.head.direction != "right":
snake.head.direction = "left"
def move_right():
if snake.head.direction != "left":
snake.head.direction = "right"
# Game Loop
snake = Snake()
food = Food()
scoreboard = Scoreboard()
delay = 0.1
wn.listen()
wn.onkeypress(move_up, "w")
wn.onkeypress(move_down, "s")
wn.onkeypress(move_left, "a")
wn.onkeypress(move_right, "d")
while True:
wn.update()
# Move Snake
snake.move()
# Check food.refresh()
s20:
food.refresh().head.xcor()refresh() for Collision
withnake.add_segment.distance(food.food) <
snake.add_segment < -2 Wall
if (
snake.add_segment()
()
scoreboard.increase_score20:
food.refresh()
()
scoreboard.increase.distance(food.food) < 20:
food.refresh() snake.head.xcor() > 90
or snake.head. scoreboard.increase_score() snake.add_segment()
score()
# Check for0
):
time.sleep(1)
snake.reset()
scoreboard.reset()
# snake.reset()
scoreboard.reset()
time.sleep(delay)
wn.mainloop()