基本实现鸭子救生圈僵尸

This commit is contained in:
星外之神 2022-05-04 12:53:17 +08:00
parent 94f8329803
commit bf6a81885e
4 changed files with 19 additions and 2 deletions

View File

@ -4,7 +4,7 @@
"shovel":1, "shovel":1,
"spawn_zombies":"list", "spawn_zombies":"list",
"zombie_list":[ "zombie_list":[
{"time":1000, "map_y":2, "name":"DuckyTubeZombie"}, {"time":0, "map_y":3, "name":"DuckyTubeZombie"},
{"time":60000, "map_y":2, "name":"Zombie"} {"time":60000, "map_y":2, "name":"Zombie"}
] ]
} }

View File

@ -24,6 +24,8 @@ class Zombie(pg.sprite.Sprite):
self.damage = damage self.damage = damage
self.dead = False self.dead = False
self.lostHead = False self.lostHead = False
self.canSwim = canSwim
self.swimming = False
self.helmet = (self.helmetHealth > 0) self.helmet = (self.helmetHealth > 0)
self.helmetType2 = (self.helmetType2Health > 0) self.helmetType2 = (self.helmetType2Health > 0)
self.head_group = head_group self.head_group = head_group
@ -104,6 +106,13 @@ class Zombie(pg.sprite.Sprite):
if self.name == c.NEWSPAPER_ZOMBIE: if self.name == c.NEWSPAPER_ZOMBIE:
self.speed = 2.5 self.speed = 2.5
if self.canSwim:
if self.rect.right <= c.MAP_POOL_FRONT_X:
if not self.swimming:
self.changeFrames(self.swim_frames)
self.swimming = True
# 待写带有盔甲的水生僵尸丢盔甲的判断
if (self.current_time - self.walk_timer) > (c.ZOMBIE_WALK_INTERVAL * self.getTimeRatio()): if (self.current_time - self.walk_timer) > (c.ZOMBIE_WALK_INTERVAL * self.getTimeRatio()):
self.walk_timer = self.current_time self.walk_timer = self.current_time
if self.is_hypno: if self.is_hypno:
@ -305,6 +314,12 @@ class Zombie(pg.sprite.Sprite):
else: else:
self.changeFrames(self.walk_frames) self.changeFrames(self.walk_frames)
if self.canSwim:
if self.rect.right <= c.MAP_POOL_FRONT_X:
self.changeFrames(self.swim_frames)
self.swimming = True
# 待写带有盔甲的水生僵尸丢盔甲的判断
def setAttack(self, prey, is_plant=True): def setAttack(self, prey, is_plant=True):
self.prey = prey # prey can be plant or other zombies self.prey = prey # prey can be plant or other zombies
self.prey_is_plant = is_plant self.prey_is_plant = is_plant

View File

@ -142,7 +142,7 @@ MAP_ROOF_OFFSET_X = 35 # 暂时还不清楚数据
MAP_ROOF_OFFSET_Y = 105 # 暂时还不清楚数据 MAP_ROOF_OFFSET_Y = 105 # 暂时还不清楚数据
# 泳池前端陆地部分 # 泳池前端陆地部分
MAP_POOL_FRONT_X = 770 MAP_POOL_FRONT_X = SCREEN_WIDTH - 15
# 植物选择菜单栏、传送带菜单栏等类型设定 # 植物选择菜单栏、传送带菜单栏等类型设定
CHOOSEBAR_TYPE = 'choosebar_type' CHOOSEBAR_TYPE = 'choosebar_type'

View File

@ -833,6 +833,8 @@ class Level(tool.State):
if zombie.state != c.WALK: if zombie.state != c.WALK:
if not self.refreshZombieAttack: if not self.refreshZombieAttack:
continue continue
if zombie.canSwim and (not zombie.swimming):
continue
plant = pg.sprite.spritecollideany(zombie, self.plant_groups[i], collided_func) plant = pg.sprite.spritecollideany(zombie, self.plant_groups[i], collided_func)
if plant: if plant:
if plant.name == c.WALLNUTBOWLING: if plant.name == c.WALLNUTBOWLING: