To craft a Snake game in Python, you’ll need to utilize the Pygame library, which offers robust tools for graphics and user interaction.
The fundamental gameplay of Snake is straightforward: players control a snake that navigates the screen, consuming food to extend its length. The game concludes when the snake collides with itself or the screen boundaries.
To develop a Python Snake game, you’ll need to address the following crucial components:
1. Snake Movement: Establish a system to manage the snake’s direction and update its position in response to user input, such as keyboard presses or arrow keys.
2. Food Generation: Implement a mechanism to randomly generate food items on the screen.
3. Collision Detection: Detect collisions between the snake, food, and screen edges. When the snake consumes food, it should grow, and the player’s score should increase.
4. Game Loop: Create a game loop that continuously updates the game state and refreshes the screen, enabling real-time interaction.
5. Scoring: Keep track of the player’s score as they collect food items.
6. Game Over Condition: Develop a game over condition that triggers when the snake collides with itself or the screen edges. After the game ends, display the final score and offer the player the option to restart.
NOTE: i used this snake game source code in replit that why i don’t need to install module . if you want to use it in another text editor/IDE’s so you may need to install the modules.
Replit preview
Here is snake game source code
import pygame
import time
import random
# Visit www.codebyrolex.com
pygame.init()
white = (255, 255, 255)
yellow = (255, 255, 102)
black = (0, 0, 0)
red = (213, 50, 80)
green = (0, 255, 0)
light_purple = (200, 191, 231) # Light purple color
dis_width = 760
dis_height = 700
dis = pygame.display.set_mode((dis_width, dis_height))
pygame.display.set_caption('Snake Game visit www.codebyrolex.com')
clock = pygame.time.Clock()
snake_block = 10
snake_speed = 15
font_style = pygame.font.SysFont("bahnschrift", 25)
score_font = pygame.font.SysFont("comicsansms", 35)
def Your_score(score):
value = score_font.render("Your Score: " + str(score), True, yellow)
dis.blit(value, [0, 0])
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])
def message(msg, color):
mesg = font_style.render(msg, True, color)
dis.blit(mesg, [dis_width / 6, dis_height / 3])
def gameLoop():
game_over = False
game_close = False
x1 = dis_width / 2
y1 = dis_height / 2
x1_change = 0
y1_change = 0
snake_List = []
Length_of_snake = 1
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 not game_over:
while game_close == True:
dis.fill(light_purple) # Light purple background
message("You Lost! Press C-Play Again or Q-Quit. codebyrolex.com", red)
Your_score(Length_of_snake - 1)
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()
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
if x1 >= dis_width or x1 < 0 or y1 >= dis_height or y1 < 0:
game_close = True
x1 += x1_change
y1 += y1_change
dis.fill(light_purple) # Light purple background
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]
for x in snake_List[:-1]:
if x == snake_Head:
game_close = True
our_snake(snake_block, snake_List)
Your_score(Length_of_snake - 1)
pygame.display.update()
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)
pygame.quit()
quit()
gameLoop()
PythonFinal words
hello everyone hope you love this python game . if you have any doubt releated to this post so please leave a comments and check out our other post.