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

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

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

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

Вопрос от Анонимного юзера 23 августа 2025 13:14

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

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

23 августа 2025 13:14

Отличная задача для практики: сделаем простую игру на Pygame, где курица должна убегать от машин. Ниже сначала подробное объяснение по шагам, затем полный рабочий код. Это подходит для уровня средней школы: понятные классы, понятная логика и минималистичный графический стиль без внешних файлов.

Чего мы добиваемся

  • Курица (player) управляется стрелками (или WASD).
  • Машины (cars) движутся по нескольким «полосам» слева направо.
  • Если курица столкнулaсь с машиной — игра заканчивается.
  • Если курица достигает верха экрана — игрок выигрывает.
  • Добавим простой счётчик времени/очков и возможность перезапускать игру.

Пошаговый план

  1. Подготовка окружения
  • Импортируем pygame, инициализируем и создаём экран нужного размера.
  • Определяем базовые константы: размеры, скорости, цвета.
  1. Фигуры и классы
  • Класс Chicken: хранит положение курицы, размеры и метод движения внутри границ экрана.
  • Класс Car: прямоугольник машины, скорость, направление; метод обновления положения.
  1. Логика движения и препятствий
  • Машины порождаются на экране слева и движутся вправо по выбранной полосе.
  • У каждой полосы может быть своя скорость; можно варьировать.
  • Проверяем столкновение курицы с машинами.
  1. Победа и проигрыш
  • Победа: курица достигает верхней границы.
  • Проигрыш: столкновение с машиной.
  • В конце можно показывать сообщение и ждать нажатия R для рестарта.
  1. Отрисовка и цикл игры
  • Рисуем фон, дорожки/полосы, курицу и машины.
  • Обновляем экран и ограничиваем FPS.

Полный рабочий код (Python, Pygame)

import pygame
import random
import sys

# 1) Инициализация и константы
pygame.init()

WIDTH, HEIGHT = 800, 600
SCREEN = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("Курица против машин — Пайгейм")

# Цвета
BLACK = (0, 0, 0)
WHITE = (255, 255, 255)
YELLOW = (255, 230, 0)
RED = (200, 0, 0)
GRAY = (50, 50, 50)
GREEN = (0, 200, 0)

# Таймер и шрифты
clock = pygame.time.Clock()
FONT = pygame.font.SysFont(None, 36)

# Курица параметры
CHICKEN_W, CHICKEN_H = 40, 40
CHICKEN_SPEED = 5

# Машины параметры
CAR_W, CAR_H = 60, 40
CAR_MIN_SPEED, CAR_MAX_SPEED = 3, 6

# Линии дорог (горизонтальные полосы)
LANE_Y = [480, 420, 360, 300, 240]  # позиции по вертикали (от верхнего края вниз)

# 2) Классы
class Chicken:
    def __init__(self, x, y):
        self.rect = pygame.Rect(x, y, CHICKEN_W, CHICKEN_H)

    def move(self, dx, dy):
        self.rect.x += dx
        self.rect.y += dy
        # Ограничиваем выход за границы экрана
        if self.rect.left < 0:
            self.rect.left = 0
        if self.rect.right > WIDTH:
            self.rect.right = WIDTH
        if self.rect.top < 0:
            self.rect.top = 0
        if self.rect.bottom > HEIGHT:
            self.rect.bottom = HEIGHT

    def draw(self, surface):
        # Простая курица: желтый прямоугольник
        pygame.draw.rect(surface, YELLOW, self.rect)
        # Годится добавить клюв/глаза, если хочется
        # Клюв
        pygame.draw.polygon(surface, (255, 140, 0), [
            (self.rect.right, self.rect.centery),
            (self.rect.right + 6, self.rect.centery - 4),
            (self.rect.right + 6, self.rect.centery + 4)
        ])

class Car:
    def __init__(self, x, y, speed, direction=1):
        self.rect = pygame.Rect(x, y, CAR_W, CAR_H)
        self.speed = speed
        self.direction = direction  # 1 — вправо, -1 — влево (для вариативности можно добавить)

    def update(self):
        self.rect.x += self.speed * self.direction

    def is_off_screen(self):
        return self.rect.left > WIDTH or self.rect.right < 0

    def draw(self, surface):
        pygame.draw.rect(surface, RED, self.rect)

