Вопрос от Анонимного юзера 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()
Если хочешь, могу адаптировать игру под конкретный уровень сложности (например, добавить ускорение машин с ростом счёта, добавлять мешающие препятствия, сделать анимации курицы, добавить звуки и т. д.). Также могу объяснить, как можно заменить примитивные фигуры на изображения спрайтов, если у тебя есть набор графики.
Понравился ответ?
Задай свой вопрос
Напиши любую задачу или вопрос, а нейросеть её решит



