diff --git a/resources/data/map/level_0.json b/resources/data/map/level_0.json index 486255c..ec95b95 100644 --- a/resources/data/map/level_0.json +++ b/resources/data/map/level_0.json @@ -5,7 +5,8 @@ "spawn_zombies":"list", "zombie_list":[ {"time":0, "map_y":4, "name":"ScreenDoorZombie"}, + {"time":0, "map_y":1, "name":"NewspaperZombie"}, {"time":0, "map_y":2, "name":"ConeheadDuckyTubeZombie"}, - {"time":60000, "map_y":2, "name":"Zombie"} + {"time":80000, "map_y":2, "name":"ConeheadDuckyTubeZombie"} ] } \ No newline at end of file diff --git a/resources/sound/newspaperZombieAngry.ogg b/resources/sound/newspaperZombieAngry.ogg new file mode 100644 index 0000000..e690503 Binary files /dev/null and b/resources/sound/newspaperZombieAngry.ogg differ diff --git a/source/component/menubar.py b/source/component/menubar.py index 8232597..8a63d17 100755 --- a/source/component/menubar.py +++ b/source/component/menubar.py @@ -361,6 +361,8 @@ class Panel(): if delete_card: self.selected_cards.remove(delete_card) self.selected_num -= 1 + # 播放点击音效 + pg.mixer.Sound(os.path.join(os.path.dirname(os.path.dirname(os.path.dirname(__file__))) ,"resources", "sound", "tap.ogg")).play() if self.selected_num >= c.CARD_MAX_NUM: return @@ -369,6 +371,8 @@ class Panel(): if card.checkMouseClick(mouse_pos): if card.canSelect(): self.addCard(card) + # 播放点击音效 + pg.mixer.Sound(os.path.join(os.path.dirname(os.path.dirname(os.path.dirname(__file__))) ,"resources", "sound", "tap.ogg")).play() break def addCard(self, card): diff --git a/source/component/plant.py b/source/component/plant.py index 1f71acf..79b9a7e 100755 --- a/source/component/plant.py +++ b/source/component/plant.py @@ -141,7 +141,8 @@ class StarBullet(Bullet): self.rect.x += 7 self.rect.y += 7 elif self.direction == c.STAR_UPWARD: - self.rect.y -= 10 + # 实际上不知道为什么向上飞的看起来要快一些,所以拟合的时候把速度调小了一点 + self.rect.y -= 9 elif self.direction == c.STAR_DOWNWARD: self.rect.y += 10 else: @@ -412,7 +413,7 @@ class SnowPeaShooter(Plant): # 播放发射音效 pg.mixer.Sound(os.path.join(os.path.dirname(os.path.dirname(os.path.dirname(__file__))) ,"resources", "sound", "shoot.ogg")).play() # 播放冰子弹音效 - pg.mixer.Sound(os.path.join(os.path.dirname(os.path.dirname(os.path.dirname(__file__))) ,"resources", "sound", "snowPeaSparkles")).play() + pg.mixer.Sound(os.path.join(os.path.dirname(os.path.dirname(os.path.dirname(__file__))) ,"resources", "sound", "snowPeaSparkles.ogg")).play() class WallNut(Plant): @@ -1150,10 +1151,12 @@ class StarFruit(Plant): if (self.rect.x >= zombie.rect.x) and (self.map_y == zombieMapY): # 对于同行且在杨桃后的僵尸 return True # 斜向上,理想直线方程为:f(zombie.rect.x) = -0.75*(zombie.rect.x - (self.rect.right - 5)) + self.rect.y - 10 - elif -100 <= (zombie.rect.y - (-0.75*(zombie.rect.x - (self.rect.right - 5)) + self.rect.y - 10)) <= 70 and (zombie.rect.left <= c.SCREEN_WIDTH): + # 注意实际上为射线 + elif -100 <= (zombie.rect.y - (-0.75*(zombie.rect.x - (self.rect.right - 5)) + self.rect.y - 10)) <= 70 and (zombie.rect.left <= c.SCREEN_WIDTH) and (zombie.rect.x >= self.rect.x): return True # 斜向下,理想直线方程为:f(zombie.rect.x) = zombie.rect.x + self.rect.y - self.rect.right - 15 - elif abs(zombie.rect.y - (zombie.rect.x + self.rect.y - self.rect.right - 15)) <= 70 and (zombie.rect.left <= c.SCREEN_WIDTH): + # 注意实际上为射线 + elif abs(zombie.rect.y - (zombie.rect.x + self.rect.y - self.rect.right - 15)) <= 70 and (zombie.rect.left <= c.SCREEN_WIDTH) and (zombie.rect.x >= self.rect.x): return True elif zombie.rect.left <= self.rect.x <= zombie.rect.right: return True diff --git a/source/component/zombie.py b/source/component/zombie.py index 9798d2c..77030a8 100755 --- a/source/component/zombie.py +++ b/source/component/zombie.py @@ -105,7 +105,7 @@ class Zombie(pg.sprite.Sprite): # 在右侧岸左 if self.rect.right <= c.MAP_POOL_FRONT_X: # 在左侧岸右,左侧岸位置为预估 - if self.rect.x >= c.MAP_POOL_OFFSET_X: + if self.rect.right - 25 >= c.MAP_POOL_OFFSET_X: # 还未进入游泳状态 if not self.swimming: self.swimming = True @@ -183,6 +183,8 @@ class Zombie(pg.sprite.Sprite): self.helmetType2 = False if self.name == c.NEWSPAPER_ZOMBIE: self.speed = 2.5 + # 触发报纸僵尸暴走音效 + pg.mixer.Sound(os.path.join(os.path.dirname(os.path.dirname(os.path.dirname(__file__))) ,"resources", "sound", "newspaperZombieAngry.ogg")).play() if (self.current_time - self.walk_timer) > (c.ZOMBIE_WALK_INTERVAL * self.getTimeRatio()): self.walk_timer = self.current_time if self.is_hypno: diff --git a/source/state/level.py b/source/state/level.py index 2e3987e..d21dd16 100644 --- a/source/state/level.py +++ b/source/state/level.py @@ -288,8 +288,6 @@ class Level(tool.State): self.panel.checkCardClick(mouse_pos) if self.panel.checkStartButtonClick(mouse_pos): self.initPlay(self.panel.getSelectedCards()) - # 播放点击音效 - pg.mixer.Sound(os.path.join(os.path.dirname(os.path.dirname(os.path.dirname(__file__))) ,"resources", "sound", "tap.ogg")).play() def initPlay(self, card_list): diff --git a/source/tool.py b/source/tool.py index dbd5e36..43170c2 100755 --- a/source/tool.py +++ b/source/tool.py @@ -34,7 +34,7 @@ class Control(): self.screen = pg.display.get_surface() self.done = False self.clock = pg.time.Clock() # 创建一个对象来帮助跟踪时间 - self.fps = 30 + self.fps = 50 * c.GAME_RATE self.keys = pg.key.get_pressed() self.mouse_pos = None self.mouse_click = [False, False] # value:[left mouse click, right mouse click] @@ -89,7 +89,7 @@ class Control(): elif event.type == pg.MOUSEBUTTONDOWN: self.mouse_pos = pg.mouse.get_pos() self.mouse_click[0], _, self.mouse_click[1] = pg.mouse.get_pressed() - print('pos:', self.mouse_pos, ' mouse:', self.mouse_click) + print('pos:', self.mouse_pos) def run(self):