# 3) Вспомогательные функции
def reset_game():
    # Создаем курицу внизу экрана по центру
    chicken = Chicken(WIDTH // 2 - CHICKEN_W // 2, HEIGHT - CHICKEN_H - 10)
    cars = []
    return chicken, cars

def spawn_car(lane_y):
    # Машина появляется слева и движется вправо
    x = -CAR_W - random.randint(0, 60)
    speed = random.randint(CAR_MIN_SPEED, CAR_MAX_SPEED)
    car = Car(x, lane_y - CAR_H // 2, speed, direction=1)
    return car

def draw_road(surface):
    # Фон дороги и полосы
    surface.fill(GREEN)  # трава снизу
    # дорога
    road_height = 5
    road_y = 0
    pygame.draw.rect(surface, (50, 50, 50), (0, 0, WIDTH, HEIGHT))  # темная основа
    # Нарисуем дорожные полосы
    for y in LANES_Y:
        pygame.draw.line(surface, WHITE, (0, y), (WIDTH, y), 2)

def render_text(surface, text, pos, color=WHITE):
    img = FONT.render(text, True, color)
    surface.blit(img, pos)

# 4) Инициализация игры
chicken, cars = reset_game()
SPAWN_EVENT = pygame.USEREVENT + 1
pygame.time.set_timer(SPAWN_EVENT, 900)  # каждые 900 мс создаём машину

game_over = False
won = False
start_ticks = pygame.time.get_ticks()

# 5) Основной цикл
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 and not won:
            lane_index = random.randint(0, len(LANE_Y) - 1)
            lane_y = LANES_Y[lane_index]
            cars.append(spawn_car(lane_y))
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_r:
                # Рестарт
                chicken, cars = reset_game()
                game_over = False
                won = False
                start_ticks = pygame.time.get_ticks()
            if event.key == pygame.K_ESCAPE:
                pygame.quit()
                sys.exit()

    keys = pygame.key.get_pressed()
    if not game_over and not won:
        dx = dy = 0
        if keys[pygame.K_LEFT] or keys[pygame.K_a]:
            dx = -CHICKEN_SPEED
        if keys[pygame.K_RIGHT] or keys[pygame.K_d]:
            dx = CHICKEN_SPEED
        if keys[pygame.K_UP] or keys[pygame.K_w]:
            dy = -CHICKEN_SPEED
        if keys[pygame.K_DOWN] or keys[pygame.K_s]:
            dy = CHICKEN_SPEED
        chicken.move(dx, dy)

        # Обновление машин
        for car in cars:
            car.update()
        # Удаление вылетевших машин
        cars = [c for c in cars if not c.is_off_screen()]

        # Проверка столкновений
        for car in cars:
            if chicken.rect.colliderect(car.rect):
                game_over = True
                break

        # Победа: курица достигла верхней границы
        if chicken.rect.top <= 0:
            won = True

    # 6) Рендеринг
    draw_road(SCREEN)

    # Рисуем дорожную разметку внутри дороги
    for y in LANES_Y:
        pygame.draw.line(SCREEN, WHITE, (0, y), (WIDTH, y), 2)

    # Рисуем курицу и машины
    chicken.draw(SCREEN)
    for car in cars:
        car.draw(SCREEN)

    # HUD
    elapsed_sec = max(0, (pygame.time.get_ticks() - start_ticks) // 1000)
    render_text(SCREEN, f"Time: {elapsed_sec}s", (10, 10), WHITE)

    if game_over:
        render_text(SCREEN, "Game Over! Press R to restart", (WIDTH // 2 - 180, HEIGHT // 2 - 20), WHITE)
    if won:
        render_text(SCREEN, "You Won! Press R to restart", (WIDTH // 2 - 190, HEIGHT // 2 - 20), WHITE)

    render_text(SCREEN, "Controls: Arrow keys or WASD to move", (10, HEIGHT - 40), WHITE)

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

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

  1. Установите Pygame:
    • pip install pygame
  2. Сохраните код в файл, например, chicken_game.py.
  3. Запустите:
    • python chicken_game.py
  4. Управление: стрелки или WASD. Достигните верхней части экрана — победа. Если столкнётесь с машиной — перезапуск кнопкой R.

Дополнительные идеи для обучения и улучшения

  • Добавить уровни: скорость машин возрастает после каждого пройденного этапа.
  • Добавить звук (если добавить аудиофайлы).
  • Добавить разные визуальные спрайты для курицы и машин, чтобы улучшить восприятие.
  • Сделать разные направления движения машин по полосам (часть полос движется слева направо, часть — справа налево).

Если хочешь, могу адаптировать игру под конкретный уровень класса или сделать проще/сложнее, добавить функции подсказок или сохранить рекорды.

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

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

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

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

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

qr-codegoogle-playapp-store

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

Напиши мне игру где курица должна убегать от машин на пайтоне с помощью библиотеки пайгейм
Отличная задача для практики: сделаем простую игру на Pygame, где курица должна убегать от машин. Ниже сначала подробное объяснение по шагам, затем полный рабочий код. Это подходит для уровня средней школы: понятные классы, понятная логика и минималистичный графический стиль без внешних файлов. Чего мы добиваемся - Курица (player) управляется стрелками (или WASD). - Машины (cars) движутся по нескольким «полосам» слева направо. - Если курица столкнулaсь с машиной — игра заканчивается. - Если курица достигает верха экрана — игрок выигрывает. - Добавим простой счётчик времени/очков и возможность перезапускать игру. Пошаговый план 1) Подготовка окружения - Импортируем pygame, инициализируем и создаём экран нужного размера. - Определяем базовые константы: размеры, скорости, цвета. 2) Фигуры и классы - Класс Chicken: хранит положение курицы, размеры и метод движения внутри границ экрана. - Класс Car: прямоугольник машины, скорость, направление; метод обновления положения. 3) Логика движения и препятствий - Машины порождаются на экране слева и движутся вправо по выбранной полосе. - У каждой полосы может быть своя скорость; можно варьировать. - Проверяем столкновение курицы с машинами. 4) Победа и проигрыш - Победа: курица достигает верхней границы. - Проигрыш: столкновение с машиной. - В конце можно показывать сообщение и ждать нажатия R для рестарта. 5) Отрисовка и цикл игры - Рисуем фон, дорожки/полосы, курицу и машины. - Обновляем экран и ограничиваем FPS. Полный рабочий код (Python, Pygame) ```python import pygame import random import sys # 1) Инициализация и константы pygame.init() WIDTH, HEIGHT = 800, 600 SCREEN = pygame.display.set_mode((WIDTH, HEIGHT)) pygame.display.set_caption("Курица против машин — Пайгейм") # Цвета BLACK = (0, 0, 0) WHITE = (255, 255, 255) YELLOW = (255, 230, 0) RED = (200, 0, 0) GRAY = (50, 50, 50) GREEN = (0, 200, 0) # Таймер и шрифты clock = pygame.time.Clock() FONT = pygame.font.SysFont(None, 36) # Курица параметры CHICKEN_W, CHICKEN_H = 40, 40 CHICKEN_SPEED = 5 # Машины параметры CAR_W, CAR_H = 60, 40 CAR_MIN_SPEED, CAR_MAX_SPEED = 3, 6 # Линии дорог (горизонтальные полосы) LANE_Y = [480, 420, 360, 300, 240] # позиции по вертикали (от верхнего края вниз) # 2) Классы class Chicken: def __init__(self, x, y): self.rect = pygame.Rect(x, y, CHICKEN_W, CHICKEN_H) def move(self, dx, dy): self.rect.x += dx self.rect.y += dy # Ограничиваем выход за границы экрана if self.rect.left < 0: self.rect.left = 0 if self.rect.right > WIDTH: self.rect.right = WIDTH if self.rect.top < 0: self.rect.top = 0 if self.rect.bottom > HEIGHT: self.rect.bottom = HEIGHT def draw(self, surface): # Простая курица: желтый прямоугольник pygame.draw.rect(surface, YELLOW, self.rect) # Годится добавить клюв/глаза, если хочется # Клюв pygame.draw.polygon(surface, (255, 140, 0), [ (self.rect.right, self.rect.centery), (self.rect.right + 6, self.rect.centery - 4), (self.rect.right + 6, self.rect.centery + 4) ]) class Car: def __init__(self, x, y, speed, direction=1): self.rect = pygame.Rect(x, y, CAR_W, CAR_H) self.speed = speed self.direction = direction # 1 — вправо, -1 — влево (для вариативности можно добавить) def update(self): self.rect.x += self.speed * self.direction def is_off_screen(self): return self.rect.left > WIDTH or self.rect.right < 0 def draw(self, surface): pygame.draw.rect(surface, RED, self.rect) # 3) Вспомогательные функции def reset_game(): # Создаем курицу внизу экрана по центру chicken = Chicken(WIDTH // 2 - CHICKEN_W // 2, HEIGHT - CHICKEN_H - 10) cars = [] return chicken, cars def spawn_car(lane_y): # Машина появляется слева и движется вправо x = -CAR_W - random.randint(0, 60) speed = random.randint(CAR_MIN_SPEED, CAR_MAX_SPEED) car = Car(x, lane_y - CAR_H // 2, speed, direction=1) return car def draw_road(surface): # Фон дороги и полосы surface.fill(GREEN) # трава снизу # дорога road_height = 5 road_y = 0 pygame.draw.rect(surface, (50, 50, 50), (0, 0, WIDTH, HEIGHT)) # темная основа # Нарисуем дорожные полосы for y in LANES_Y: pygame.draw.line(surface, WHITE, (0, y), (WIDTH, y), 2) def render_text(surface, text, pos, color=WHITE): img = FONT.render(text, True, color) surface.blit(img, pos) # 4) Инициализация игры chicken, cars = reset_game() SPAWN_EVENT = pygame.USEREVENT + 1 pygame.time.set_timer(SPAWN_EVENT, 900) # каждые 900 мс создаём машину game_over = False won = False start_ticks = pygame.time.get_ticks() # 5) Основной цикл 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 and not won: lane_index = random.randint(0, len(LANE_Y) - 1) lane_y = LANES_Y[lane_index] cars.append(spawn_car(lane_y)) if event.type == pygame.KEYDOWN: if event.key == pygame.K_r: # Рестарт chicken, cars = reset_game() game_over = False won = False start_ticks = pygame.time.get_ticks() if event.key == pygame.K_ESCAPE: pygame.quit() sys.exit() keys = pygame.key.get_pressed() if not game_over and not won: dx = dy = 0 if keys[pygame.K_LEFT] or keys[pygame.K_a]: dx = -CHICKEN_SPEED if keys[pygame.K_RIGHT] or keys[pygame.K_d]: dx = CHICKEN_SPEED if keys[pygame.K_UP] or keys[pygame.K_w]: dy = -CHICKEN_SPEED if keys[pygame.K_DOWN] or keys[pygame.K_s]: dy = CHICKEN_SPEED chicken.move(dx, dy) # Обновление машин for car in cars: car.update() # Удаление вылетевших машин cars = [c for c in cars if not c.is_off_screen()] # Проверка столкновений for car in cars: if chicken.rect.colliderect(car.rect): game_over = True break # Победа: курица достигла верхней границы if chicken.rect.top <= 0: won = True # 6) Рендеринг draw_road(SCREEN) # Рисуем дорожную разметку внутри дороги for y in LANES_Y: pygame.draw.line(SCREEN, WHITE, (0, y), (WIDTH, y), 2) # Рисуем курицу и машины chicken.draw(SCREEN) for car in cars: car.draw(SCREEN) # HUD elapsed_sec = max(0, (pygame.time.get_ticks() - start_ticks) // 1000) render_text(SCREEN, f"Time: {elapsed_sec}s", (10, 10), WHITE) if game_over: render_text(SCREEN, "Game Over! Press R to restart", (WIDTH // 2 - 180, HEIGHT // 2 - 20), WHITE) if won: render_text(SCREEN, "You Won! Press R to restart", (WIDTH // 2 - 190, HEIGHT // 2 - 20), WHITE) render_text(SCREEN, "Controls: Arrow keys or WASD to move", (10, HEIGHT - 40), WHITE) pygame.display.flip() clock.tick(60) ``` Как запустить код 1) Установите Pygame: - pip install pygame 2) Сохраните код в файл, например, chicken_game.py. 3) Запустите: - python chicken_game.py 4) Управление: стрелки или WASD. Достигните верхней части экрана — победа. Если столкнётесь с машиной — перезапуск кнопкой R. Дополнительные идеи для обучения и улучшения - Добавить уровни: скорость машин возрастает после каждого пройденного этапа. - Добавить звук (если добавить аудиофайлы). - Добавить разные визуальные спрайты для курицы и машин, чтобы улучшить восприятие. - Сделать разные направления движения машин по полосам (часть полос движется слева направо, часть — справа налево). Если хочешь, могу адаптировать игру под конкретный уровень класса или сделать проще/сложнее, добавить функции подсказок или сохранить рекорды.