Вопрос задан 20.10.2026 в 09:57. Предмет Информатика. Спрашивает Бодрова Полина.

Реализовать платформер, где персонаж должен двигаться из точки А в точку Б, перепрыгивая препятствия, с помощью библиотеки Arcade. Также реализовать победу и поражение.

Перейти к ответам

Ответы на вопрос

Отвечает Васюченко Никита.

Установите библиотеку командой pip install arcade, сохраните программу в файл main.py и запустите его.

from arcade import *

SCREEN_WIDTH = 1000
SCREEN_HEIGHT = 600
GRAVITY = 1
SPEED = 5
JUMP_SPEED = 18

class Game(Window):
    def __init__(self):
        super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, "Платформер")
        set_background_color(color.SKY_BLUE)
        self.player = SpriteSolidColor(40, 60, color.RED)
        self.player.center_x = 100
        self.player.center_y = 100
        self.walls = SpriteList()
        self.add_wall(500, 30, 1000, 60)
        self.add_wall(380, 110, 60, 100)
        self.add_wall(650, 110, 60, 100)
        self.goal = SpriteSolidColor(30, 100, color.YELLOW)
        self.goal.center_x = 930
        self.goal.center_y = 110
        self.physics = PhysicsEnginePlatformer(self.player, self.walls, gravity_constant=GRAVITY)
        self.state = "Игра"

    def add_wall(self, x, y, width, height):
        wall = SpriteSolidColor(width, height, color.DARK_BROWN)
        wall.center_x = x
        wall.center_y = y
        self.walls.append(wall)

    def on_draw(self):
        self.clear()
        self.walls.draw()
        self.goal.draw()
        self.player.draw()
        draw_text(self.state, 20, 550, color.BLACK, 24)
        if self.state != "Игра":
            draw_text("Нажмите R для новой игры", 300, 300, color.BLACK, 22)

    def on_key_press(self, key, modifiers):
        if key == key.LEFT:
            self.player.change_x = -SPEED
        if key == key.RIGHT:
            self.player.change_x = SPEED
        if key == key.UP and self.physics.can_jump():
            self.player.change_y = JUMP_SPEED
        if key == key.R and self.state != "Игра":
            self.player.center_x = 100
            self.player.center_y = 100
            self.player.change_x = 0
            self.player.change_y = 0
            self.state = "Игра"

    def on_key_release(self, key, modifiers):
        if key == key.LEFT or key == key.RIGHT:
            self.player.change_x = 0

    def on_update(self, delta_time):
        if self.state != "Игра":
            return
        self.physics.update()
        if check_for_collision(self.player, self.goal):
            self.state = "Победа!"
        if self.player.center_y < 0:
            self.state = "Поражение!"

Game()
run()

Красный квадрат — персонаж. Стрелки влево и вправо двигают его, стрелка вверх позволяет прыгать. Жёлтая фигура — точка Б: при касании наступает победа. Падение ниже экрана означает поражение.

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

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос