Added edamame.

This commit is contained in:
justin committed 2025-07-16 01:26:48 -07:00
1 parent ad7e7ca5e2
commit 699bf1f064
3 files changed
+57

No files matched your search

Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

+57
View File
@@ -126,6 +126,25 @@ class Petal:
def draw(self, surface):
surface.blit(self.image, self.rect)
class Edamame:
def __init__(self, image, pos, speed=4):
self.image = image
self.rect = self.image.get_rect(midtop=pos)
self.speed = speed
self.phase = random.uniform(0, 2 * math.pi)
self.base_x = self.rect.x
def update(self, dt, now):
self.rect.y += self.speed * dt / 16.67
sway = 20 * math.sin(0.005 * now + self.phase)
self.rect.x = self.base_x + sway
def off_screen(self):
return self.rect.top > HEIGHT
def draw(self, surface):
surface.blit(self.image, self.rect)
class Spawner:
def __init__(self, spawn_interval_ms):
self.spawn_interval = spawn_interval_ms
@@ -164,6 +183,9 @@ class Game:
self.petal_img = pygame.transform.smoothscale(self.petal_base, PETAL_SIZE)
self.petal_img_flipped = pygame.transform.flip(self.petal_img, True, False)
self.edamame_img = pygame.image.load("edamame.png").convert_alpha()
self.edamame_img = pygame.transform.smoothscale(self.edamame_img, SUSHI_SIZE)
self.music_file = "audio_music.mp3"
self.chomp_sounds = [
pygame.mixer.Sound("audio_chomp_low.mp3"),
@@ -175,6 +197,7 @@ class Game:
self.gameover_sound = pygame.mixer.Sound("audio_gameover.mp3")
self.paused_sound = pygame.mixer.Sound("audio_paused.mp3")
self.unpaused_sound = pygame.mixer.Sound("audio_unpaused.mp3")
self.oof_sound = pygame.mixer.Sound("audio_oof.mp3")
self.joysticks = []
self.check_controllers()
@@ -187,6 +210,7 @@ class Game:
self.sushis = []
self.clouds = []
self.petals = []
self.edamames = []
self.reset_game()
@@ -229,11 +253,19 @@ class Game:
petal = Petal(image, (x, -PETAL_SIZE[1]), self.petal_toggle, self.petal_speed_multiplier)
self.petals.append(petal)
def spawn_edamame(self):
x = random.randint(50, WIDTH - 50)
flipped = random.choice([True, False])
image = pygame.transform.flip(self.edamame_img, True, False) if flipped else self.edamame_img
edamame = Edamame(image, (x, -40), speed=self.edamame_fall_speed)
self.edamames.append(edamame)
def reset_game(self):
self.score = 0
self.sushis.clear()
self.clouds.clear()
self.petals.clear()
self.edamames.clear()
self.petal_toggle = False
self.game_over = False
self.game_over_time = None
@@ -242,10 +274,12 @@ class Game:
self.sushi_fall_speed = 5
self.cloud_speed_multiplier = 1.0
self.petal_speed_multiplier = 1.0
self.edamame_fall_speed = 4
self.cat = Cat(self.cat_right_base, (WIDTH // 2, HEIGHT), 14)
self.sushi_spawner = Spawner(125)
self.cloud_spawner = Spawner(4000)
self.petal_spawner = Spawner(200)
self.edamame_spawner = Spawner(1500)
self.speed_increase_time = pygame.time.get_ticks()
self.intro_start_time = pygame.time.get_ticks()
self.gamestart_sound.play()
@@ -324,6 +358,7 @@ class Game:
self.sushi_fall_speed += 1
self.cloud_speed_multiplier += 0.1
self.petal_speed_multiplier += 0.1
self.edamame_fall_speed += 0.1
self.speed_increase_time = now
if self.cloud_spawner.can_spawn(now):
@@ -332,6 +367,9 @@ class Game:
if self.petal_spawner.can_spawn(now):
self.spawn_petal()
self.petal_spawner.update_spawn_time(now)
if self.edamame_spawner.can_spawn(now):
self.spawn_edamame()
self.edamame_spawner.update_spawn_time(now)
if not self.game_over and self.sushi_spawner.can_spawn(now):
self.spawn_sushi()
self.sushi_spawner.update_spawn_time(now)
@@ -346,6 +384,11 @@ class Game:
if petal.off_screen():
self.petals.remove(petal)
for edamame in self.edamames[:]:
edamame.update(dt, now)
if edamame.off_screen():
self.edamames.remove(edamame)
if not self.game_over:
if keys[pygame.K_a] or keys[pygame.K_LEFT]:
move = -1
@@ -398,6 +441,18 @@ class Game:
elif sushi.off_screen():
self.sushis.remove(sushi)
for edamame in self.edamames[:]:
edamame.speed = self.edamame_fall_speed
edamame.update(dt, now)
horizontal_overlap = edamame.rect.right > self.cat.rect.left and edamame.rect.left < self.cat.rect.right
if horizontal_overlap and edamame.rect.bottom >= cat_mid_y:
self.oof_sound.play()
self.score += 1
self.edamames.remove(edamame)
elif edamame.off_screen():
self.edamames.remove(edamame)
else:
if self.game_over_time is None:
self.game_over_time = now
@@ -411,6 +466,8 @@ class Game:
self.cat.draw(self.screen)
for sushi in self.sushis:
sushi.draw(self.screen)
for edamame in self.edamames:
edamame.draw(self.screen)
self.draw_text(f"Score: {self.score}", (10, 10))