Бесплатный урок с нашим репетитором!

Узнать подробнее

Новая Школа - онлайн-школа подготовки к ЕГЭ
При поддержке
Посмотреть все вопросы нейросети
Бесплатный пробный урок с репетитором

Узнай больше про репетиторов Новой Школы и запишись на бесплатный пробный урок. Мы проверим твой уровень знаний и составим план обучения по любому предмету и классу

Вопрос от Анонимного юзера 11 марта 2026 11:28

Напишите программный код для игры пакмэн или змейка

Ответ нейросети

11 марта 2026 11:28

Ниже приведен полный рабочий пример простой игры змейка на Python с использованием Pygame. Это удобный и наглядный вариант для понимания основ игровой логики: управление, движение змейки, появление еды, рост, столкновения и счёт. Если хочешь, могу позже расписать упрощённую версию Pac-Man.

Что понадобится и как запустить

  • Python 3.x
  • Установить Pygame: pip install pygame
  • Скопировать код в файл, например snake.py
  • Запустить: python snake.py

Код (Snake)

import pygame
import random
import sys

# Константы
CELL_SIZE = 20            # размер клетки сетки в пикселях
GRID_WIDTH = 30           # количество клеток по горизонтали
GRID_HEIGHT = 20           # количество клеток по вертикали
SCREEN_WIDTH = GRID_WIDTH * CELL_SIZE
SCREEN_HEIGHT = GRID_HEIGHT * CELL_SIZE

# Цвета
BLACK = (0, 0, 0)
WHITE = (255, 255, 255)
GREEN = (0, 180, 0)
HEAD_GREEN = (0, 100, 0)
RED = (200, 0, 0)

def place_food(snake):
    """Возвращает случайную позицию пищи, не занятую змеёй."""
    while True:
        pos = (random.randrange(GRID_WIDTH), random.randrange(GRID_HEIGHT))
        if pos not in snake:
            return pos

def draw_snake(screen, snake):
    """Рисует змею на экране: голова другим оттенком."""
    for i, (x, y) in enumerate(snake):
        rect = pygame.Rect(x * CELL_SIZE, y * CELL_SIZE, CELL_SIZE, CELL_SIZE)
        if i == 0:
            pygame.draw.rect(screen, HEAD_GREEN, rect)  # голова
        else:
            pygame.draw.rect(screen, GREEN, rect)

def draw_food(screen, food):
    """Рисует пищу."""
    x, y = food
    rect = pygame.Rect(x * CELL_SIZE, y * CELL_SIZE, CELL_SIZE, CELL_SIZE)
    pygame.draw.rect(screen, RED, rect)

