Python Program to build the snake game
Purpose: We are going to create a Python program
to play snake.
Complete the assignment below:
You will need to create the following 3 files:
PX_Snake_lastname.py (Actual python program)
PX_Snake_lastname.png (Screen shot of program running in the IDE)
PX_Snake_lastname.mp4 (Video)
(Explaining the program and running the program)
(To help you, you may want to read the comments)
We are going to build a snake game using python.
First, you'll need to install pygame if you haven't already. You can do this using pip:
pip install pygame
Use the code below for the basic implementation of the Snake game:
import pygame # Import the pygame module for game development
import random # Import the random module to generate random numbers
pygame.init() # Initialize all imported pygame modules
# Define colors using RGB (Red, Green, Blue) values
white = (255, 255, 255)
red = (213, 50, 80)
green = (0, 255, 0)
black = (0, 0, 0)
# Set dimensions of the game window and create the display
dis_width = 800
dis_height = 600
dis = pygame.display.set_mode((dis_width, dis_height))
# Set the title of the window
pygame.display.set_caption('Snake Game by OpenAI')
# Create a clock object to control game timing
clock = pygame.time.Clock()
# Set block size and game speed
snake_block = 10
snake_speed = 15
# Create a font object for displaying text
font_style = pygame.font.SysFont(None, 50)
# Function to draw snake blocks
def our_snake(snake_block, snake_list):
for x in snake_list:
pygame.draw.rect(dis, black, [x[0], x[1], snake_block, snake_block])
# Function to display messages on the screen
def message(msg, color):
mesg = font_style.render(msg, True, color)
dis.blit(mesg, [dis_width / 6, dis_height / 3])
# Main game loop function
def gameLoop():
game_over = False
game_close = False
# Initial position of the snake in the center of the window
x1 = dis_width / 2
y1 = dis_height / 2
# Movement variables (initially no movement)
x1_change = 0
y1_change = 0
# List to store the segments of the snake's body
snake_list = []
length_of_snake = 1
# Randomly place the initial food item
foodx = round(random.randrange(0, dis_width - snake_block) / 10.0) * 10.0
foody = round(random.randrange(0, dis_height - snake_block) / 10.0) * 10.0
# While loop for the main game sequence
while not game_over:
# Loop to handle end of game scenario
while game_close == True:
dis.fill(white)
message("You lost! Press Q-Quit or C-Play Again", red)
pygame.display.update()
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_q:
game_over = True
game_close = False
if event.key == pygame.K_c:
gameLoop()
# Event handling in the game
for event in pygame.event.get():
if event.type == pygame.QUIT:
game_over = True
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
x1_change = -snake_block
y1_change = 0
elif event.key == pygame.K_RIGHT:
x1_change = snake_block
y1_change = 0
elif event.key == pygame.K_UP:
y1_change = -snake_block
x1_change = 0
elif event.key == pygame.K_DOWN:
y1_change = snake_block
x1_change = 0
# Check for boundary collision
if x1 >= dis_width or x1 < 0 or y1 &g;= dis_height or y1 < 0:
game_close = True
x1 += x1_change
y1 += y1_change
dis.fill(white)
pygame.draw.rect(dis, green, [foodx, foody, snake_block, snake_block])
snake_head = []
snake_head.append(x1)
snake_head.append(y1)
snake_list.append(snake_head)
if len(snake_list) > length_of_snake:
del snake_list[0]
# Check for collision with itself
for x in snake_list[:-1]:
if x == snake_head:
game_close = True
our_snake(snake_block, snake_list)
pygame.display.update()
# Check if snake has eaten the food
if x1 == foodx and y1 == foody:
foodx = round(random.randrange(0, dis_width - snake_block) / 10.0) * 10.0
foody = round(random.randrange(0, dis_height - snake_block) / 10.0) * 10.0
length_of_snake += 1
clock.tick(snake_speed) # Control the speed of the game
pygame.quit() # Uninitialize all pygame modules
quit() # Quit the program
gameLoop() # Call the game loop function to start the game
This Python script sets up a window using pygame, handles key presses to control the snake, and updates the game state to reflect the snake's movement and food consumption. The game runs in an infinite loop until the player decides to exit by closing the window or the snake runs into itself or the boundaries.