Загрузка данных


from pgzero_api_stub import *
from pgzero.rect import Rect
from pgzero.actor import Actor
import pgzrun
import random
import time

WIDTH = 800
HEIGHT = 600
TITLE = "Floaty Dash"

PLAYER_W = PLAYER_H = 50
START_X = WIDTH // 2
START_Y = HEIGHT // 2

player = Actor("creeper.png", (START_X, START_Y))
game_active = True

PLATFORM_H = 5
platform = Rect(0, START_Y + PLAYER_H // 2, WIDTH, PLATFORM_H)

# настройки врага
ENEMY_W = ENEMY_H = 50
ENEMY_SPEED = 7
enemies = []
PAUSE = 2
begin = time.time()


def create_enemy():
    x = WIDTH
    y = platform.y - ENEMY_H // 2  # Start from bottom (platform level)
    enemy = Actor("spike-up.png", (x, y))
    enemies.append(enemy)


def draw():
    screen.fill("navy")
    player.draw()
    screen.draw.filled_rect(platform, 'darkgreen')

    # Draw enemies
    for enemy in enemies:
        enemy: Actor
        enemy.draw()


jump_counter = 0
JUMP_SPEED = 8
JUMP_HEIGHT = 125 // JUMP_SPEED


def update():
    global jump_counter, game_active, begin, PAUSE

    if not game_active:
        return

    if random.randint(0, 100) <= 3 and time.time() - begin >= PAUSE:
        create_enemy()
        begin = time.time()

    for enemy in enemies[:]:
        enemy.x -= ENEMY_SPEED
        if enemy.x < -ENEMY_W:
            enemies.remove(enemy)

    if 0 < jump_counter <= JUMP_HEIGHT or (keyboard.space and player.y == START_Y):
        player.y -= JUMP_SPEED
        jump_counter += 1
    elif jump_counter > JUMP_HEIGHT:
        jump_counter = 0
    elif player.y < START_Y:
        player.y += JUMP_SPEED

    for enemy in enemies:
        enemy: Actor
        enemy_rect = Rect(enemy.x, enemy.y, ENEMY_W, ENEMY_H)
        player_rect = Rect(player.x, player.y, PLAYER_W, PLAYER_H)
        if player_rect.colliderect(enemy_rect):
            game_active = False
            break


pgzrun.go()