collision sound

This commit is contained in:
yanshaoting 2024-02-02 12:09:32 +08:00
parent 97c4145d65
commit 5805e1e2a4
4 changed files with 19 additions and 10 deletions

View File

@ -55,7 +55,7 @@ MUSIC_PATH = path.join(path.dirname(__file__), "..", "asset", "music")
BG_PATH = path.join(ASSET_IMAGE_DIR, "background.png")
SQUID_PATH = path.join(ASSET_IMAGE_DIR, "squid.png")
SQUID2_PATH = path.join(ASSET_IMAGE_DIR, "squid2.png")
SQUID2_PATH = path.join(ASSET_IMAGE_DIR, "squid2_02.png")
IMG_ID_FOOD01_L = "food_01_L"
IMG_ID_FOOD02_L = "food_02_L"

View File

@ -156,15 +156,15 @@ class SwimmingSquid(PaiaGame):
hit = pygame.sprite.collide_rect(self.squid1, self.squid2)
if hit:
if self.squid1.lv > self.squid2.lv:
self.squid1.collision_between_squids(COLLISION_SCORE["WIN"], self.sound_controller)
self.squid2.collision_between_squids(COLLISION_SCORE["LOSE"], self.sound_controller)
self.squid1.collision_between_squids(COLLISION_SCORE["WIN"], self.frame_count, self.sound_controller)
self.squid2.collision_between_squids(COLLISION_SCORE["LOSE"], self.frame_count, self.sound_controller)
elif self.squid1.lv < self.squid2.lv:
self.squid1.collision_between_squids(COLLISION_SCORE["LOSE"], self.sound_controller)
self.squid2.collision_between_squids(COLLISION_SCORE["WIN"], self.sound_controller)
self.squid1.collision_between_squids(COLLISION_SCORE["LOSE"], self.frame_count, self.sound_controller)
self.squid2.collision_between_squids(COLLISION_SCORE["WIN"], self.frame_count, self.sound_controller)
else:
# draw
self.squid1.collision_between_squids(COLLISION_SCORE["DRAW"], self.sound_controller)
self.squid2.collision_between_squids(COLLISION_SCORE["DRAW"], self.sound_controller)
self.squid1.collision_between_squids(COLLISION_SCORE["DRAW"], self.frame_count, self.sound_controller)
self.squid2.collision_between_squids(COLLISION_SCORE["DRAW"], self.frame_count, self.sound_controller)
def get_data_from_game_to_player(self):
"""

View File

@ -42,6 +42,7 @@ class Squid(pygame.sprite.Sprite):
self._vel = LEVEL_PROPERTIES[1]['vel']
self._lv = 1
self.angle = 0
self._last_collision = 0
def update(self, motion):
# for motion in motions:
@ -90,8 +91,11 @@ class Squid(pygame.sprite.Sprite):
self._vel = LEVEL_PROPERTIES[new_lv]['vel']
self._lv = new_lv
def collision_between_squids(self, collision_score, sound_controller: SoundController):
def collision_between_squids(self, collision_score, frame, sound_controller: SoundController):
if frame - self._last_collision > 30:
self._score += collision_score
self._last_collision = frame
sound_controller.play_collision()
new_lv = get_current_level(self._score)

View File

@ -30,6 +30,7 @@ class SoundController():
self._fail = pygame.mixer.Sound(path.join(SOUND_PATH, "fail.mp3"))
self._lv_up = pygame.mixer.Sound(path.join(SOUND_PATH, "lv_up.mp3"))
self._lv_down = pygame.mixer.Sound(path.join(SOUND_PATH, "lv_down.mp3"))
self._collision = pygame.mixer.Sound(path.join(SOUND_PATH, "collision.mp3"))
except Exception as e :
self._is_sound_on = False
traceback.print_exc()
@ -59,3 +60,7 @@ class SoundController():
@sound_enabled
def play_lv_down(self):
self._lv_down.play()
@sound_enabled
def play_collision(self):
self._collision.play()