🐍 Как ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΈΠ³Ρ€Ρƒ Π·ΠΌΠ΅ΠΉΠΊΠ° Π½Π° ΠŸΠΈΡ‚ΠΎΠ½Π΅: пошаговоС руководство для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΈΠ³Ρ€Ρƒ "Π—ΠΌΠ΅ΠΉΠΊΠ°" Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Pygame. Π’ΠΎΡ‚ простой ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π° для создания ΠΈΠ³Ρ€Ρ‹:


import pygame
import time

# Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ
pygame.init()

# ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ†Π²Π΅Ρ‚ΠΎΠ²
BLACK = (0, 0, 0)
GREEN = (0, 255, 0)

# Π Π°Π·ΠΌΠ΅Ρ€Ρ‹ экрана
width = 800
height = 600

# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΠΊΠ½Π°
screen = pygame.display.set_mode((width, height))
pygame.display.set_caption("Π—ΠΌΠ΅ΠΉΠΊΠ°")

# ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ для Π·ΠΌΠ΅ΠΉΠΊΠΈ
snake_block = 10
snake_speed = 30

# ΠžΡ‚Ρ€ΠΈΡΠΎΠ²ΠΊΠ° Π·ΠΌΠ΅ΠΉΠΊΠΈ
def draw_snake(snake_block, snake_list):
    for x in snake_list:
        pygame.draw.rect(screen, GREEN, [x[0], x[1], snake_block, snake_block])

# Π“Π»Π°Π²Π½Ρ‹ΠΉ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Ρ†ΠΈΠΊΠ»
def game_loop():
    game_over = False
    game_close = False

    snake_x = width / 2
    snake_y = height / 2

    snake_x_change = 0
    snake_y_change = 0

    snake_list = []
    length_of_snake = 1

    clock = pygame.time.Clock()

    while not game_over:
        while game_close:
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    game_over = True
                    game_close = False

            # ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ сообщСния ΠΎ ΠΏΡ€ΠΎΠΈΠ³Ρ€Ρ‹ΡˆΠ΅
            font_style = pygame.font.SysFont(None, 50)
            message = font_style.render("Π’Ρ‹ ΠΏΡ€ΠΎΠΈΠ³Ρ€Π°Π»ΠΈ! НаТмитС Q-Π²Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ»ΠΈ C-ΠΈΠ³Ρ€Π°Ρ‚ΡŒ снова", True, BLACK)
            screen.blit(message, [width / 6, height / 3])

            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:
                        game_loop()

        # Π Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ Π·ΠΌΠ΅ΠΉΠΊΠΈ
        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:
                    snake_x_change = -snake_block
                    snake_y_change = 0
                elif event.key == pygame.K_RIGHT:
                    snake_x_change = snake_block
                    snake_y_change = 0
                elif event.key == pygame.K_UP:
                    snake_y_change = -snake_block
                    snake_x_change = 0
                elif event.key == pygame.K_DOWN:
                    snake_y_change = snake_block
                    snake_x_change = 0

        if snake_x >= width or snake_x < 0 or snake_y >= height or snake_y < 0:
            game_close = True

        snake_x += snake_x_change
        snake_y += snake_y_change

        screen.fill(BLACK)
        pygame.draw.rect(screen, GREEN, [snake_x, snake_y, snake_block, snake_block])

        snake_head = []
        snake_head.append(snake_x)
        snake_head.append(snake_y)
        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

        # ΠžΡ‚Ρ€ΠΈΡΠΎΠ²ΠΊΠ° Π·ΠΌΠ΅ΠΉΠΊΠΈ
        draw_snake(snake_block, snake_list)

        # ОбновлСниС экрана
        pygame.display.update()

        # Π—Π°Π΄Π΅Ρ€ΠΆΠΊΠ° для скорости Π·ΠΌΠ΅ΠΉΠΊΠΈ
        clock.tick(snake_speed)

    # Π—Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ ΠΎΠΊΠ½Π°
    pygame.quit()
    quit()

# Запуск ΠΈΠ³Ρ€Ρ‹
game_loop()

   

Π”Π΅Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚

Как ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΈΠ³Ρ€Ρƒ "Π—ΠΌΠ΅ΠΉΠΊΠ°" Π½Π° Python

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрим, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ ΠΈΠ³Ρ€Ρƒ "Π—ΠΌΠ΅ΠΉΠΊΠ°" Π½Π° языкС программирования Python. Π˜Π³Ρ€Π° "Π—ΠΌΠ΅ΠΉΠΊΠ°" являСтся классичСской Π°Ρ€ΠΊΠ°Π΄Π½ΠΎΠΉ ΠΈΠ³Ρ€ΠΎΠΉ, Π³Π΄Π΅ ΠΈΠ³Ρ€ΠΎΠΊ управляСт Π·ΠΌΠ΅ΠΉΠΊΠΎΠΉ, которая постСпСнно растСт, съСдая Π΅Π΄Ρƒ ΠΈ избСгая столкновСния со стСнами ΠΈΠ»ΠΈ собствСнным Ρ‚Π΅Π»ΠΎΠΌ.

