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


import pgzrun
import random
import time

from pygame.math import Vector2

WIDTH = 1456
HEIGHT = 816
TITLE = "Defending the Mitrons Empire"

player1 = Actor("draconchik.png")
player2 = Actor("penek.png")
player3 = Actor("osminog.png")
player4 = Actor("legushka.png")

enemyis = []


die_enemyis = []

enemy_skins = [
    [Actor("cherep s krilami.png")],
    [Actor("cherep s krilami.png"),Actor("privedenie.png")],
    [Actor("cherep s krilami.png"),Actor("privedenie.png"),Actor("zelenay monstr.png")],
    [Actor("cherep s krilami.png"),Actor("privedenie.png"),Actor("zelenay monstr.png"),Actor("skelet.png")],
]


bullets = []

final_enemy = []

speed = 8

level = 0

end = False

game_win = False

a = 0

mouse_pos = 0

def on_key_down(key):
    global a, player
    if key == keys.F:
        a += 1
        if a % 4 == 0:
             player = player1
        elif a % 4 == 1:
            player = player2
        elif a % 4 == 2:
            player = player3
        elif a % 4 == 3:
            player = player4
        player.pos = mouse_pos


player = player1

def draw():

    if game_win == False:
        if level == 0:
            screen.blit("fon les.jpg", (0, 0))
        if level == 1:
            screen.blit("gorod.jpg", (0, 0))
        if level == 2:
            screen.blit("zvezdnoe nebo.jpg", (0, 0))
        if level == 3:
            screen.blit("temnoe mesto.jpg", (0, 0))
        for bullet in bullets:
            bullet.draw()
        player.draw()
        for enemy in enemyis:
            enemy.draw()
    else:
        screen.fill("black")
        screen.draw.text(f"Победа",center = (WIDTH // 2, HEIGHT // 2), fontsize = 60, color = "green")



def on_mouse_down():
    shoot()

def on_mouse_move(pos):
    global mouse_pos
    mouse_pos = pos


def shoot():
    bullet = Actor("krasnay faerbool.png")
    bullet.pos = player.pos
    bullet.speed = 8
    derection = Vector2(mouse_pos[0]-player.x,mouse_pos[1]-player.y)
    bullet.direction = derection.normalize()
    bullets.append(bullet)


def update():
    global end, enemyis, enemy, bullets, level, die_enemyis, game_win
    if end:
        return
    if game_win:
        return

    vector1 = Vector2(player.pos)
    vector2 = Vector2(mouse_pos)
    dir = vector2 - vector1

    if level == 3 and len(die_enemyis) == 5 + level * 2:
        end = True


    if end == False:
        if random.random() < 0.003:
            enemy = random.choice(enemy_skins[level])
            enemy.speed = 1
            enemy.health = random.randint(10, 20)
            enemyis.append(enemy)





    for bullet in bullets:
        bullet.x += bullet.direction.x * bullet.speed
        bullet.y += bullet.direction.y * bullet.speed

    for enemy in enemyis:
        vector3 = Vector2(enemy.pos)
        dir2 = vector1 - vector3

        if dir2.length() > enemy.speed:
            dir2 = dir2.normalize()
            enemy.x += dir2.x * enemy.speed
            enemy.y += dir2.y * enemy.speed
        if enemy.colliderect(player):
            end = True



        for bullet in bullets:
            if bullet .colliderect(enemy):
                bullets.remove(bullet)
                enemy.health -= 5




        if enemy.health <= 0:
            die_enemyis.append(enemy)
            enemyis.remove(enemy)

    if  len(die_enemyis) == 5 + level * 2:
        die_enemyis = []
        if level + 1 < len(enemy_skins):
            level += 1
        enemyis = []


    if level == 4:
        game_win = True

        

    if dir.length() > speed:
        dir = dir.normalize()
        player.x += dir.x * speed
        player.y += dir.y * speed
pgzrun.go()