Home Programming Creating a basic Snake game in Python

Creating a basic Snake game in Python

138
0
Snake Game
Snake Game

Creating a basic Snake game in Python involves using the Pygame library, which simplifies game development by providing functions for graphics, sounds, and handling user inputs. Below is a step-by-step guide to create a simple Snake game:

1. Install Pygame

If you haven’t already installed Pygame, you can do so using pip:

pip install pygame

2. Code for the Snake Game

Here is a complete example of a Snake game in Python using Pygame:

import pygame
import time
import random

pygame.init()

white = (255, 255, 255)
yellow = (255, 255, 102)
black = (0, 0, 0)
red = (213, 50, 80)
green = (0, 255, 0)
blue = (50, 153, 213)

dis_width = 800
dis_height = 600

dis = pygame.display.set_mode((dis_width, dis_height))
pygame.display.set_caption('Snake Game')

clock = pygame.time.Clock()

snake_block = 10
initial_speed = 10

font_style = pygame.font.SysFont("bahnschrift", 25)
score_font = pygame.font.SysFont("comicsansms", 35)
opening_font = pygame.font.SysFont("comicsansms", 50)

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, y_displace=0, font=font_style):
    mesg = font.render(msg, True, color)
    dis.blit(mesg, [dis_width / 2 - mesg.get_width() / 2, dis_height / 2 - mesg.get_height() / 2 + y_displace])

def opening_animation():
    dis.fill(blue)
    message("content.id", white, font=opening_font)
    pygame.display.update()
    time.sleep(2)  # Display the opening animation for 2 seconds

def gameLoop():
    opening_animation()

    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

    snake_speed = initial_speed

    while not game_over:

        while game_close == True:
            dis.fill(blue)
            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()

        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(blue) 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)

        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
            snake_speed += 1  # Increase speed when snake eats food

        clock.tick(snake_speed)

    pygame.quit()
    quit()

gameLoop()

3. Explanation:

    • Initialization: The game starts by initializing the Pygame library and setting up the display.
    • Colors and Dimensions: Colors are defined in RGB format. The game display dimensions are also set.
    • Game Loop: The main game loop handles events, updates the snake’s position, checks for collisions, and redraws the screen.
    • Snake Movement: The snake’s movement is controlled by changing the position coordinates based on user input (arrow keys).
    • Food and Growth: Randomly place the food on the screen. If the snake eats the food, its length increases.
    • Game Over: The game ends if the snake collides with the screen boundaries or itself.

Run the above code to start the game. Use the arrow keys to move the snake, and try to eat the green food without hitting the walls or the snake’s own body. Press ‘C’ to play again or ‘Q’ to quit when you lose.