Π¨Π°Π³ 1: ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° окруТСния Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ

ΠŸΠ΅Ρ€Π΅Π΄ Π½Π°Ρ‡Π°Π»ΠΎΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠ³Ρ€Ρ‹ "Π—ΠΌΠ΅ΠΉΠΊΠ°" Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ Ρƒ вас установлСн Python Π½Π° вашСм ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΈ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ послСднюю Π²Π΅Ρ€ΡΠΈΡŽ Python с ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Π΅Π±-сайта Python.

Π¨Π°Π³ 2: Установка Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Pygame

Для создания ΠΈΠ³Ρ€Ρ‹ "Π—ΠΌΠ΅ΠΉΠΊΠ°" ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Pygame, которая прСдоставляСт ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ интСрфСйс для создания 2D ΠΈΠ³Ρ€ Π½Π° Python. УстановитС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Pygame, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС:

pip install pygame

Π¨Π°Π³ 3: Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ основного ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠΈΡ‚ΡŒ ΠΊ созданию ΠΈΠ³Ρ€Ρ‹ "Π—ΠΌΠ΅ΠΉΠΊΠ°", Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ основноС ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ ΠΈΠ³Ρ€Π°. Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π° для создания основного ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°:

import pygame
    
    WIDTH = 800
    HEIGHT = 600
    
    pygame.init()
    window = pygame.display.set_mode((WIDTH, HEIGHT))
    pygame.display.set_caption("Π—ΠΌΠ΅ΠΉΠΊΠ°")
    
    # Основной ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Ρ†ΠΈΠΊΠ»
    while True:
        # ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° событий
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                sys.exit()
        
        # ОбновлСниС экрана
        pygame.display.flip()

Π¨Π°Π³ 4: РСализация двиТСния Π·ΠΌΠ΅ΠΉΠΊΠΈ

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° Ρƒ нас Π΅ΡΡ‚ΡŒ основноС ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ, Π΄Π°Π²Π°ΠΉΡ‚Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ Π·ΠΌΠ΅ΠΉΠΊΠΈ. Π—ΠΌΠ΅ΠΉΠΊΠ° Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΡΡ‚ΠΎΡΡ‚ΡŒ ΠΈΠ· сСгмСнтов, ΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ сСгмСнт Π±ΡƒΠ΄Π΅Ρ‚ прСдставлСн ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°ΠΌΠΈ Π½Π° ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΌ ΠΏΠΎΠ»Π΅. Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π° для создания ΠΈ отобраТСния Π·ΠΌΠ΅ΠΉΠΊΠΈ:

import pygame
    
    WIDTH = 800
    HEIGHT = 600
    SNAKE_SIZE = 20
    WHITE = (255, 255, 255)
    
    pygame.init()
    window = pygame.display.set_mode((WIDTH, HEIGHT))
    pygame.display.set_caption("Π—ΠΌΠ΅ΠΉΠΊΠ°")
    
    snake_segments = [(WIDTH / 2, HEIGHT / 2)]
    
    # Основной ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Ρ†ΠΈΠΊΠ»
    while True:
        # ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° событий
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                sys.exit()
        
        # Π”Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ Π·ΠΌΠ΅ΠΉΠΊΠΈ
        
        # ОбновлСниС экрана
        window.fill(WHITE)
        
        for segment in snake_segments:
            pygame.draw.rect(window, WHITE, (segment[0], segment[1], SNAKE_SIZE, SNAKE_SIZE))
        
        pygame.display.flip()

Π¨Π°Π³ 5: Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ управлСния Π·ΠΌΠ΅ΠΉΠΊΠΎΠΉ

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ³Ρ€ΠΎΠΊ ΠΌΠΎΠ³ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Π·ΠΌΠ΅ΠΉΠΊΠΎΠΉ, ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ события ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π·ΠΌΠ΅ΠΉΠΊΠΈ Π² соотвСтствии с Π½Π°ΠΆΠ°Ρ‚ΠΎΠΉ клавишСй. Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π° для добавлСния управлСния Π·ΠΌΠ΅ΠΉΠΊΠΎΠΉ:

