"Build Your Own Snake Game in Python: A Step-by-Step Guide"


 "Create a Classic Snake Game in Python"

Are you ready to dive into Python game development? In this tutorial, we’ll guide you through building a simple Snake game using Python. Whether you're a beginner or looking to refresh your skills, this project is a great way to learn essential programming concepts such as loops, conditionals, and handling user input. Follow along with the full code and step-by-step instructions to create your own interactive Snake game in Python.


import pygame

import time

import random


pygame.init()


# Define 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)


# Set the screen width and height

dis_width = 600

dis_height = 400


# Set up the display

dis = pygame.display.set_mode((dis_width, dis_height))

pygame.display.set_caption('Snake Game')


# Set up the clock

clock = pygame.time.Clock()


# Set up the snake block and speed

snake_block = 10

snake_speed = 15


# Define the font

font_style = pygame.font.SysFont("bahnschrift", 25)

score_font = pygame.font.SysFont("comicsansms", 35)


# Function to display the current score

def Your_score(score):

    value = score_font.render("Your Score: " + str(score), True, black)

    dis.blit(value, [0, 0])


# Function to draw the snake

def our_snake(snake_block, snake_list):

    for x in snake_list:

        pygame.draw.rect(dis, green, [x[0], x[1], snake_block, snake_block])


# Function to display a message when the game is over

def message(msg, color):

    mesg = font_style.render(msg, True, color)

    dis.blit(mesg, [dis_width / 6, dis_height / 3])


# Main game loop

def gameLoop():

    game_over = False

    game_close = False


    # Starting position of the snake

    x1 = dis_width / 2

    y1 = dis_height / 2


    x1_change = 0

    y1_change = 0


    # Snake body

    snake_List = []

    Length_of_snake = 1


    # Food position

    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


    # Game loop

    while not game_over:


        while game_close:

            dis.fill(blue)

            message("You Lost! Press Q-Quit or C-Play Again", 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

                    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


        # Check for boundaries and self-collision

        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)


        # Draw the food

        pygame.draw.rect(dis, yellow, [foodx, foody, snake_block, snake_block])


        # Add the snake's head to the body

        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


        # Draw the snake

        our_snake(snake_block, snake_List)

        Your_score(Length_of_snake - 1)


        pygame.display.update()


        # Check if snake eats 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)


    pygame.quit()

    quit()


# Run the game

gameLoop()


Comments

Popular posts from this blog

How to Use Python for Creating Anime Characters (Including Pokémon and Shin Chan) with Colorful Sample Code

"Top 50 Current Affairs MCQs from the Last 6 Months (2024) – Part 1"

"Artificial Intelligence Quiz: Test Your Knowledge with 20 Expert-Level AI MCQs"