Новая Школа - онлайн-школа подготовки к ЕГЭ
Задача Задача №3315026
А
Аноним
23 августа 2025 13:16 · публичный вопрос
А
Аноним

Напиши мне игру где курица должна убегать от машин на пайтоне с помощью библиотеки пайгейм, скинь весь код

Ответ нейросети
23 августа 2025 13:16

Ниже — полный рабочий пример игры: курица убегает от машин. Реализовано на Python с использованием библиотеки Pygame без внешних файлов (рисуется простыми фигурами). Даны пояснения по шагам и сам код.

Что будет делать игра

  • Управляете курицей с помощью стрелок или WASD.
  • Машины появляются справа и движутся влево в разных дорожках.
  • Нужно избегать столкновений. За каждый проскользнувший мимо автомобиля объект даёт очки.
  • При столкновении игра заканчивается. Можно перезапустить, нажав R.

Пошаговое объяснение (что в коде происходит)

  • Инициализация Pygame и настройка окна и параметров игры.
  • Определение спавна машин: авто появляются на правом краю экрана в одной из заранее заданных дорожек и получают случайную скорость.
  • Управление курицей: с помощью клавиш можно двигать курицу по экрану в рамках границ.
  • Обновление объектов: машины движутся влево; если машина полностью ушла за левый край, она исчезает и счёт увеличивается.
  • Проверка столкновений: при пересечении курицы и машины считается столкновение — заканчиваем игру.
  • Отрисовка: рисуем небо, землю, дорожные линии, курицу и машины; выводим счёт и сообщение об окончании игры.
  • Возможность перезапуска: после проигрыша нажмите R.

Как запустить

  • Установите pygame: pip install pygame
  • Сохраните код в файл, например chicken_run.py
  • Запустите: python chicken_run.py

Полный код (полностью рабочий single-file пример)

import pygame
import random
import sys

# Константы игры
WIDTH, HEIGHT = 800, 600
FPS = 60

CHICKEN_W, CHICKEN_H = 50, 40
CAR_W, CAR_H = 90, 40

# Дорожки (y-координаты)
LANES_Y = [120, 200, 280, 360, 440, 520]

# Цвета
SKY = (135, 206, 235)
GROUND = (34, 139, 34)
YELLOW = (255, 223, 0)
BLACK = (0, 0, 0)
RED = (220, 20, 60)
ORANGE = (255, 140, 0)
WHITE = (255, 255, 255)

def draw_chicken(surf, rect):
    # Тело курицы
    pygame.draw.ellipse(surf, YELLOW, rect)
    # Зрительная деталь: клюв
    beak = [(rect.right, rect.centery - 4), (rect.right + 14, rect.centery), (rect.right, rect.centery + 4)]
    pygame.draw.polygon(surf, ORANGE, beak)
    # Глазик
    eye_x = rect.right - 8
    eye_y = rect.centery - 8
    pygame.draw.circle(surf, BLACK, (eye_x, eye_y), 3)

def main():
    pygame.init()
    screen = pygame.display.set_mode((WIDTH, HEIGHT))
    pygame.display.set_caption("Курица: убегай от машин")
    clock = pygame.time.Clock()

    font = pygame.font.SysFont(None, 36)
    big_font = pygame.font.SysFont(None, 72)

    # Игровой объект: курица
    chicken = pygame.Rect(100, HEIGHT // 2 - CHICKEN_H // 2, CHICKEN_W, CHICKEN_H)
    chicken_speed = 5

    # Список машин (объекты: rect + скорость)
    cars = []

    score = 0
    game_over = False

    # Таймер спавна машин
    SPAWN_EVENT = pygame.USEREVENT + 1
    pygame.time.set_timer(SPAWN_EVENT, 900)

    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                sys.exit()
            if event.type == SPAWN_EVENT and not game_over:
                # Спавн машины на правом краю в одной из дорожек
                y = random.choice(LANES_Y)
                rect = pygame.Rect(WIDTH, y, CAR_W, CAR_H)
                speed = random.randint(6, 12) + int(score * 0.2)  # скорость растёт с очками
                cars.append({'rect': rect, 'speed': speed})
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_r and game_over:
                    # Перезапуск игры
                    chicken.center = (100, HEIGHT // 2)
                    cars.clear()
                    score = 0
                    game_over = False

        keys = pygame.key.get_pressed()
        if not game_over:
            # Управление курицей
            if keys[pygame.K_LEFT] or keys[pygame.K_a]:
                chicken.x -= chicken_speed
            if keys[pygame.K_RIGHT] or keys[pygame.K_d]:
                chicken.x += chicken_speed
            if keys[pygame.K_UP] or keys[pygame.K_w]:
                chicken.y -= chicken_speed
            if keys[pygame.K_DOWN] or keys[pygame.K_s]:
                chicken.y += chicken_speed

            # Границы экрана
            chicken.clamp_ip(pygame.Rect(0, 0, WIDTH, HEIGHT))

            # Обновление машин
            for car in cars[:]:
                car['rect'].x -= car['speed']
                # Машина ушла за левый край — счёт за пройденную машину
                if car['rect'].right < 0:
                    cars.remove(car)
                    score += 1
                # Проверка столкновения
                if chicken.colliderect(car['rect']):
                    game_over = True

        # Рисование
        screen.fill(SKY)

        # Земля и линии
        pygame.draw.rect(screen, GROUND, (0, HEIGHT - 100, WIDTH, 100))
        for y in LANES_Y:
            pygame.draw.line(screen, WHITE, (0, y), (WIDTH, y), 1)

        # Курочка
        draw_chicken(screen, chicken)

        # Машины
        for car in cars:
            pygame.draw.rect(screen, RED, car['rect'])
            # Показательные покрышки
            pygame.draw.circle(screen, BLACK, (car['rect'].x + 15, car['rect'].centery + 8), 4)
            pygame.draw.circle(screen, BLACK, (car['rect'].right - 15, car['rect'].centery + 8), 4)

        # HUD
        score_text = font.render(f"Пройдено: {score}", True, WHITE)
        screen.blit(score_text, (10, 10))

        if game_over:
            go_text = big_font.render("Игра окончена! Нажмите R чтобы перезапустить", True, WHITE)
            screen.blit(go_text, (WIDTH // 2 - go_text.get_width() // 2, HEIGHT // 2 - 40))

        pygame.display.flip()
        clock.tick(FPS)

if __name__ == "__main__":
    main()

Если хочешь, могу адаптировать игру под конкретный уровень сложности (например, добавить ускорение машин с ростом счёта, добавлять мешающие препятствия, сделать анимации курицы, добавить звуки и т. д.). Также могу объяснить, как можно заменить примитивные фигуры на изображения спрайтов, если у тебя есть набор графики.