[go: up one dir, main page]

0% found this document useful (0 votes)
26 views5 pages

Snake Game

The document describes the code for a snake game created with the Pygame library in Python. It imports necessary libraries, initializes the game window and settings like screen size and colors. It defines the initial snake position and fruit spawn locations. Key game functions include moving the snake upon key presses, growing the snake and spawning new fruits when it eats one, and ending the game if the snake crashes into itself or the edge of the screen. The score is continuously displayed and updated as the snake eats more fruits.

Uploaded by

luffythemuffin
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
26 views5 pages

Snake Game

The document describes the code for a snake game created with the Pygame library in Python. It imports necessary libraries, initializes the game window and settings like screen size and colors. It defines the initial snake position and fruit spawn locations. Key game functions include moving the snake upon key presses, growing the snake and spawning new fruits when it eats one, and ending the game if the snake crashes into itself or the edge of the screen. The score is continuously displayed and updated as the snake eats more fruits.

Uploaded by

luffythemuffin
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 5

snake-game

February 1, 2024

[1]: # importing libraries


import pygame
import time
import random

snake_speed = 15

# Window size
window_x = 720
window_y = 480

# defining colors
pygame.init()
pygame.font.init()
black = pygame.Color(0, 0, 0)
white = pygame.Color(255, 255, 255)
red = pygame.Color(255, 0, 0)
green = pygame.Color(0, 255, 0)
blue = pygame.Color(0, 0, 255)

pygame 2.5.2 (SDL 2.28.3, Python 3.8.10)


Hello from the pygame community. https://www.pygame.org/contribute.html
Initialising pygame
[2]: # Initialising pygame
pygame.init()

# Initialise game window


pygame.display.set_caption('Snake Game')
game_window = pygame.display.set_mode((window_x, window_y))

# FPS (frames per second) controller


fps = pygame.time.Clock()

Defining Snake default position

1
[3]: snake_position = [100, 50]

# defining first 4 blocks of snake


# body
snake_body = [ [100, 50],
[90, 50],
[80, 50],
[70, 50]
]
# fruit position
fruit_position = [random.randrange(1, (window_x//10)) * 10,
random.randrange(1, (window_y//10)) * 10]
fruit_spawn = True

# setting default snake direction


# towards right
direction = 'RIGHT'
change_to = direction

Set an initial score


[4]: score = 0

# displaying Score function


def show_score(choice, color, font, size):

# creating font object score_font


score_font = pygame.font.SysFont(font, size)

# create the display surface object


# score_surface
score_surface = score_font.render('Score : ' + str(score), True, color)

# create a rectangular object for the


# text surface object
score_rect = score_surface.get_rect()

# displaying text
game_window.blit(score_surface, score_rect)

Game function
[5]: def game_over():
pygame.init()
pygame.font.init()
# creating font object my_font
my_font = pygame.font.SysFont('times new roman', 50)

2
# creating a text surface on which text
# will be drawn
game_over_surface = my_font.render('Your Score is : ' + str(score),␣
↪True, red)

# create a rectangular object for the text


# surface object
game_over_rect = game_over_surface.get_rect()

# setting position of the text


game_over_rect.midtop = (window_x/2, window_y/4)

# blit will draw the text on screen


game_window.blit(game_over_surface, game_over_rect)
pygame.display.flip()

# after 2 seconds we will quit the


# program
time.sleep(2)

# deactivating pygame library


pygame.quit()

# quit the program


quit()

Game function
[ ]: # Main Function
while True:

# handling key events


for event in pygame.event.get():
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'

# If two keys pressed simultaneously


# we don't want snake to move into two directions
# simultaneously
if change_to == 'UP' and direction != 'DOWN':

3
direction = 'UP'
if change_to == 'DOWN' and direction != 'UP':
direction = 'DOWN'
if change_to == 'LEFT' and direction != 'RIGHT':
direction = 'LEFT'
if change_to == 'RIGHT' and direction != 'LEFT':
direction = 'RIGHT'

# Moving the snake


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

# Snake body growing mechanism


# if fruits and snakes collide then scores will be
# incremented by 10
snake_body.insert(0, list(snake_position))
if snake_position[0] == fruit_position[0] and snake_position[1] ==␣
↪fruit_position[1]:

score += 10
fruit_spawn = False
else:
snake_body.pop()

if not fruit_spawn:
fruit_position = [random.randrange(1, (window_x//10)) * 10,
random.randrange(1, (window_y//
↪10)) * 10]

fruit_spawn = True
game_window.fill(black)

for pos in snake_body:


pygame.draw.rect(game_window, green, pygame.Rect(
pos[0], pos[1], 10, 10))

pygame.draw.rect(game_window, white, pygame.Rect(


fruit_position[0], fruit_position[1], 10, 10))

# Game Over conditions


if snake_position[0] < 0 or snake_position[0] > window_x-10:
game_over()

4
if snake_position[1] < 0 or snake_position[1] > window_y-10:
game_over()

# Touching the snake body


for block in snake_body[1:]:
if snake_position[0] == block[0] and snake_position[1] ==␣
↪block[1]:

game_over()

# displaying score continuously


show_score(1, white, 'times new roman', 20)

# Refresh game screen


pygame.display.update()

# Frame Per Second /Refresh Rate


fps.tick(snake_speed)

You might also like