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()