diff --git a/source/component/map.py b/source/component/map.py index 03bb455..6a610af 100755 --- a/source/component/map.py +++ b/source/component/map.py @@ -179,6 +179,7 @@ LEVEL_MAP_DATA = ( # 第0关:测试模式地图 { c.BACKGROUND_TYPE: 2, + c.GAME_TITLE: "隐藏测试关卡", c.INIT_SUN_NAME: 5000, c.SHOVEL: 1, c.SPAWN_ZOMBIES: c.SPAWN_ZOMBIES_LIST, @@ -203,6 +204,7 @@ LEVEL_MAP_DATA = ( # 第1关:单行草皮 { c.BACKGROUND_TYPE: 7, + c.GAME_TITLE: "白天 1-1", c.INIT_SUN_NAME: 150, c.SHOVEL: 1, c.SPAWN_ZOMBIES:c.SPAWN_ZOMBIES_AUTO, @@ -212,6 +214,7 @@ LEVEL_MAP_DATA = ( # 第2关:三行草皮 { c.BACKGROUND_TYPE: 8, + c.GAME_TITLE: "白天 1-2", c.INIT_SUN_NAME: 50, c.SHOVEL: 1, c.SPAWN_ZOMBIES:c.SPAWN_ZOMBIES_AUTO, @@ -221,6 +224,7 @@ LEVEL_MAP_DATA = ( # 第3关 { c.BACKGROUND_TYPE: 0, + c.GAME_TITLE: "白天 1-3", c.INIT_SUN_NAME: 50, c.SHOVEL: 1, c.SPAWN_ZOMBIES:c.SPAWN_ZOMBIES_AUTO, @@ -230,6 +234,7 @@ LEVEL_MAP_DATA = ( # 第4关 { c.BACKGROUND_TYPE: 0, + c.GAME_TITLE: "白天 1-4", c.INIT_SUN_NAME: 50, c.SHOVEL: 1, c.SPAWN_ZOMBIES:c.SPAWN_ZOMBIES_AUTO, @@ -239,6 +244,7 @@ LEVEL_MAP_DATA = ( # 第5关 目前白天最后一关 { c.BACKGROUND_TYPE: 0, + c.GAME_TITLE: "白天 1-5", c.INIT_SUN_NAME: 50, c.SHOVEL: 1, c.SPAWN_ZOMBIES:c.SPAWN_ZOMBIES_AUTO, @@ -248,6 +254,7 @@ LEVEL_MAP_DATA = ( # 第6关 目前夜晚第一关 { c.BACKGROUND_TYPE: 1, + c.GAME_TITLE: "黑夜 2-1", c.INIT_SUN_NAME: 50, c.SHOVEL: 1, c.SPAWN_ZOMBIES:c.SPAWN_ZOMBIES_AUTO, @@ -258,6 +265,7 @@ LEVEL_MAP_DATA = ( # 第7关 { c.BACKGROUND_TYPE: 1, + c.GAME_TITLE: "黑夜 2-2", c.INIT_SUN_NAME: 50, c.SHOVEL: 1, c.SPAWN_ZOMBIES:c.SPAWN_ZOMBIES_AUTO, @@ -269,6 +277,7 @@ LEVEL_MAP_DATA = ( # 第8关 目前为夜晚最后一关 { c.BACKGROUND_TYPE: 1, + c.GAME_TITLE: "黑夜 2-3", c.INIT_SUN_NAME: 50, c.SHOVEL: 1, c.SPAWN_ZOMBIES:c.SPAWN_ZOMBIES_AUTO, @@ -287,6 +296,7 @@ LEVEL_MAP_DATA = ( # 第9关 目前为泳池模式第一关 { c.BACKGROUND_TYPE: 2, + c.GAME_TITLE: "泳池 3-1", c.INIT_SUN_NAME: 50, c.SHOVEL: 1, c.SPAWN_ZOMBIES:c.SPAWN_ZOMBIES_AUTO, @@ -297,6 +307,7 @@ LEVEL_MAP_DATA = ( # 第10关 { c.BACKGROUND_TYPE: 2, + c.GAME_TITLE: "泳池 3-2", c.INIT_SUN_NAME: 50, c.SHOVEL: 1, c.SPAWN_ZOMBIES:c.SPAWN_ZOMBIES_AUTO, @@ -308,6 +319,7 @@ LEVEL_MAP_DATA = ( # 第11关 { c.BACKGROUND_TYPE: 2, + c.GAME_TITLE: "泳池 3-3", c.INIT_SUN_NAME: 50, c.SHOVEL: 1, c.SPAWN_ZOMBIES:c.SPAWN_ZOMBIES_AUTO, @@ -318,6 +330,7 @@ LEVEL_MAP_DATA = ( # 第12关 目前为泳池最后一关 { c.BACKGROUND_TYPE: 2, + c.GAME_TITLE: "泳池 3-4", c.INIT_SUN_NAME: 50, c.SHOVEL: 1, c.SPAWN_ZOMBIES:c.SPAWN_ZOMBIES_AUTO, @@ -330,6 +343,7 @@ LEVEL_MAP_DATA = ( # 第13关 目前为浓雾第一关 尚未完善 { c.BACKGROUND_TYPE: 2, + c.GAME_TITLE: "浓雾 4-1", c.INIT_SUN_NAME: 50, c.SHOVEL: 1, c.SPAWN_ZOMBIES:c.SPAWN_ZOMBIES_AUTO, @@ -347,12 +361,11 @@ LITTLE_GAME_MAP_DATA = ( # 第0关 测试 { c.BACKGROUND_TYPE: 6, + c.GAME_TITLE: "隐藏测试关卡", c.CHOOSEBAR_TYPE: c.CHOOSEBAR_BOWLING, c.SHOVEL: 0, c.SPAWN_ZOMBIES:c.SPAWN_ZOMBIES_AUTO, - c.INCLUDED_ZOMBIES: ( c.NORMAL_ZOMBIE, c.CONEHEAD_ZOMBIE, - c.POLE_VAULTING_ZOMBIE, c.BUCKETHEAD_ZOMBIE, - c.NEWSPAPER_ZOMBIE, c.SCREEN_DOOR_ZOMBIE), + c.INCLUDED_ZOMBIES: ( c.SCREEN_DOOR_ZOMBIE,), c.NUM_FLAGS:3, c.CARD_POOL: { c.WALLNUTBOWLING: 0, c.REDWALLNUTBOWLING: 0, @@ -361,6 +374,7 @@ LITTLE_GAME_MAP_DATA = ( # 第1关 坚果保龄球 { c.BACKGROUND_TYPE: 6, + c.GAME_TITLE: "坚果保龄球", c.CHOOSEBAR_TYPE: c.CHOOSEBAR_BOWLING, c.SHOVEL: 0, c.SPAWN_ZOMBIES:c.SPAWN_ZOMBIES_AUTO, @@ -373,6 +387,7 @@ LITTLE_GAME_MAP_DATA = ( # 第2关 白天 大决战 { c.BACKGROUND_TYPE: 0, + c.GAME_TITLE: "大决战(白天)", c.CHOOSEBAR_TYPE: c.CHOOSEBAR_MOVE, c.SHOVEL: 1, c.SPAWN_ZOMBIES:c.SPAWN_ZOMBIES_AUTO, @@ -390,6 +405,7 @@ LITTLE_GAME_MAP_DATA = ( # 第3关 夜晚 大决战 { c.BACKGROUND_TYPE: 1, + c.GAME_TITLE: "大决战(黑夜)", c.CHOOSEBAR_TYPE: c.CHOOSEBAR_MOVE, c.SHOVEL: 1, c.SPAWN_ZOMBIES:c.SPAWN_ZOMBIES_AUTO, @@ -409,6 +425,7 @@ LITTLE_GAME_MAP_DATA = ( # 第4关 泳池 大决战 { c.BACKGROUND_TYPE: 2, + c.GAME_TITLE: "大决战(泳池)", c.CHOOSEBAR_TYPE: c.CHOOSEBAR_MOVE, c.SHOVEL: 1, c.SPAWN_ZOMBIES:c.SPAWN_ZOMBIES_AUTO, @@ -425,9 +442,10 @@ LITTLE_GAME_MAP_DATA = ( c.JALAPENO: 50, c.THREEPEASHOOTER: 300,} }, -# 第6关 坚果保龄球2 +# 第5关 坚果保龄球2 { c.BACKGROUND_TYPE: 6, + c.GAME_TITLE: "坚果保龄球(II)", c.CHOOSEBAR_TYPE: c.CHOOSEBAR_BOWLING, c.SHOVEL: 0, c.SPAWN_ZOMBIES:c.SPAWN_ZOMBIES_AUTO, @@ -435,7 +453,7 @@ LITTLE_GAME_MAP_DATA = ( c.POLE_VAULTING_ZOMBIE, c.BUCKETHEAD_ZOMBIE, c.NEWSPAPER_ZOMBIE, c.SCREEN_DOOR_ZOMBIE), c.NUM_FLAGS:3, - c.CARD_POOL: { c.WALLNUTBOWLING: 300, + c.CARD_POOL: { c.WALLNUTBOWLING: 500, c.REDWALLNUTBOWLING: 100, c.GIANTWALLNUT:100,} }, diff --git a/source/constants.py b/source/constants.py index 5cad5da..9c60fb2 100755 --- a/source/constants.py +++ b/source/constants.py @@ -126,6 +126,7 @@ BACKGROUND_NAME = "Background" BACKGROUND_TYPE = "background_type" INIT_SUN_NAME = "init_sun_value" ZOMBIE_LIST = "zombie_list" +GAME_TITLE = "title" # 地图类型 BACKGROUND_DAY = 0 diff --git a/source/state/level.py b/source/state/level.py index 83d4997..cca8783 100644 --- a/source/state/level.py +++ b/source/state/level.py @@ -35,21 +35,23 @@ class Level(tool.State): if self.game_info[c.GAME_MODE] == c.MODE_ADVENTURE: if 0 <= self.game_info[c.LEVEL_NUM] < map.TOTAL_LEVEL: self.map_data = map.LEVEL_MAP_DATA[self.game_info[c.LEVEL_NUM]] - pg.display.set_caption(f"pypvz: 冒险模式 第{self.game_info[c.LEVEL_NUM]}关") + pg.display.set_caption(f"pypvz: 冒险模式 {self.map_data[c.GAME_TITLE]}") else: self.game_info[c.LEVEL_NUM] = 1 self.saveUserData() self.map_data = map.LEVEL_MAP_DATA[self.game_info[c.LEVEL_NUM]] + pg.display.set_caption(f"pypvz: 冒险模式 {self.map_data[c.GAME_TITLE]}") logger.warning("关卡数设定错误!进入默认的第一关!") # 小游戏模式 elif self.game_info[c.GAME_MODE] == c.MODE_LITTLEGAME: if 0 <= self.game_info[c.LITTLEGAME_NUM] < map.TOTAL_LITTLE_GAME: self.map_data = map.LITTLE_GAME_MAP_DATA[self.game_info[c.LITTLEGAME_NUM]] - pg.display.set_caption(f"pypvz: 玩玩小游戏 第{self.game_info[c.LITTLEGAME_NUM]}关") + pg.display.set_caption(f"pypvz: 玩玩小游戏 {self.map_data[c.GAME_TITLE]}") else: self.game_info[c.LITTLEGAME_NUM] = 1 self.saveUserData() self.map_data = map.LITTLE_GAME_MAP_DATA[self.game_info[c.LITTLEGAME_NUM]] + pg.display.set_caption(f"pypvz: 冒险模式 {self.map_data[c.GAME_TITLE]}") logger.warning("关卡数设定错误!进入默认的第一关!") # 是否有铲子的信息:无铲子时为0,有铲子时为1,故直接赋值即可 self.has_shovel = self.map_data[c.SHOVEL] @@ -287,7 +289,7 @@ class Level(tool.State): zombie_nums = 0 for i in range(self.map_y_len): zombie_nums += len(self.zombie_groups[i]) - if (zombie_nums / self.zombie_num < random.uniform(0.15, 0.25)) and (current_time - self.wave_time > 4000): + if self.zombie_num and (zombie_nums / self.zombie_num < random.uniform(0.15, 0.25)) and (current_time - self.wave_time > 4000): # 当僵尸所剩无几并且时间过了4000 ms以上时,改变时间记录,使得2000 ms后刷新僵尸(所以需要判断剩余时间是否大于2000 ms) if self.bar_type == c.CHOOSEBAR_STATIC: if current_time - 43000 < self.wave_time: # 判断剩余时间是否有2000 ms