import pygame
    
    WIDTH = 800
    HEIGHT = 600
    SNAKE_SIZE = 20
    WHITE = (255, 255, 255)
    
    pygame.init()
    window = pygame.display.set_mode((WIDTH, HEIGHT))
    pygame.display.set_caption("Π—ΠΌΠ΅ΠΉΠΊΠ°")
    
    snake_segments = [(WIDTH / 2, HEIGHT / 2)]
    snake_direction = "right"
    
    # Основной ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Ρ†ΠΈΠΊΠ»
    while True:
        # ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° событий
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                sys.exit()
            elif event.type == pygame.KEYDOWN:
                if event.key == pygame.K_LEFT:
                    snake_direction = "left"
                elif event.key == pygame.K_RIGHT:
                    snake_direction = "right"
                elif event.key == pygame.K_UP:
                    snake_direction = "up"
                elif event.key == pygame.K_DOWN:
                    snake_direction = "down"
        
        # Π”Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ Π·ΠΌΠ΅ΠΉΠΊΠΈ
        
        # ОбновлСниС экрана
        window.fill(WHITE)
        
        for segment in snake_segments:
            pygame.draw.rect(window, WHITE, (segment[0], segment[1], SNAKE_SIZE, SNAKE_SIZE))
        
        pygame.display.flip()

Π¨Π°Π³ 6: Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π΅Π΄Ρ‹ для Π·ΠΌΠ΅ΠΉΠΊΠΈ

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ³Ρ€Π° стала интСрСснСС, Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π΅Π΄Ρƒ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π·ΠΌΠ΅ΠΉΠΊΠ° Π±ΡƒΠ΄Π΅Ρ‚ ΡΡŠΠ΅Π΄Π°Ρ‚ΡŒ для увСличСния своСй Π΄Π»ΠΈΠ½Ρ‹. Π•Π΄Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΡΠ²Π»ΡΡ‚ΡŒΡΡ Π² случайном мСстС Π½Π° ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΌ ΠΏΠΎΠ»Π΅. Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π° для добавлСния Π΅Π΄Ρ‹:

import pygame
    import random
    
    WIDTH = 800
    HEIGHT = 600
    SNAKE_SIZE = 20
    FOOD_SIZE = 20
    WHITE = (255, 255, 255)
    GREEN = (0, 255, 0)
    
    pygame.init()
    window = pygame.display.set_mode((WIDTH, HEIGHT))
    pygame.display.set_caption("Π—ΠΌΠ΅ΠΉΠΊΠ°")
    
    snake_segments = [(WIDTH / 2, HEIGHT / 2)]
    snake_direction = "right"
    
    food_position = (random.randint(0, WIDTH - FOOD_SIZE), random.randint(0, HEIGHT - FOOD_SIZE))
    
    # Основной ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Ρ†ΠΈΠΊΠ»
    while True:
        # ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° событий
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                sys.exit()
            elif event.type == pygame.KEYDOWN:
                if event.key == pygame.K_LEFT:
                    snake_direction = "left"
                elif event.key == pygame.K_RIGHT:
                    snake_direction = "right"
                elif event.key == pygame.K_UP:
                    snake_direction = "up"
                elif event.key == pygame.K_DOWN:
                    snake_direction = "down"
        
        # Π”Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ Π·ΠΌΠ΅ΠΉΠΊΠΈ
        
        # ОбновлСниС экрана
        window.fill(WHITE)
        
        pygame.draw.rect(window, GREEN, (food_position[0], food_position[1], FOOD_SIZE, FOOD_SIZE))
        
        for segment in snake_segments:
            pygame.draw.rect(window, WHITE, (segment[0], segment[1], SNAKE_SIZE, SNAKE_SIZE))
        
        pygame.display.flip()

Π¨Π°Π³ 7: ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° столкновСний

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½ΡƒΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ столкновСний Π·ΠΌΠ΅ΠΉΠΊΠΈ с Π΅Π΄ΠΎΠΉ ΠΈ со стСнами. Если Π·ΠΌΠ΅ΠΉΠΊΠ° ΡΡŠΠ΅ΡΡ‚ Π΅Π΄Ρƒ, Ρ‚ΠΎ Π΅Π΅ Π΄Π»ΠΈΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Π° ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒΡΡ, Π° новая Π΅Π΄Π° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΠΎΡΠ²ΠΈΡ‚ΡŒΡΡ Π² случайном мСстС. Если Π·ΠΌΠ΅ΠΉΠΊΠ° столкнСтся со стСной ΠΈΠ»ΠΈ собствСнным Ρ‚Π΅Π»ΠΎΠΌ, ΠΈΠ³Ρ€Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΡ‚ΡŒΡΡ. Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π° для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ столкновСний:

