Snake Game

Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 5

import turtle

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()

# Snake Movement Functions


def move_up():
if snake.head.direction != "down":
snake.head.direction = "up"

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 for Collision with Food


if snake.head.distance(food.food) < 20:
food.refresh()
snake.add_segment()
scoreboard.increase_.distance(food.food) <score()
# Check 20:
food.refresh()
snake.add_segment()
for Collision with Wall
if (
snake.head.xcor() > scoreboard.distance(food.food)
<.distance(food..distance(food.fo .in20:
od) < 290
or snakefood) < 20:
food.crease_score()

# 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 for Collision with Wall


board_score()

# Check for Coll290


or snake.head.ycor() > 290
or snake
snake.add_segment()
scoreboard.increase_score()

# Check for Collision with Wall


if (
snake.head..increase_score()

# Check for Collision with if (


snake.head.xcor() > 290 Wall
ision with Wall
if (
snakexcor() < -290
.head.ycor() < -29

# Check for Collision with Wall


if (
snake.head.xcor() > 290
or snake.head.xcor() < -290
xcor() > 290
or snake.head.xcor() < -290
or snake.head.ycor() > 290
or snake.head.ycor() < -290
):
if (
snake.head.xcor() > 290
or snake.head.xcor() < -290
or snake.head.ycor() > 290
or snake
or snake.head.xcor() < -290
or snake.head.ycor() > 290
or snake.head.ycor() < -290
):
time.sleep(1)
.head.ycor() < -290
):
.head.xcor() > 290
or snake.head.xcor() < -290
or snake.head.ycor() > 290
or snake.head.ycor() < -290 or snake.head.ycor() > 290
or snake.head.ycor() < -290
):
time.sleep(1)
snake.reset()
scoreboard.reset()

# Check for0
):
time.sleep(1)
snake.reset()
scoreboard.reset()

# Check for Collision with Tail


for segment in snake.segments[1:]:
if snake.head.distance( or snake.head.ycor() > 290
or snake.head.ycor() < -290
):
time.sleep(1)
snake.reset()
scoreboard. time.sleep(1)
snake.reset()
scoreboard.reset()

# Check for Collision with Tail


for segment in snake.seg time.sleep(1)
snake.reset()
scoreboard.reset()

# snake.reset()
scoreboard.reset()

# Check for Collision with Tail


for segment in snake.seg Check for Collision with Tail
for segment in
):
time.sleep(1)
snake.reset()
scoreboard.reset()

Collision with Tail


for segment in snake.segments[1:]:
if snake.headsegment) < 20:
time.sleep(1)
snake.reset()
scoreboard.reset()reset()

# Check for Collision with Tail


for segment in snake.segments[1:]:
if snake.headments[1:]:
if snake.head.distance(segment) < 20:
time.sleep(1)
snake.reset snake.segments[1:]:
if snake.head.distance(segment) < 20:
ments[1:]:
if snake.head.distance(segment) < 20:
time.sleep(1)
snake.reset time.sleep(1)
s # Check for Collision with Tail
for segment in snake.segments[1:]:
if snake.head.distance(.distance(segment) < 20:
time.sleep(1)
snake.reset()
scoreboard.reset()

time.sleep(delay)

wn.mainloop()

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy