Загрузка данных
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()