From: Skullheadx <94652084+Skullheadx@users.noreply.github.com> Date: Sat, 3 Jun 2023 00:13:00 +0000 (-0400) Subject: effect affected by bomb X-Git-Tag: game~14 X-Git-Url: http://git.skullheadx.com/index.css?a=commitdiff_plain;h=f5a4c917cd8189cc25caa71eacee214c854dad86;p=fruit-ninja.git effect affected by bomb --- diff --git a/bomb.py b/bomb.py index 0af48a6..20d0465 100644 --- a/bomb.py +++ b/bomb.py @@ -19,7 +19,7 @@ class Bomb(Fruit): if self.exploded: self.exploded_time += delta ** 2 - def explode(self, fruits, bombs): + def explode(self, fruits, bombs, effects): if self in bombs: self.exploded = True self.velocity = pygame.Vector2(0, 0) @@ -27,9 +27,11 @@ class Bomb(Fruit): for fruit in fruits: fruit.velocity += (fruit.position - self.position).normalize() * self.POWER + for effect in effects: + effect.velocity += (effect.position - self.position).normalize() * self.POWER for bomb in bombs: if not bomb.exploded: - bomb.explode(fruits, bombs) + bomb.explode(fruits, bombs, effects) def draw(self, surf): if self.exploded: diff --git a/effect.py b/effect.py index d6df147..412601f 100644 --- a/effect.py +++ b/effect.py @@ -8,14 +8,18 @@ class Effect: OUTLINE_WIDTH = 1 - def __init__(self, position, radius, color): + def __init__(self, position, radius, color, darken=True): self.position = pygame.Vector2(position) self.velocity = pygame.Vector2(random.random() - 0.5, random.random() - 0.5).normalize() * lerp( self.SPEED_RANGE[0], self.SPEED_RANGE[1], random.random()) self.radius = radius * lerp(self.RADIUS_RANGE[0], self.RADIUS_RANGE[1], random.random()) self.time = self.LIFE_TIME - self.color = DARKEN[color] - self.outline_color = color + if darken: + self.color = DARKEN[color] + self.outline_color = color + else: + self.color = color + self.outline_color = DARKEN[color] def update(self, delta): self.position += self.velocity * delta / 1000 diff --git a/game.py b/game.py index 474e3d6..bc80650 100644 --- a/game.py +++ b/game.py @@ -9,8 +9,9 @@ from setup import * class Game: BOMB_CHANCE = 0.1 EFFECT_COUNT_PER_FRUIT = 20 + EFFECT_COUNT_PER_BOMB = 0 COMBO_TIME = 250 - GAME_OVER_TIME = 1000 + GAME_OVER_TIME = 2000 def __init__(self): self.player = Player() @@ -80,7 +81,10 @@ class Game: for bomb in self.bombs: bomb.update(delta) if self.player.hits(bomb): - bomb.explode(self.fruits, self.bombs) + for i in range(self.EFFECT_COUNT_PER_BOMB): + self.effects.append(Effect(bomb.position + pygame.Vector2(random.random(), random.random()), bomb.radius, WHITE, darken=False)) + + bomb.explode(self.fruits, self.bombs, self.effects) self.game_over = True self.player.sliced_points.clear() br = bomb.get_rect() diff --git a/main.py b/main.py index 3c632a3..86c1e38 100644 --- a/main.py +++ b/main.py @@ -1,5 +1,5 @@ -from setup import * from game import Game +from setup import * FPS = 120 clock = pygame.time.Clock() diff --git a/setup.py b/setup.py index 11baf45..2bdc58a 100644 --- a/setup.py +++ b/setup.py @@ -31,8 +31,7 @@ DARK_ORANGE = (255, 140, 0) DARK_YELLOW = (255, 215, 0) DARK_PURPLE = (75, 0, 130) DARKEN = {RED: DARK_RED, ORANGE: DARK_ORANGE, YELLOW: DARK_YELLOW, GREEN: DARK_GREEN, BLUE: DARK_BLUE, - PURPLE: DARK_PURPLE} -LIGHTEN = {RED: ORANGE, ORANGE: YELLOW, YELLOW: GREEN, GREEN: BLUE, BLUE: PURPLE, PURPLE: RED} + PURPLE: DARK_PURPLE, WHITE: GRAY} # commands COMMAND_EXIT = 0