def main():
    pygame.init()
    screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))
    pygame.display.set_caption("Snake")
    clock = pygame.time.Clock()
    font = pygame.font.SysFont(None, 36)

    # Начальные параметры
    snake = [(5, 10), (4, 10), (3, 10)]  # начальная длина 3 клетки
    direction = (1, 0)      # движение вправо
    next_direction = direction
    food = place_food(snake)
    score = 0
    game_over = False

    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_UP and direction != (0, 1):
                    next_direction = (0, -1)
                elif event.key == pygame.K_DOWN and direction != (0, -1):
                    next_direction = (0, 1)
                elif event.key == pygame.K_LEFT and direction != (1, 0):
                    next_direction = (-1, 0)
                elif event.key == pygame.K_RIGHT and direction != (-1, 0):
                    next_direction = (1, 0)
                elif event.key == pygame.K_r and game_over:
                    main()  # перезапуск игры
                elif event.key == pygame.K_q:
                    pygame.quit()
                    sys.exit()

        if not game_over:
            # Принятие направления
            direction = next_direction
            head_x, head_y = snake[0]
            dx, dy = direction
            new_head = (head_x + dx, head_y + dy)

            # Столкновение со стенами
            if not (0 <= new_head[0] < GRID_WIDTH and 0 <= new_head[1] < GRID_HEIGHT):
                game_over = True
            # Само столкновение
            elif new_head in snake:
                game_over = True
            else:
                # Перемещение: добавляем новую голову
                snake.insert(0, new_head)
                if new_head == food:
                    # съели пищу: увеличить счёт и поставить новую пищу
                    score += 1
                    food = place_food(snake)
                else:
                    # обычное движение: удаляем хвост
                    snake.pop()

        # Рендеринг
        screen.fill(BLACK)
        draw_food(screen, food)
        draw_snake(screen, snake)

        score_text = font.render(f"Score: {score}", True, WHITE)
        screen.blit(score_text, (5, 5))

        if game_over:
            over_text = font.render("Game Over! Press R to restart", True, WHITE)
            screen.blit(over_text, (
                SCREEN_WIDTH // 2 - over_text.get_width() // 2,
                SCREEN_HEIGHT // 2 - 20
            ))

        pygame.display.flip()

        if not game_over:
            # скорость: выше счёт - быстрее змея
            clock.tick(10 + score // 2)

if __name__ == "__main__":
    main()

Пояснение основных частей кода (пошагово)

  • Инициализация и константы
    • CELL_SIZE задаёт размер клетки сетки в пикселях, GRID_WIDTH и GRID_HEIGHT — размеры поля по клеткам. SCREEN_WIDTH/HEIGHT — размер окна.
    • Цвета — для змейки, головы, пищи и фона.
  • place_food(snake)
    • Генерирует случайную клетку в пределах поля, которая не занята змейкой.
  • Основной цикл (main)
    • Инициализация Pygame, создание окна, шрифт.
    • Состояния: snake — список клеток (первый элемент — голова); direction/next_direction — направление движения; food — положение пищи; score; game_over.
    • Обработчик событий:
      • Клавиши управления стрелками: запрещаем смену на противоположное направление.
      • R — перезапуск игры, Q — выход.
    • Логика движения:
      • head + direction → новая голова. Если خارج границ поля или наезд на собственное тело — конец игры.
      • Если новая голова совпадает с пищей — змея растёт (мы не удаляем хвост), счёт увеличивается и генерируется новая пища.
      • Иначе — перемещение без роста (удаляем хвост).
    • Рендеринг:
      • Фон, пища, змея, счёт.
      • Сообщение “Game Over” и подсказка перезапуска.
    • Управление скоростью: clock.tick(10 + score // 2) — чем выше счёт, тем быстрее игра.

Как адаптировать под Pac-Man (упрощённая версия)

  • Простая сеточная карта-лабиринт: задайте лабиринт в виде двумерного массива (0 = пустая клетка, 1 = стенка, 2 = пища).
  • Игровой цикл будет работать аналогично, но вместо движения по одной прямой можно реализовать две вещи:
    • Герои-пакмэны (пакман) движутся по сетке, меняя направление только на свободных клетках (без стенок).
    • Препятствия (призраки) работают по простейшему ИИ: выбирают случайное направление среди свободных соседних клеток или используют элементарное следование к Pac-Man.
  • Пищу можно разместить в случайных пустых клетках; фраговые бонусы можно сделать как Power Pellets.
  • Но Pac-Man требует более сложной логики: карты-лабиринты, столкновения с стенами, движения призраков, эффект от Power Pellets (грёза призраков и т.д.). Это значительно длиннее и требует отдельного объяснения.

Если хочешь, могу:

  • сделать упрощённую версию Pac-Man с минимальной физикой и без сложной логики призраков, но с сеткой-лабиринтом;
  • или адаптировать этот Snake-пример под твой уровень подготовки, добавив усложнения (например, ускорение после каждого съеденного яблока, разные уровни сложности, меню, сохранение high score и т.д.).

Сообщи, хочешь ли упрощённую Pac-Man-версию и какие требования к функционалу (количество стен, базовая ИИ призраков, уровень сложности). Я подготовлю подробный шаг за шагом и полный код.

Задай свой вопрос

Напиши любую задачу или вопрос, а нейросеть её решит

Похожие вопросы 15

Бесплатно Мобильное приложение ГДЗ
Мобильное приложение ГДЗ

Задавай вопросы искуcственному интеллекту текстом или фотографиями в приложении на iPhone или Android

qr-codegoogle-playapp-store

Саша — ассистент в телеграмме

Напишите программный код для игры пакмэн или змейка
Ниже приведен полный рабочий пример простой игры змейка на Python с использованием Pygame. Это удобный и наглядный вариант для понимания основ игровой логики: управление, движение змейки, появление еды, рост, столкновения и счёт. Если хочешь, могу позже расписать упрощённую версию Pac-Man. Что понадобится и как запустить - Python 3.x - Установить Pygame: pip install pygame - Скопировать код в файл, например snake.py - Запустить: python snake.py Код (Snake) ```python import pygame import random import sys # Константы CELL_SIZE = 20 # размер клетки сетки в пикселях GRID_WIDTH = 30 # количество клеток по горизонтали GRID_HEIGHT = 20 # количество клеток по вертикали SCREEN_WIDTH = GRID_WIDTH * CELL_SIZE SCREEN_HEIGHT = GRID_HEIGHT * CELL_SIZE # Цвета BLACK = (0, 0, 0) WHITE = (255, 255, 255) GREEN = (0, 180, 0) HEAD_GREEN = (0, 100, 0) RED = (200, 0, 0) def place_food(snake): """Возвращает случайную позицию пищи, не занятую змеёй.""" while True: pos = (random.randrange(GRID_WIDTH), random.randrange(GRID_HEIGHT)) if pos not in snake: return pos def draw_snake(screen, snake): """Рисует змею на экране: голова другим оттенком.""" for i, (x, y) in enumerate(snake): rect = pygame.Rect(x * CELL_SIZE, y * CELL_SIZE, CELL_SIZE, CELL_SIZE) if i == 0: pygame.draw.rect(screen, HEAD_GREEN, rect) # голова else: pygame.draw.rect(screen, GREEN, rect) def draw_food(screen, food): """Рисует пищу.""" x, y = food rect = pygame.Rect(x * CELL_SIZE, y * CELL_SIZE, CELL_SIZE, CELL_SIZE) pygame.draw.rect(screen, RED, rect) def main(): pygame.init() screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT)) pygame.display.set_caption("Snake") clock = pygame.time.Clock() font = pygame.font.SysFont(None, 36) # Начальные параметры snake = [(5, 10), (4, 10), (3, 10)] # начальная длина 3 клетки direction = (1, 0) # движение вправо next_direction = direction food = place_food(snake) score = 0 game_over = False 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_UP and direction != (0, 1): next_direction = (0, -1) elif event.key == pygame.K_DOWN and direction != (0, -1): next_direction = (0, 1) elif event.key == pygame.K_LEFT and direction != (1, 0): next_direction = (-1, 0) elif event.key == pygame.K_RIGHT and direction != (-1, 0): next_direction = (1, 0) elif event.key == pygame.K_r and game_over: main() # перезапуск игры elif event.key == pygame.K_q: pygame.quit() sys.exit() if not game_over: # Принятие направления direction = next_direction head_x, head_y = snake[0] dx, dy = direction new_head = (head_x + dx, head_y + dy) # Столкновение со стенами if not (0 <= new_head[0] < GRID_WIDTH and 0 <= new_head[1] < GRID_HEIGHT): game_over = True # Само столкновение elif new_head in snake: game_over = True else: # Перемещение: добавляем новую голову snake.insert(0, new_head) if new_head == food: # съели пищу: увеличить счёт и поставить новую пищу score += 1 food = place_food(snake) else: # обычное движение: удаляем хвост snake.pop() # Рендеринг screen.fill(BLACK) draw_food(screen, food) draw_snake(screen, snake) score_text = font.render(f"Score: {score}", True, WHITE) screen.blit(score_text, (5, 5)) if game_over: over_text = font.render("Game Over! Press R to restart", True, WHITE) screen.blit(over_text, ( SCREEN_WIDTH // 2 - over_text.get_width() // 2, SCREEN_HEIGHT // 2 - 20 )) pygame.display.flip() if not game_over: # скорость: выше счёт - быстрее змея clock.tick(10 + score // 2) if __name__ == "__main__": main() ``` Пояснение основных частей кода (пошагово) - Инициализация и константы - CELL_SIZE задаёт размер клетки сетки в пикселях, GRID_WIDTH и GRID_HEIGHT — размеры поля по клеткам. SCREEN_WIDTH/HEIGHT — размер окна. - Цвета — для змейки, головы, пищи и фона. - place_food(snake) - Генерирует случайную клетку в пределах поля, которая не занята змейкой. - Основной цикл (main) - Инициализация Pygame, создание окна, шрифт. - Состояния: snake — список клеток (первый элемент — голова); direction/next_direction — направление движения; food — положение пищи; score; game_over. - Обработчик событий: - Клавиши управления стрелками: запрещаем смену на противоположное направление. - R — перезапуск игры, Q — выход. - Логика движения: - head + direction → новая голова. Если خارج границ поля или наезд на собственное тело — конец игры. - Если новая голова совпадает с пищей — змея растёт (мы не удаляем хвост), счёт увеличивается и генерируется новая пища. - Иначе — перемещение без роста (удаляем хвост). - Рендеринг: - Фон, пища, змея, счёт. - Сообщение “Game Over” и подсказка перезапуска. - Управление скоростью: clock.tick(10 + score // 2) — чем выше счёт, тем быстрее игра. Как адаптировать под Pac-Man (упрощённая версия) - Простая сеточная карта-лабиринт: задайте лабиринт в виде двумерного массива (0 = пустая клетка, 1 = стенка, 2 = пища). - Игровой цикл будет работать аналогично, но вместо движения по одной прямой можно реализовать две вещи: - Герои-пакмэны (пакман) движутся по сетке, меняя направление только на свободных клетках (без стенок). - Препятствия (призраки) работают по простейшему ИИ: выбирают случайное направление среди свободных соседних клеток или используют элементарное следование к Pac-Man. - Пищу можно разместить в случайных пустых клетках; фраговые бонусы можно сделать как Power Pellets. - Но Pac-Man требует более сложной логики: карты-лабиринты, столкновения с стенами, движения призраков, эффект от Power Pellets (грёза призраков и т.д.). Это значительно длиннее и требует отдельного объяснения. Если хочешь, могу: - сделать упрощённую версию Pac-Man с минимальной физикой и без сложной логики призраков, но с сеткой-лабиринтом; - или адаптировать этот Snake-пример под твой уровень подготовки, добавив усложнения (например, ускорение после каждого съеденного яблока, разные уровни сложности, меню, сохранение high score и т.д.). Сообщи, хочешь ли упрощённую Pac-Man-версию и какие требования к функционалу (количество стен, базовая ИИ призраков, уровень сложности). Я подготовлю подробный шаг за шагом и полный код.