Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
90 changes: 78 additions & 12 deletions oh my GOOOOOOOOOOOOOD
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ from datetime import datetime

platform_list = pygame.sprite.Group()
# Переменные для установки ширины и высоты окна
particles = []
SCREEN_WIDTH = 1500 # 1500
SCREEN_HEIGHT = 700 # 700
# Подключение фото для заднего фона
Expand All @@ -20,7 +21,8 @@ files = os.listdir(directory)
images = filter(lambda x: x.endswith('.gif'), files)
boss_top = list(images)
der = 0
obj = ['platform.png', '2187.png', 'звезда.png', 'роза.png', 'шар звезды.png', 'шип розы.png', 'восклицательный.png']
obj = ['platform.png', '2187.png', 'звезда.png', 'роза.png', 'шар звезды.png', 'шип розы.png', 'восклицательный.png',
'малая роза.png']


class Player(pygame.sprite.Sprite):
Expand Down Expand Up @@ -187,6 +189,26 @@ class Plat_zvez(pygame.sprite.Sprite):
print((datetime.now() - time).total_seconds())


class Plat_roz(pygame.sprite.Sprite):
def __init__(self):
self.change_y = 350
super().__init__()
self.image = pygame.image.load('объекты/' + str(obj[7]))
self.rect = self.image.get_rect()

def update(self):
global time
global dre
if self.rect.y >= SCREEN_HEIGHT and dre == 24:
self.rect.y -= self.change_y
dre = 0
elif dre == 24:
self.rect.y += self.change_y
dre = 0
else:
dre += 1


class Bullet(pygame.sprite.Sprite):
def __init__(self, x, y, speedx):

Expand Down Expand Up @@ -252,27 +274,37 @@ class Boss(pygame.sprite.Sprite):
shoot_sound.set_volume(0.2)
shoot_sound.play()
if k == 3:
pass
qq = 0
if k == 4:
if qq <= (len(boss_jump)) / 2 + 4:
self.rect.y -= 8
elif qq < (len(boss_jump) - 2) * 1.5:
self.rect.y += 8
self.image = self.image = pygame.image.load('босс/прыжок/' + boss_jump[int(qq / 1.5)])
if qq <= (len(boss_jump) - 1) * 1.5:
qq += 1
self.rect = self.image.get_rect(topleft=(self.rect.x, self.rect.y))


active_sprite_list = pygame.sprite.Group()
bosar = pygame.sprite.Group()
bullets = pygame.sprite.Group()

pygame.mixer.init()
pygame.mixer_music.load('The_Prodigy_-_Invaders_Must_Die_47960596.MP3')
pygame.mixer_music.set_volume(0.4)
pygame.mixer_music.play()


# Основная функция прогарммы
def main_l():
global dre
global screen
# Инициализация
global level
global time
global qq, qz
pygame.mixer.init()
pygame.mixer_music.load('The_Prodigy_-_Invaders_Must_Die_47960596.MP3')
pygame.mixer_music.set_volume(0.4)
pygame.mixer_music.play()

pygame.init()
dre = 0
qq = 0
qz = 0
# Установка высоты и ширины
Expand All @@ -284,6 +316,8 @@ def main_l():

# Создаем игрока
plat = Plat_zvez()
ros_1 = Plat_roz()
ros_2 = Plat_roz()
player = Player()
fly = Fly()
boss = Boss()
Expand All @@ -300,6 +334,10 @@ def main_l():
player.level = current_level
plat.rect.x = 650
plat.rect.y = 850
ros_1.rect.x = 0
ros_1.rect.y = 700
ros_2.rect.x = 553
ros_2.rect.y = 700
fly.rect.x = -200
fly.rect.y = 10
player.rect.x = 240
Expand Down Expand Up @@ -346,18 +384,44 @@ def main_l():
boss.update(2)
active_sprite_list.add(boss)
active_sprite_list.add(fly)
elif 22.4 <= int((datetime.now() - time).total_seconds()) < 48.5:
elif 22.4 <= int((datetime.now() - time).total_seconds()) < 48.025:
boss.update(3)
plat.update()
active_sprite_list.add(boss)
active_sprite_list.add(plat)
elif 48.5 <= int((datetime.now() - time).total_seconds()):
pass
elif 48.025 <= int((datetime.now() - time).total_seconds()) < 61:
boss.update(3)
plat.update()
active_sprite_list.add(boss)
active_sprite_list.add(plat)
active_sprite_list.add(ros_1)
active_sprite_list.add(ros_2)
elif 61 <= int((datetime.now() - time).total_seconds()):
boss.update(4)
plat.update()
active_sprite_list.add(boss)
active_sprite_list.add(plat)
active_sprite_list.add(ros_1)
active_sprite_list.add(ros_2)
bosar.draw(screen)

pygame.sprite.spritecollide(boss, platform_list, True)
pygame.sprite.groupcollide(platform_list, bullets, True, False)
pygame.sprite.spritecollide(plat, platform_list, True)
hit = pygame.sprite.spritecollide(plat, platform_list, True)
pygame.sprite.spritecollide(ros_1, bullets, True)
pygame.sprite.spritecollide(ros_2, bullets, True)
if hit:
for i in range(500):
particles.append(
[[plat.rect.x - random.randint(-25, 25) + 150, plat.rect.top - random.randint(-50, 50)],
[random.randint(0, 20) / 10 - 1, -2], random.randint(2, 4)])
for particle in particles:
particle[0][0] -= particle[1][0]
particle[2] -= 0.1
particle[1][1] += 0.1
pygame.draw.circle(screen, (0, 0, 0), [int(particle[0][0]), int(particle[0][1])], int(particle[2]))
if particle[2] <= 2:
particles.remove(particle)
# player.level = current_level
# Рисуем объекты на окне
bosar.draw(screen)
Expand All @@ -369,6 +433,8 @@ def main_l():
active_sprite_list.update()
active_sprite_list.remove(fly)
active_sprite_list.remove(plat)
active_sprite_list.remove(ros_1)
active_sprite_list.remove(ros_2)
# Устанавливаем количество фреймов
clock.tick(30)
# Обновляем экран после рисования объектов
Expand Down