From 852071900ed69dfc701bff1730686d8f2b3402eb Mon Sep 17 00:00:00 2001 From: Jake Howard Date: Tue, 19 May 2015 12:13:44 +0100 Subject: [PATCH] added powerups to game --- assets.py | 3 +- bullet.py | 6 ++-- game.py | 29 ++++++++++++++++---- resources/texture_packs/default/powerup.png | Bin 0 -> 48743 bytes target.py | 16 +++++++++++ 5 files changed, 44 insertions(+), 10 deletions(-) create mode 100644 resources/texture_packs/default/powerup.png diff --git a/assets.py b/assets.py index a2f3eea..55fe11c 100644 --- a/assets.py +++ b/assets.py @@ -9,7 +9,8 @@ class Textures(): "BULLET":"bullet", "TARGETS":[], "SHOOTER":"shooter", - "TARGET_BULLET":"bullet_target" + "TARGET_BULLET":"bullet_target", + "POWERUP": "powerup" } self.path=os.path.dirname(os.path.realpath(__file__)) + "\\resources\\texture_packs\\" self.pack = "default" diff --git a/bullet.py b/bullet.py index 9e66eaf..aebf6d3 100644 --- a/bullet.py +++ b/bullet.py @@ -2,10 +2,10 @@ import pygame class Bullet(pygame.sprite.Sprite): - def __init__(self, parent, textures): + def __init__(self, parent, textures, bigger): super().__init__() - self.width = 6 - self.height = 14 + self.width = 6 * (1+int(bigger)) + self.height = 14 * (1+int(bigger)) self.image = pygame.transform.scale(textures.get_texture("BULLET"), (self.width, self.height)) self.rect = self.image.get_rect() self.rect.x = parent.rect.x + parent.width/2 - self.width/2 diff --git a/game.py b/game.py index 93e9034..42b68b1 100644 --- a/game.py +++ b/game.py @@ -7,7 +7,7 @@ from player import Shooter from assets import * from target import Target, generate_targets - +POWERUPS = ["SPEED", "DOUBLE", "LIVES", "SCORE", "BIGGER"] PLAYING_GAME = False WINDOW_SIZE = (680, 790) HUD_COLOUR = (255,168,72) @@ -57,8 +57,8 @@ def play(window, options): FPS = player.options["Difficulty"] timeouts = { - "Target Movement":[FPS*0.75,FPS*0.75], - "Powerup":[FPS*100, FPS*100] + "Target Movement":[FPS*0.65,FPS*0.65], + "Powerup":[FPS*15, FPS*15] } init_sounds() Sounds["main"].play(loops=-1) #Start background music @@ -77,14 +77,18 @@ def play(window, options): if event.type == pygame.KEYDOWN and event.key in [pygame.K_SPACE, pygame.K_w, pygame.K_UP] and not fired: if player.options["Sounds"]: Sounds["shot"].play() - temp = Bullet(player, player.options["Textures"]) + temp = Bullet(player, player.options["Textures"], player.powerup == "BIGGER") bullet_group.add(temp) + if player.powerup == "DOUBLE": + temp = Bullet(player, player.options["Textures"], player.powerup == "BIGGER") + temp.rect.y += 20 + bullet_group.add(temp) fired = True if event.type == pygame.KEYDOWN and event.key == pygame.K_KP_PLUS: if not player.options["Sounds"] or not player.OP: Sounds["main"].stop() - Sounds["OP"].play(loops=-1) + #Sounds["OP"].play(loops=-1) player.OP = True player.change_colour((255,96,0)) elif player.OP: @@ -121,6 +125,9 @@ def play(window, options): target_group.remove(target) bullet_group.remove(bullet) player.score += 1 + if target.lives <= 0 and target.type == "POWERUP": + player.powerup = POWERUPS[randint(0,len(POWERUPS)-1)] + logging.info("Powerup set to {}".format(player.powerup)) hit_list = pygame.sprite.spritecollide(bullet, player_group, False) for player in hit_list: @@ -149,10 +156,20 @@ def play(window, options): timeouts["Target Movement"][0] = timeouts["Target Movement"][1] + if timeouts["Powerup"][0] <= 0: + timeouts["Powerup"][0] = timeouts["Powerup"][1] + + if player.powerup == "SCORE": + player.score += 10 + player.powerup = "" + elif player.powerup == "LIVES": + player.lives += 1 + player.powerup = "" + for target in target_group: if target.type == "SHOOTER": if randint(0,600) > 1: continue - temp = Bullet(target, player.options["Textures"]) + temp = Bullet(target, player.options["Textures"], False) temp.type="TARGET" temp.image = pygame.transform.scale(player.options["Textures"].get_texture("TARGET_BULLET"), (temp.width, temp.height)) x,y = temp.rect.x, temp.rect.y diff --git a/resources/texture_packs/default/powerup.png b/resources/texture_packs/default/powerup.png new file mode 100644 index 0000000000000000000000000000000000000000..44e28bcc62896d273b3f064610adf6d0c0571f91 GIT binary patch literal 48743 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≻t;{4>olO{(>Wf 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

Sb~@AB(-AfNI@iEP=5VesFPP!CzlqAr|( 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 literal 0 HcmV?d00001 diff --git a/target.py b/target.py index 5b0e1df..ab8afe8 100644 --- a/target.py +++ b/target.py @@ -52,12 +52,28 @@ def generate_targets(player, window_size, Levels): index = randint(0, len(sprite_list)-1) if (len(sprite_list) - 1 != 0) else 0 if sprite_list[index].type != "SHOOTER": sprite_list[index].type = "SHOOTER" + sprite_list[index].lives = 2 sprite_list[index].image = pygame.transform.scale(player.options["Textures"].get_texture("SHOOTER"), (sprite_list[index].width, sprite_list[index].height)) x,y = sprite_list[index].rect.x, sprite_list[index].rect.y sprite_list[index].rect = sprite_list[index].image.get_rect() sprite_list[index].set_position(x,y, center=False) #Already Centered! changed = True + if len(sprite_list) < level.powerups: + powerups = len(sprite_list) + else: powerups = level.powerups + for i in range(powerups): + changed = False + while not changed: + index = randint(0, len(sprite_list)-1) if (len(sprite_list) - 1 != 0) else 0 + if sprite_list[index].type != "POWERUP" and sprite_list[index].type != "SHOOTER" : + sprite_list[index].type = "POWERUP" + sprite_list[index].image = pygame.transform.scale(player.options["Textures"].get_texture("POWERUP"), (sprite_list[index].width, sprite_list[index].height)) + x,y = sprite_list[index].rect.x, sprite_list[index].rect.y + sprite_list[index].rect = sprite_list[index].image.get_rect() + sprite_list[index].set_position(x,y, center=False) #Already Centered! + changed = True + for sprite in sprite_list: #Because sprite groups dont support indexing! group.add(sprite) return group