import pygame
    import random
    
    WIDTH = 800
    HEIGHT = 600
    SNAKE_SIZE = 20
    FOOD_SIZE = 20
    WHITE = (255, 255, 255)
    GREEN = (0, 255, 0)
    RED = (255, 0, 0)
    
    pygame.init()
    window = pygame.display.set_mode((WIDTH, HEIGHT))
    pygame.display.set_caption("Π—ΠΌΠ΅ΠΉΠΊΠ°")
    
    snake_segments = [(WIDTH / 2, HEIGHT / 2)]
    snake_direction = "right"
    snake_alive = True
    
    food_position = (random.randint(0, WIDTH - FOOD_SIZE), random.randint(0, HEIGHT - FOOD_SIZE))
    
    # Основной ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Ρ†ΠΈΠΊΠ»
    while True:
        # ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° событий
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                sys.exit()
            elif event.type == pygame.KEYDOWN:
                if event.key == pygame.K_LEFT:
                    snake_direction = "left"
                elif event.key == pygame.K_RIGHT:
                    snake_direction = "right"
                elif event.key == pygame.K_UP:
                    snake_direction = "up"
                elif event.key == pygame.K_DOWN:
                    snake_direction = "down"
        
        # Π”Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ Π·ΠΌΠ΅ΠΉΠΊΠΈ
        
        # ОбновлСниС экрана
        window.fill(WHITE)
        
        pygame.draw.rect(window, GREEN, (food_position[0], food_position[1], FOOD_SIZE, FOOD_SIZE))
        
        if snake_alive:
            for segment in snake_segments:
                pygame.draw.rect(window, WHITE, (segment[0], segment[1], SNAKE_SIZE, SNAKE_SIZE))
            
            # ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° столкновСний со стСнами
            if snake_segments[0][0] < 0 or snake_segments[0][0] >= WIDTH or snake_segments[0][1] < 0 or snake_segments[0][1] >= HEIGHT:
                snake_alive = False
            
            # ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° столкновСний со своим Ρ‚Π΅Π»ΠΎΠΌ
            for segment in snake_segments[1:]:
                if snake_segments[0] == segment:
                    snake_alive = False
        
        if not snake_alive:
            pygame.draw.rect(window, RED, (0, 0, WIDTH, HEIGHT))
        
        pygame.display.flip()

Π¨Π°Π³ 8: ОбновлСниС Π΄Π»ΠΈΠ½Ρ‹ Π·ΠΌΠ΅ΠΉΠΊΠΈ

НаконСц, Π΄Π°Π²Π°ΠΉΡ‚Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π΄Π»ΠΈΠ½Ρ‹ Π·ΠΌΠ΅ΠΉΠΊΠΈ ΠΏΡ€ΠΈ съСдании Π΅Π΄Ρ‹. Если Π³ΠΎΠ»ΠΎΠ²Π° Π·ΠΌΠ΅ΠΉΠΊΠΈ пСрСсСкаСтся с ΠΏΠΎΠ·ΠΈΡ†ΠΈΠ΅ΠΉ Π΅Π΄Ρ‹, Ρ‚ΠΎ добавляСм Π½ΠΎΠ²Ρ‹ΠΉ сСгмСнт Π² Π½Π°Ρ‡Π°Π»ΠΎ Π·ΠΌΠ΅ΠΉΠΊΠΈ, увСличивая Π΅Π΅ Π΄Π»ΠΈΠ½Ρƒ. Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π° для обновлСния Π΄Π»ΠΈΠ½Ρ‹ Π·ΠΌΠ΅ΠΉΠΊΠΈ:

