Snakeprojectreport Code
Snakeprojectreport Code
A snake game is an arcade maze game which has been developed by Gremlin Industries and published
by Sega in October 1976. It is considered to be a skillful game and has been popularized among people
for generations. The snake in the Snake game is controlled using the four direction buttons relative to
the direction it is headed in. The player’s objective in the game is to achieve maximum points as
possible by collecting food or fruits. The player loses once the snake hits the wall or hits itself.
For the python beginners, those who are interested in making something easier in your domain can
definitely try this out and the module Turtle was made exactly for this purpose for the beginners to try
out and can also submit as a part of the project. This program will be done in Python 3.
So, we will be creating a Python-based-game using the following modules:
Turtle: It is a pre-installed python library that enables users to create shapes and pictures by
providing them with a virtual canvas.
Time: This function is used to count the number of seconds elapsed since the epoch.
Random: This function is used to generate random numbers in Python by using random module.
Support
VSCode can be used for this program. Install Python3 from extensions of VSCode. Then, save the
program in the form of your_filename.py
Below is the step-by-step Approach to create a Snake Game using Turtle module:
Step 1: We will be importing modules into the program and giving default values for the game.
Python3
import turtle
import time
import random
delay = 0.1
score = 0
high_score = 0
Step 2: Now, we will be creating the display of the game, i.e, the window screen for the game where
we will create the head of the snake and food for the snake in the game and displaying the scores at the
header of the game.
Python3
wn = turtle.Screen()
wn.title("Snake Game")
wn.bgcolor("blue")
wn.setup(width=600, height=600)
wn.tracer(0)
head = turtle.Turtle()
head.shape("square")
head.color("white")
head.penup()
head.goto(0, 0)
head.direction = "Stop"
# food in the game
food = turtle.Turtle()
food.speed(0)
food.shape(shapes)
food.color(colors)
food.penup()
food.goto(0, 100)
pen = turtle.Turtle()
pen.speed(0)
pen.shape("square")
pen.color("white")
pen.penup()
pen.hideturtle()
pen.goto(0, 250)
Output:
The initial score as the header, white: snake’s head, red: fruit
Step 3: Now, we will be validating the key for the snake’s movements. By clicking the keywords
normally used for gaming ‘w’, ‘a’, ‘s’ and ‘d’, we can operate the snake’s movements around the
screen.
Python3
def group():
if head.direction != "down":
head.direction = "up"
def godown():
if head.direction != "up":
head.direction = "down"
def goleft():
if head.direction != "right":
head.direction = "left"
def goright():
if head.direction != "left":
head.direction = "right"
def move():
if head.direction == "up":
y = head.ycor()
head.sety(y+20)
if head.direction == "down":
y = head.ycor()
head.sety(y-20)
if head.direction == "left":
x = head.xcor()
head.setx(x-20)
if head.direction == "right":
x = head.xcor()
head.setx(x+20)
wn.listen()
wn.onkeypress(group, "w")
wn.onkeypress(godown, "s")
wn.onkeypress(goleft, "a")
wn.onkeypress(goright, "d")
Step 4: Now, lastly, we will create the gameplay where the following will be happening:
The snake will grow its body when the snake eats the fruits.
Giving color to the snake’s tail.
After the fruit is eaten, the score will be counted.
Checking for the snake’s head collisions with the body or the wall of the window screen.
Restarting the game automatically from the start after the collision.
The new shape and color of the fruit will be introduced every time the window is restarted.
The score will be returned to zero and a high score will be retained until the window is not closed.
Python3
segments = []
# Main Gameplay
while True:
wn.update()
time.sleep(1)
head.goto(0, 0)
head.direction = "Stop"
segments.clear()
score = 0
delay = 0.1
pen.clear()
x = random.randint(-270, 270)
y = random.randint(-270, 270)
food.goto(x, y)
# Adding segment
new_segment = turtle.Turtle()
new_segment.speed(0)
new_segment.shape("square")
new_segment.penup()
segments.append(new_segment)
delay -= 0.001
score += 10
high_score = score
pen.clear()
x = segments[index-1].xcor()
y = segments[index-1].ycor()
segments[index].goto(x, y)
if len(segments) > 0:
x = head.xcor()
y = head.ycor()
segments[0].goto(x, y)
move()
time.sleep(1)
head.goto(0, 0)
head.direction = "stop"
segments.clear()
score = 0
delay = 0.1
pen.clear()
time.sleep(delay)
wn.mainloop()
import turtle
import time
import random
delay = 0.1
score = 0
high_score = 0
# Creating a window screen
wn = turtle.Screen()
wn.title("Snake Game")
wn.bgcolor("blue")
wn.setup(width=600, height=600)
wn.tracer(0)
head = turtle.Turtle()
head.shape("square")
head.color("white")
head.penup()
head.goto(0, 0)
head.direction = "Stop"
food = turtle.Turtle()
food.speed(0)
food.shape(shapes)
food.color(colors)
food.penup()
food.goto(0, 100)
pen = turtle.Turtle()
pen.speed(0)
pen.shape("square")
pen.color("white")
pen.penup()
pen.hideturtle()
pen.goto(0, 250)
def group():
if head.direction != "down":
head.direction = "up"
def godown():
if head.direction != "up":
head.direction = "down"
def goleft():
if head.direction != "right":
head.direction = "left"
def goright():
if head.direction != "left":
head.direction = "right"
def move():
if head.direction == "up":
y = head.ycor()
head.sety(y+20)
if head.direction == "down":
y = head.ycor()
head.sety(y-20)
if head.direction == "left":
x = head.xcor()
head.setx(x-20)
if head.direction == "right":
x = head.xcor()
head.setx(x+20)
wn.listen()
wn.onkeypress(group, "w")
wn.onkeypress(godown, "s")
wn.onkeypress(goleft, "a")
wn.onkeypress(goright, "d")
segments = []
# Main Gameplay
while True:
wn.update()
time.sleep(1)
head.goto(0, 0)
head.direction = "Stop"
segment.goto(1000, 1000)
segments.clear()
score = 0
delay = 0.1
pen.clear()
x = random.randint(-270, 270)
y = random.randint(-270, 270)
food.goto(x, y)
# Adding segment
new_segment = turtle.Turtle()
new_segment.speed(0)
new_segment.shape("square")
new_segment.penup()
segments.append(new_segment)
delay -= 0.001
score += 10
high_score = score
pen.clear()
x = segments[index-1].xcor()
y = segments[index-1].ycor()
segments[index].goto(x, y)
if len(segments) > 0:
x = head.xcor()
y = head.ycor()
segments[0].goto(x, y)
move()
time.sleep(1)
head.goto(0, 0)
head.direction = "stop"
segment.goto(1000, 1000)
segments.clear()
score = 0
delay = 0.1
pen.clear()
wn.mainloop()
Output:
Explanation
title() will set the desired title of the screen
setup() used to set the height and width of the screen
tracer(0) will turn off the screen update
bgcolor() will set the background color
forward() will use to move the turtle in a forwarding direction for a specified amount
right() used to turn the turtle clockwise and left() used to turn the turtle anticlockwise
penup() will not draw while its move
Explanation
Turtle() will be used to create a new turtle object
hideturtle() will use to hide the turtle
goto() used to move the turtle at x and y coordinates
4. Keyboard binding
Explanation
screen.listen() function listen when key will press.
If the Up key will press then the snake will move in up direction.
If the Down key is pressed then the snake will move in the down direction.
If Left key will press then the snake will move in left direction.
If the Right key will press then the snake will move in the right direction
Explanation
If the snake touches the border of the game then the game will over.
screen.clear() will delete all the drawing of the turtle on the screen