Pps Mini Project (Snake Game Python)
Pps Mini Project (Snake Game Python)
on
Submitted by
ABHISHEK CHERUKU (RA2311004010029)
SANDHA SAI TEJA (RA2311004010056)
Semester – II
Dr. B. Priyalakshmi
Assistant Professor, Department of ECE
of
April 2024
SRM INSTITUTE OF SCIENCE AND TECHNOLOGY
BONAFIDE CERTIFICATE
Certified that this activity report for the course 21CSS101J -PROGRAMMING FOR PROBLEM SOLVING is
the bonafide work of ABHISHEK CHERUKU (RA2311004010029) AND SANDHA SAI TEJA
SIGNATURE SIGNATURE
1 ABSTRACT
2 OBJECTIVE
3 INTRODUCTION
5 RESULTS (SCREENSHOTS)
6 REFERENCES
3
Title: SNAKE GAME USING PYTHON
ABSTRACT:
The Snake Game is a classic arcade game where the player
controls a snake that grows in length as it consumes food items
appearing on the screen. This report presents the
implementation of the Snake Game using Python
programming language and the Pygame library. The objective
of this project is to provide an entertaining and engaging
gaming experience for users while demonstrating the
implementation of game logic, user input handling, and
graphical rendering. The report outlines the game components,
rules, features, and future improvements of the Snake Game
project. Through this implementation, users can experience the
nostalgia of playing a timeless arcade game while exploring
the capabilities of Python programming for game
development.
OBJECTIVE:
INTRODUCTION:
The Snake Game is a classic arcade game where the player controls a
snake that grows in length as it consumes food items appearing on the
screen. The objective is to guide the snake to eat as much food as
possible without colliding with itself or the walls.
Game Components:
Game Rules:
Step 1: First we are importing the necessary libraries. After that, we are
defining the width and height of the window in which the game will be
played. And define the color in RGB format that we are going to use in
our game for displaying text.
CODE 1:
# importing libraries
import pygame
import time
import random
snake_speed = 15
# Window size
window_x = 720
window_y = 480
# defining colors
black = pygame.Color(0, 0, 0)
white = pygame.Color(255, 255, 255)
red = pygame.Color(255, 0, 0)
6
green = pygame.Color(0, 255, 0)
blue = pygame.Color(0, 0, 255)
CODE 2:
# Initialising pygame
pygame.init()
pygame.display.set_caption('GeeksforGeeks Snakes')
fps = pygame.time.Clock()
Step 3: Initialize snake position and its size. After initializing snake
position, initialize the fruit position randomly anywhere in the defined
height and width. By setting direction to RIGHT we ensure that,
whenever a user runs the program/game, the snake must move right to
the screen.
7
CODE 3:
# body
[90, 50],
[80, 50],
[70, 50]
# fruit position
fruit_spawn = True
# towards right
direction = 'RIGHT'
change_to = direction
8
Step 4: Create a function to display the score of the player. In this
function, firstly we’re creating a font object i.e. the font color will go
here. Then we are using render to create a background surface that we
are going to change whenever our score updates. Create a rectangular
object for the text surface object (where text will be refreshed) Then,
we are displaying our score using blit. blit takes two argument
screen.blit(background,(x,y))
CODE 4:
# initial score
score = 0
# score_surface
9
# create a rectangular object for the
score_rect = score_surface.get_rect()
# displaying text
game_window.blit(score_surface, score_rect)
Step 5: Now create a game over function that will represent the score
after the snake is hit by a wall or itself. In the first line, we are creating
a font object to display scores. Then we are creating text surfaces to
render scores. After that, we are setting the position of the text in the
middle of the playable area. Display the scores using blit and updating
the score by updating the surface using flip(). We are using sleep(2) to
wait for 2 seconds before closing the window using quit().
CODE 5:
def game_over():
# surface object
game_over_rect = game_over_surface.get_rect()
game_window.blit(game_over_surface, game_over_rect)
pygame.display.flip()
# program
time.sleep(2)
pygame.quit()
Step 6: Now we will be creating our main function that will do the
following things: We will be validating the keys that will be responsible
for the movement of the snake, then we will be creating a special
condition that the snake should not be allowed to move in the opposite
direction instantaneously. After that, if snake and fruit collide we will
be incrementing the score by 10 and new fruit will be spanned. After
that, we are checking that is the snake hit with a wall or not. If a snake
hits a wall we will call game over function. If the snake hits itself, the
game over function will be called. And in the end, we will be displaying
the scores using the show_score function created earlier.
CODE 6:
# Main Function
while True:
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_UP:
change_to = 'UP'
if event.key == pygame.K_DOWN:
change_to = 'DOWN'
1
2
if event.key == pygame.K_LEFT:
change_to = 'LEFT'
if event.key == pygame.K_RIGHT:
change_to = 'RIGHT'
# simultaneously
direction = 'UP'
direction = 'DOWN'
direction = 'LEFT'
direction = 'RIGHT'
if direction == 'UP':
snake_position[1] -= 10
if direction == 'DOWN':
snake_position[1] += 10
1
3
if direction == 'LEFT':
snake_position[0] -= 10
if direction == 'RIGHT':
snake_position[0] += 10
# incremented by 10
snake_body.insert(0, list(snake_position))
score += 10
fruit_spawn = False
else:
snake_body.pop()
if not fruit_spawn:
random.randrange(1, (window_y//10))
* 10]
fruit_spawn = True
1
4
game_window.fill(black)
game_over()
game_over()
game_over()
1
5
show_score(1, white, 'times new roman', 20)
pygame.display.update()
fps.tick(snake_speed)
STEP 7: IMPLEMENTATION,
CODE 7:
# importing libraries
import pygame
import time
import random
snake_speed = 15
# Window size
window_x = 720
window_y = 480
# defining colors
1
6
black = pygame.Color(0, 0, 0)
red = pygame.Color(255, 0, 0)
# Initialising pygame
pygame.init()
pygame.display.set_caption('GeeksforGeeks Snakes')
fps = pygame.time.Clock()
[90, 50],
1
7
[80, 50],
[70, 50]
# fruit position
fruit_spawn = True
# right
direction = 'RIGHT'
change_to = direction
# initial score
score = 0
# score_surface
# surface object
score_rect = score_surface.get_rect()
# displaying text
game_window.blit(score_surface, score_rect)
def game_over():
# will be drawn
game_over_surface = my_font.render(
# surface object
game_over_rect = game_over_surface.get_rect()
game_window.blit(game_over_surface, game_over_rect)
pygame.display.flip()
time.sleep(2)
pygame.quit()
quit()
2
0
# Main Function
while True:
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_UP:
change_to = 'UP'
if event.key == pygame.K_DOWN:
change_to = 'DOWN'
if event.key == pygame.K_LEFT:
change_to = 'LEFT'
if event.key == pygame.K_RIGHT:
change_to = 'RIGHT'
# directions simultaneously
direction = 'UP'
direction = 'DOWN'
2
1
if change_to == 'LEFT' and direction != 'RIGHT':
direction = 'LEFT'
direction = 'RIGHT'
if direction == 'UP':
snake_position[1] -= 10
if direction == 'DOWN':
snake_position[1] += 10
if direction == 'LEFT':
snake_position[0] -= 10
if direction == 'RIGHT':
snake_position[0] += 10
# will be incremented by 10
snake_body.insert(0, list(snake_position))
score += 10
2
2
fruit_spawn = False
else:
snake_body.pop()
if not fruit_spawn:
random.randrange(1, (window_y//10))
* 10]
fruit_spawn = True
game_window.fill(black)
pygame.draw.rect(game_window, green,
game_over()
2
3
game_over()
game_over()
pygame.display.update()
fps.tick(snake_speed)
2
4
RESULT:
REFERENCE:
Geeksforgeeks.org
THANK YOU
2
5