import pygame
    import random
    
    WIDTH = 800
    HEIGHT = 600
    SNAKE_SIZE = 20
    FOOD_SIZE = 20
    WHITE = (255, 255, 255)
    GREEN = (0, 255, 0)
    RED = (255, 0, 0)
    
    pygame.init()
    window = pygame.display.set_mode((WIDTH, HEIGHT))
    pygame.display.set_caption("Π—ΠΌΠ΅ΠΉΠΊΠ°")
    
    snake_segments = [(WIDTH / 2, HEIGHT / 2)]
    snake_direction = "right"
    snake_alive = True
    
    food_position = (random.randint(0, WIDTH - FOOD_SIZE), random.randint(0, HEIGHT - FOOD_SIZE))
    
    # Основной ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Ρ†ΠΈΠΊΠ»
    while True:
        # ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° событий
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                sys.exit()
            elif event.type == pygame.KEYDOWN:
                if event.key == pygame.K_LEFT:
                    snake_direction = "left"
                elif event.key == pygame.K_RIGHT:
                    snake_direction = "right"
                elif event.key == pygame.K_UP:
                    snake_direction = "up"
                elif event.key == pygame.K_DOWN:
                    snake_direction = "down"
        
        # Π”Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ Π·ΠΌΠ΅ΠΉΠΊΠΈ
        
        # ОбновлСниС экрана
        window.fill(WHITE)
        
        pygame.draw.rect(window, GREEN, (food_position[0], food_position[1], FOOD_SIZE, FOOD_SIZE))
        
        if snake_alive:
            for segment in snake_segments:
                pygame.draw.rect(window, WHITE, (segment[0], segment[1], SNAKE_SIZE, SNAKE_SIZE))
            
            # ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° столкновСний со стСнами
            if snake_segments[0][0] < 0 or snake_segments[0][0] >= WIDTH or snake_segments[0][1] < 0 or snake_segments[0][1] >= HEIGHT:
                snake_alive = False
            
            # ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° столкновСний со своим Ρ‚Π΅Π»ΠΎΠΌ
            for segment in snake_segments[1:]:
                if snake_segments[0] == segment:
                    snake_alive = False
            
            # ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° столкновСния с Π΅Π΄ΠΎΠΉ
            if snake_segments[0] == food_position:
                food_position = (random.randint(0, WIDTH - FOOD_SIZE), random.randint(0, HEIGHT - FOOD_SIZE))
                snake_segments.insert(0, (snake_segments[0][0], snake_segments[0][1]))
        
        if not snake_alive:
            pygame.draw.rect(window, RED, (0, 0, WIDTH, HEIGHT))
        
        pygame.display.flip()

Π¨Π°Π³ 9: Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° базовая ΠΈΠ³Ρ€Π° "Π—ΠΌΠ΅ΠΉΠΊΠ°" создана, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ ΠΈ внСсти Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ Π² ΠΈΠ³Ρ€Ρƒ. НапримСр, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ счСтчик ΠΎΡ‡ΠΊΠΎΠ², ΡƒΡ€ΠΎΠ²Π½ΠΈ слоТности, Π·Π²ΡƒΠΊΠΎΠ²Ρ‹Π΅ эффСкты ΠΈΠ»ΠΈ графичСскиС эффСкты. ВсС зависит ΠΎΡ‚ вашСй Ρ„Π°Π½Ρ‚Π°Π·ΠΈΠΈ ΠΈ Π½Π°Π²Ρ‹ΠΊΠΎΠ² Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π½Π° Python.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ ΡƒΠ·

Π’ΠΈΠ΄Π΅ΠΎ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅

Π—ΠΌΠ΅ΠΉΠΊΠ° Π½Π° Python Π·Π° 5 ΠΌΠΈΠ½ΡƒΡ‚ [ Pygame ]

Π£Ρ€ΠΎΠΊΠΈ Python / Как ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΈΠ³Ρ€Ρƒ Π—ΠΌΠ΅ΠΉΠΊΠ° (ΠœΠ°ΡΡ‚Π΅Ρ€-класс)

Как ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΈΠ³Ρ€Ρƒ Π½Π° Python ΠΏΠΎΠ΄ Android? (PyGame)

ΠŸΠΎΡ…ΠΎΠΆΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ:

πŸ”§ Как ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ языка программирования Python Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€: Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Idle?

Установка Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Π² Python: ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это?

πŸ“Š Как ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π² ΠŸΠΈΡ‚ΠΎΠ½Π΅: пошаговоС руководство

🐍 Как ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΈΠ³Ρ€Ρƒ Π·ΠΌΠ΅ΠΉΠΊΠ° Π½Π° ΠŸΠΈΡ‚ΠΎΠ½Π΅: пошаговоС руководство для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…

πŸ”₯ Как ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив Π² Python ΠΈ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ошибок | ΠŸΡ€ΠΎΡΡ‚ΠΎΠ΅ руководство для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…

πŸ”€ Как ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π±ΡƒΠΊΠ²Ρ‹ ΠΏΠΎ Π°Π»Ρ„Π°Π²ΠΈΡ‚Ρƒ Π² Python? Π‘ΠΎΠ²Π΅Ρ‚Ρ‹ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹! πŸ”€

Как ΡƒΡ…Π°ΠΆΠΈΠ²Π°Ρ‚ΡŒ Π·Π° своим ΡƒΠ΄Π°Π²ΠΎΠΌ ΠΈΠ»ΠΈ ΠΏΠΈΡ‚ΠΎΠ½ΠΎΠΌ 🐍: ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ совСты ΠΈ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