Hey python junkies we are here with another super exciting topic to make your coding journey entertaining. In this article, we will explore how to create a classic Snake game using Python. Snake game using Python is a simple but addictive game where you get to start and never finish it. The goal is to avoid collisions with the walls and the body of the snake itself. By the end of this article, you will have a fully functional Snake game using Python.
Prerequisites To Build Snake Game using Python
- Basic understanding of syntax, variables, loops, functions, and conditional statements.
- Understand the basic concepts of pygame library such as creating a window, handling events, and drawing shapes.
- Understand the basic game development concepts like game loops, sprites, collision detection, and states.
- A basic understanding of OOP(Object-Oriented Programming) is recommended.
- Now let’s build a snake game using Python
To build the Snake game using Python we are going to use pygame module
MODULE used – pygame
Read More: Billing Management System Using Python
Below is the step-by-step guide for a fully developed snake game.
STEP-1: importing the modules:
import pygame import time import random
STEP-2: initializing pygame:
pygame.init()
STEP-3: setting the width and height of the screen to the size of a square:
width = 800 height = 600
STEP-4: defining the colors:
white = (255, 255, 255) yellow = (255, 255, 102) black = (0, 0, 0) red = (213, 50, 80) green = (0, 255, 0) blue = (50, 153, 213)
STEP-5: setting the size of the block:
block_size = 20
STEP-6: setting the speed of the snake:
speed = 15
STEP-7: setting the font style and size:
font_style = pygame.font.SysFont("bahnschrift", 25)
STEP-8: creating a clock object to control the speed of the game:
clock = pygame.time.Clock()
STEP-9: setting the font style and size:
font_style = pygame.font.SysFont(None, 50)
STEP-10: defining the necessary functions:
- to draw the snake on the screen:
def our_snake(block_size, snake_list): for x in snake_list: pygame.draw.rect(screen, black, [x[0], x[1], block_size, block_size])
- to display messages on the screen:
def message(msg, color): mesg = font_style.render(msg, True, color) screen.blit(mesg, [width / 6, height / 3])
STEP-11: setting the size of the display:
screen = pygame.display.set_mode((width, height)) pygame.display.set_caption("Snake Game")
STEP-12: use the loop until the user clicks the close button:
game_over = False game_close = False
STEP-13: setting the start position of the snake:
x1 = width / 2 y1 = height / 2
STEP-14: setting the change in position for the snake:
x1_change = 0 y1_change = 0
STEP-15: setting the initial length of the snake:
snake_list = [] length_of_snake = 1
STEP-16: setting the position of the food:
foodx = round(random.randrange(0, width - block_size) / block_size) * block_size foody = round(random.randrange(0, height - block_size) / block_size) * block_size
STEP-17: looping the main game:
while not game_over: while game_close == True: screen.fill(blue) message("You Lost! Press C-Play Again or Q-Quit", 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: # reset the game x1 = width / 2 y1 = height / 2 x1_change = 0 y1_change = 0 snake_list = [] length_of_snake = 1 foodx = round(random.randrange(0, width - block_size) / block_size) * block_size foody = round(random.randrange(0, height - block_size) / block_size) * block_size game_close = False # responding to the events: 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 = -block_size y1_change = 0 elif event.key == pygame.K_RIGHT: x1_change = block_size y1_change = 0 elif event.key == pygame.K_UP: y1_change = -block_size x1_change = 0 elif event.key == pygame.K_DOWN: y1_change = block_size x1_change = 0 # checking if snake hits the boundary: if x1 >= width or x1 < 0 or y1 >= height or y1 < 0: game_close = True x1 += x1_change y1 += y1_change screen.fill(blue) # drawing the food: pygame.draw.rect(screen, green, [foodx, foody, block_size, block_size]) 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] for x in snake_list[:-1]: if x == snake_head: game_close = True our_snake(block_size, snake_list) pygame.display.update() # checking if the snake hits the food: if x1 == foodx and y1 == foody: foodx = round(random.randrange(0, width - block_size) / block_size) * block_size foody = round(random.randrange(0, height - block_size) / block_size) * block_size length_of_snake += 1 # setting the speed of the game: clock.tick(speed)
STEP-18: Closing the pygame window:
pygame.quit() quit()
Snake Game Using Python Source Code
import pygame import time import random pygame.init() width = 800 height = 600 white = (255, 255, 255) yellow = (255, 255, 102) black = (0, 0, 0) red = (213, 50, 80) green = (0, 255, 0) blue = (50, 153, 213) block_size = 20 speed = 15 font_style = pygame.font.SysFont("bahnschrift", 25) clock = pygame.time.Clock() font_style = pygame.font.SysFont(None, 50) def our_snake(block_size, snake_list): for x in snake_list: pygame.draw.rect(screen, black, [x[0], x[1], block_size, block_size]) def message(msg, color): mesg = font_style.render(msg, True, color) screen.blit(mesg, [width / 6, height / 3]) screen = pygame.display.set_mode((width, height)) pygame.display.set_caption("Snake Game") game_over = False game_close = False x1 = width / 2 y1 = height / 2 x1_change = 0 y1_change = 0 snake_list = [] length_of_snake = 1 foodx = round(random.randrange(0, width - block_size) / block_size) * block_size foody = round(random.randrange(0, height - block_size) / block_size) * block_size # Main game loop while not game_over: while game_close == True: screen.fill(blue) message("You Lost! Press C-Play Again or Q-Quit", 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: # Reset the game x1 = width / 2 y1 = height / 2 x1_change = 0 y1_change = 0 snake_list = [] length_of_snake = 1 foodx = round(random.randrange(0, width - block_size) / block_size) * block_size foody = round(random.randrange(0, height - block_size) / block_size) * block_size game_close = False 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 = -block_size y1_change = 0 elif event.key == pygame.K_RIGHT: x1_change = block_size y1_change = 0 elif event.key == pygame.K_UP: y1_change = -block_size x1_change = 0 elif event.key == pygame.K_DOWN: y1_change = block_size x1_change = 0 if x1 >= width or x1 < 0 or y1 >= height or y1 < 0: game_close = True x1 += x1_change y1 += y1_change screen.fill(blue) pygame.draw.rect(screen, green, [foodx, foody, block_size, block_size]) 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] for x in snake_list[:-1]: if x == snake_head: game_close = True our_snake(block_size, snake_list) pygame.display.update() if x1 == foodx and y1 == foody: foodx = round(random.randrange(0, width - block_size) / block_size) * block_size foody = round(random.randrange(0, height - block_size) / block_size) * block_size length_of_snake += 1 clock.tick(speed) pygame.quit() quit()
Read More: Random Password Generator Using Python
Output of Snake Game Using Python
Read More: YouTube Video Downloader Using Python
Conclusion
In this article, I shared how to Build a Snake Game Using Python with Source Code. I hope you enjoyed reading this tutorial and found the information provided on how to Build a Snake Game Using Python. Embrace yourself as, unlike others, you are trying something new.
That is very interesting, You’re a very professional blogger. I’ve joined your rss feed and stay up for seeking extra of your magnificent post. Additionally, I have shared your web site in my social networks!