From 55f07ef9ca7dbfdcefda468eaa71dd41a81f6961 Mon Sep 17 00:00:00 2001 From: dregorianec <58620817+dregorianec@users.noreply.github.com> Date: Wed, 20 Jan 2021 16:51:06 +0300 Subject: [PATCH] Update oh my GOOOOOOOOOOOOOD --- oh my GOOOOOOOOOOOOOD | 90 +++++++++++++++++++++++++++++++++++++------ 1 file changed, 78 insertions(+), 12 deletions(-) diff --git a/oh my GOOOOOOOOOOOOOD b/oh my GOOOOOOOOOOOOOD index c947143..d1074f7 100644 --- a/oh my GOOOOOOOOOOOOOD +++ b/oh my GOOOOOOOOOOOOOD @@ -4,6 +4,7 @@ from datetime import datetime platform_list = pygame.sprite.Group() # Переменные для установки ширины и высоты окна +particles = [] SCREEN_WIDTH = 1500 # 1500 SCREEN_HEIGHT = 700 # 700 # Подключение фото для заднего фона @@ -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): @@ -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): @@ -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 # Установка высоты и ширины @@ -284,6 +316,8 @@ def main_l(): # Создаем игрока plat = Plat_zvez() + ros_1 = Plat_roz() + ros_2 = Plat_roz() player = Player() fly = Fly() boss = Boss() @@ -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 @@ -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) @@ -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) # Обновляем экран после рисования объектов