import random
from pgzero.clock import clock
from pgzero.actor import Actor
# --- Настройки окна ---
WIDTH = 1200
HEIGHT = 800
TITLE = "Движение"
FPS = 90
# --- Глобальные переменные ---
level = "1" # текущий уровень
enemies = [] # список врагов
# --- Актёры ---
fon = Actor('fon1', (WIDTH//2, HEIGHT//2), size=(1200,800))
fon2 = Actor('Battleground1', (WIDTH//2, HEIGHT//2), size=(1200,800))
char = Actor('Slime1_Idle_full', (100, 600), size=(75,75))
nextlevel = Actor('statue', (1150, 780), size=(100,100))
# --- Функции спавна и движения врагов ---
def new_enemy():
"""Добавляет одного врага справа за экраном."""
x = WIDTH + 100
y = random.randint(400, HEIGHT - 20)
enemy = Actor('Monster_Fly', (x, y), size=(150,150))
enemy.speed = random.randint(2, 8)
enemies.append(enemy)
def start_spawning():
"""Запускает периодический спавн врагов раз в 2 секунды."""
clock.schedule_interval(new_enemy, 2.0)
def stop_spawning():
"""Останавливает периодический спавн."""
clock.unschedule(new_enemy)
def enemy_monsters():
"""Смещение всех врагов влево и удаление ушедших за экран."""
for enemy in enemies[:]: # итерация по копии списка
enemy.x -= enemy.speed
if enemy.x < -50:
enemies.remove(enemy)
# --- Рисуем всё на экране ---
def draw():
if level == "1":
fon.draw()
else: # level == "2"
fon2.draw()
# всегда рисуем персонажа, портал (nextlevel) и врагов (если есть)
char.draw()
nextlevel.draw()
for e in enemies:
e.draw()
# --- Логика каждого кадра ---
def update(dt):
global level
# --- Управление персонажем ---
if keyboard.left and char.x > 20:
char.x -= 5
char.image = 'Slime1_Run_body'
elif keyboard.right and char.x < WIDTH-20:
char.x += 5
char.image = 'Slime1_Run_body (1)'
elif keyboard.up and char.y > 400:
char.y -= 5
char.image = 'Slime1_Walk_full'
elif keyboard.down and char.y < HEIGHT-20:
char.y += 5
char.image = 'Slime1_Idle_full'
else:
char.image = 'Slime1_Idle_full'
# --- Переход на уровень 2 ---
if char.colliderect(nextlevel) and level == "1":
level = "2"
# сразу накидаем начальную волну
for _ in range(5):
new_enemy()
# и запустим таймер для периодического спауна
start_spawning()
# --- Движение и очистка врагов (только на lvl 2) ---
if level == "2":
enemy_monsters()
#pgzero
import random
WIDTH = 1200 # Ширина окна
HEIGHT = 800 # Высота окна
TITLE = "Движение" # Заголовок окна игры
FPS = 90 # Количество кадров в секунду
# Переменные
level = "1"
mode = "game"
# Объекты
fon = Actor('fon1', size=(1200,800))
fon2 = Actor('Battleground1', size=(1200,800))
char = Actor('Slime1_Idle_full', (100, 600), size=(75,75))
nextlevel = Actor('statue', (1200, 800))
enemies = []
levels = []
def enemy_generation():
for i in range(1):
x = random.randint(1250, 1400)
y = random.randint(400, 780)
enemy = Actor('Monster_Fly', (x,y), size=(150, 150))
enemy.speed = random.randint(2, 8)
enemies.append(enemy)
# Отрисовка
def draw():
global level, mode
fon.draw()
char.draw()
nextlevel.draw()
if level == '2':
fon2.draw()
char.draw()
# enemy.draw()
for i in range(len(enemies)):
enemies[i].draw()
#движение врагов
def new_enemy():
x = 1300
y = random.randint(400, 780)
enemy = Actor('Monster_Fly', (x,y), size=(150, 150))
enemy.speed = random.randint(2, 8)
enemies.append(enemy)
def enemy_monsters():
for i in range(len(enemies)):
if enemies[i].x > -20:
enemies[i].x -= enemies[i].speed
else:
enemies.pop(i)
new_enemy()
def update(dt):
global level, mode
# Управление
if keyboard.left and char.x > 20:
char.x = char.x - 5
char.image = 'Slime1_Run_body'
elif keyboard.right and char.x < 1180:
char.x = char.x + 5
char.image = 'Slime1_Run_body (1)'
elif keyboard.up and char.y > 400:
char.y = char.y - 5
char.image = 'Slime1_Walk_full'
elif keyboard.down and char.y < 780:
char.y = char.y + 5
char.image = 'Slime1_Idle_full'
else:
char.image = 'Slime1_Idle_full'
if char.colliderect(nextlevel):
level = "2"
if level == "2":
enemy_generation()
enemy_monsters()
new_enemy()