Added edamame.
This commit is contained in:
Binary file not shown.
Binary file not shown.
|
After Width: | Height: | Size: 1.0 MiB |
@@ -126,6 +126,25 @@ class Petal:
|
|||||||
def draw(self, surface):
|
def draw(self, surface):
|
||||||
surface.blit(self.image, self.rect)
|
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:
|
class Spawner:
|
||||||
def __init__(self, spawn_interval_ms):
|
def __init__(self, spawn_interval_ms):
|
||||||
self.spawn_interval = 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 = pygame.transform.smoothscale(self.petal_base, PETAL_SIZE)
|
||||||
self.petal_img_flipped = pygame.transform.flip(self.petal_img, True, False)
|
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.music_file = "audio_music.mp3"
|
||||||
self.chomp_sounds = [
|
self.chomp_sounds = [
|
||||||
pygame.mixer.Sound("audio_chomp_low.mp3"),
|
pygame.mixer.Sound("audio_chomp_low.mp3"),
|
||||||
@@ -175,6 +197,7 @@ class Game:
|
|||||||
self.gameover_sound = pygame.mixer.Sound("audio_gameover.mp3")
|
self.gameover_sound = pygame.mixer.Sound("audio_gameover.mp3")
|
||||||
self.paused_sound = pygame.mixer.Sound("audio_paused.mp3")
|
self.paused_sound = pygame.mixer.Sound("audio_paused.mp3")
|
||||||
self.unpaused_sound = pygame.mixer.Sound("audio_unpaused.mp3")
|
self.unpaused_sound = pygame.mixer.Sound("audio_unpaused.mp3")
|
||||||
|
self.oof_sound = pygame.mixer.Sound("audio_oof.mp3")
|
||||||
|
|
||||||
self.joysticks = []
|
self.joysticks = []
|
||||||
self.check_controllers()
|
self.check_controllers()
|
||||||
@@ -187,6 +210,7 @@ class Game:
|
|||||||
self.sushis = []
|
self.sushis = []
|
||||||
self.clouds = []
|
self.clouds = []
|
||||||
self.petals = []
|
self.petals = []
|
||||||
|
self.edamames = []
|
||||||
|
|
||||||
self.reset_game()
|
self.reset_game()
|
||||||
|
|
||||||
@@ -229,11 +253,19 @@ class Game:
|
|||||||
petal = Petal(image, (x, -PETAL_SIZE[1]), self.petal_toggle, self.petal_speed_multiplier)
|
petal = Petal(image, (x, -PETAL_SIZE[1]), self.petal_toggle, self.petal_speed_multiplier)
|
||||||
self.petals.append(petal)
|
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):
|
def reset_game(self):
|
||||||
self.score = 0
|
self.score = 0
|
||||||
self.sushis.clear()
|
self.sushis.clear()
|
||||||
self.clouds.clear()
|
self.clouds.clear()
|
||||||
self.petals.clear()
|
self.petals.clear()
|
||||||
|
self.edamames.clear()
|
||||||
self.petal_toggle = False
|
self.petal_toggle = False
|
||||||
self.game_over = False
|
self.game_over = False
|
||||||
self.game_over_time = None
|
self.game_over_time = None
|
||||||
@@ -242,10 +274,12 @@ class Game:
|
|||||||
self.sushi_fall_speed = 5
|
self.sushi_fall_speed = 5
|
||||||
self.cloud_speed_multiplier = 1.0
|
self.cloud_speed_multiplier = 1.0
|
||||||
self.petal_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.cat = Cat(self.cat_right_base, (WIDTH // 2, HEIGHT), 14)
|
||||||
self.sushi_spawner = Spawner(125)
|
self.sushi_spawner = Spawner(125)
|
||||||
self.cloud_spawner = Spawner(4000)
|
self.cloud_spawner = Spawner(4000)
|
||||||
self.petal_spawner = Spawner(200)
|
self.petal_spawner = Spawner(200)
|
||||||
|
self.edamame_spawner = Spawner(1500)
|
||||||
self.speed_increase_time = pygame.time.get_ticks()
|
self.speed_increase_time = pygame.time.get_ticks()
|
||||||
self.intro_start_time = pygame.time.get_ticks()
|
self.intro_start_time = pygame.time.get_ticks()
|
||||||
self.gamestart_sound.play()
|
self.gamestart_sound.play()
|
||||||
@@ -324,6 +358,7 @@ class Game:
|
|||||||
self.sushi_fall_speed += 1
|
self.sushi_fall_speed += 1
|
||||||
self.cloud_speed_multiplier += 0.1
|
self.cloud_speed_multiplier += 0.1
|
||||||
self.petal_speed_multiplier += 0.1
|
self.petal_speed_multiplier += 0.1
|
||||||
|
self.edamame_fall_speed += 0.1
|
||||||
self.speed_increase_time = now
|
self.speed_increase_time = now
|
||||||
|
|
||||||
if self.cloud_spawner.can_spawn(now):
|
if self.cloud_spawner.can_spawn(now):
|
||||||
@@ -332,6 +367,9 @@ class Game:
|
|||||||
if self.petal_spawner.can_spawn(now):
|
if self.petal_spawner.can_spawn(now):
|
||||||
self.spawn_petal()
|
self.spawn_petal()
|
||||||
self.petal_spawner.update_spawn_time(now)
|
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):
|
if not self.game_over and self.sushi_spawner.can_spawn(now):
|
||||||
self.spawn_sushi()
|
self.spawn_sushi()
|
||||||
self.sushi_spawner.update_spawn_time(now)
|
self.sushi_spawner.update_spawn_time(now)
|
||||||
@@ -346,6 +384,11 @@ class Game:
|
|||||||
if petal.off_screen():
|
if petal.off_screen():
|
||||||
self.petals.remove(petal)
|
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 not self.game_over:
|
||||||
if keys[pygame.K_a] or keys[pygame.K_LEFT]:
|
if keys[pygame.K_a] or keys[pygame.K_LEFT]:
|
||||||
move = -1
|
move = -1
|
||||||
@@ -398,6 +441,18 @@ class Game:
|
|||||||
elif sushi.off_screen():
|
elif sushi.off_screen():
|
||||||
self.sushis.remove(sushi)
|
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:
|
else:
|
||||||
if self.game_over_time is None:
|
if self.game_over_time is None:
|
||||||
self.game_over_time = now
|
self.game_over_time = now
|
||||||
@@ -411,6 +466,8 @@ class Game:
|
|||||||
self.cat.draw(self.screen)
|
self.cat.draw(self.screen)
|
||||||
for sushi in self.sushis:
|
for sushi in self.sushis:
|
||||||
sushi.draw(self.screen)
|
sushi.draw(self.screen)
|
||||||
|
for edamame in self.edamames:
|
||||||
|
edamame.draw(self.screen)
|
||||||
|
|
||||||
self.draw_text(f"Score: {self.score}", (10, 10))
|
self.draw_text(f"Score: {self.score}", (10, 10))
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user