diff --git a/README.md b/README.md index f0ab5b3..8fcf542 100644 --- a/README.md +++ b/README.md @@ -84,7 +84,6 @@ nuitka --mingw --standalone --onefile --show-progress --show-memory --output-dir * 冷冻的僵尸未用蓝色滤镜标识 * 魅惑的僵尸未用红色滤镜标识 * 暂停游戏时僵尸与阳光的生成仍在计时 -* 倭瓜、地刺无范围伤害 **欢迎提供[Pull requests](https://github.com/wszqkzqk/pypvz/pulls)或修复方法建议** diff --git a/resources/data/map/level_0.json b/resources/data/map/level_0.json index c9c9ef0..e75d318 100644 --- a/resources/data/map/level_0.json +++ b/resources/data/map/level_0.json @@ -1,8 +1,13 @@ { "background_type":0, - "init_sun_value":500, + "init_sun_value":5000, "shovel":1, "zombie_list":[ + {"time":1000, "map_y":2, "name":"BucketheadZombie"}, + {"time":1000, "map_y":2, "name":"BucketheadZombie"}, + {"time":1000, "map_y":2, "name":"Zombie"}, + {"time":1000, "map_y":2, "name":"Zombie"}, + {"time":1000, "map_y":2, "name":"Zombie"}, {"time":1000, "map_y":2, "name":"Zombie"} ] } \ No newline at end of file diff --git a/source/component/plant.py b/source/component/plant.py index 734459d..88342d5 100755 --- a/source/component/plant.py +++ b/source/component/plant.py @@ -281,7 +281,7 @@ class PeaShooter(Plant): self.shoot_timer = 0 def attacking(self): - if (self.current_time - self.shoot_timer) > 2000: + if (self.current_time - self.shoot_timer) > 1400: self.bullet_group.add(Bullet(self.rect.right, self.rect.y, self.rect.y, c.BULLET_PEA, c.BULLET_DAMAGE_NORMAL, False)) self.shoot_timer = self.current_time @@ -293,7 +293,7 @@ class RepeaterPea(Plant): self.shoot_timer = 0 def attacking(self): - if (self.current_time - self.shoot_timer) > 2000: + if (self.current_time - self.shoot_timer) > 1400: self.bullet_group.add(Bullet(self.rect.right, self.rect.y, self.rect.y, c.BULLET_PEA, c.BULLET_DAMAGE_NORMAL, False)) self.bullet_group.add(Bullet(self.rect.right + 40, self.rect.y, self.rect.y, @@ -309,7 +309,7 @@ class ThreePeaShooter(Plant): self.bullet_groups = bullet_groups def attacking(self): - if (self.current_time - self.shoot_timer) > 2000: + if (self.current_time - self.shoot_timer) > 1400: offset_y = 9 # modify bullet in the same y position with bullets of other plants for i in range(3): tmp_y = self.map_y + (i - 1) @@ -327,7 +327,7 @@ class SnowPeaShooter(Plant): self.shoot_timer = 0 def attacking(self): - if (self.current_time - self.shoot_timer) > 2000: + if (self.current_time - self.shoot_timer) > 1400: self.bullet_group.add(Bullet(self.rect.right, self.rect.y, self.rect.y, c.BULLET_PEA_ICE, c.BULLET_DAMAGE_NORMAL, True)) self.shoot_timer = self.current_time @@ -484,7 +484,7 @@ class PuffShroom(Plant): self.frames = self.idle_frames def attacking(self): - if (self.current_time - self.shoot_timer) > 3000: + if (self.current_time - self.shoot_timer) > 1400: self.bullet_group.add(Bullet(self.rect.right, self.rect.y + 10, self.rect.y + 10, c.BULLET_MUSHROOM, c.BULLET_DAMAGE_NORMAL, True)) self.shoot_timer = self.current_time @@ -570,22 +570,35 @@ class Squash(Plant): self.frames = self.idle_frames def canAttack(self, zombie): + # 普通状态 if (self.state == c.IDLE and self.rect.x <= zombie.rect.right and (self.rect.right + c.GRID_X_SIZE >= zombie.rect.x)): return True + # 攻击状态 + elif (self.state == c.ATTACK) and (self.rect.left <= zombie.rect.right or self.rect.right >= zombie.rect.left): + return True return False def setAttack(self, zombie, zombie_group): self.attack_zombie = zombie self.zombie_group = zombie_group self.state = c.ATTACK + # 攻击状态下生命值无敌 + self.health = float('inf') def attacking(self): if self.squashing: - if self.frame_index == 2: - self.zombie_group.remove(self.attack_zombie) + ''' + + for zombie in self.zombie_group: + if self.canAttack(zombie): + zombie.setDamage(1800, False) + ''' if (self.frame_index + 1) == self.frame_num: self.attack_zombie.kill() + for zombie in self.zombie_group: + if self.canAttack(zombie): + zombie.setDamage(1800, False) self.health = 0 elif self.aim_timer == 0: self.aim_timer = self.current_time @@ -626,11 +639,11 @@ class Spikeweed(Plant): self.state = c.ATTACK def attacking(self): - if (self.current_time - self.attack_timer) > 2000: + if (self.current_time - self.attack_timer) > 700: self.attack_timer = self.current_time for zombie in self.zombie_group: if self.canAttack(zombie): - zombie.setDamage(1, False) + zombie.setDamage(10, False) class Jalapeno(Plant): @@ -719,7 +732,7 @@ class ScaredyShroom(Plant): self.changeFrames(self.idle_frames) def attacking(self): - if (self.current_time - self.shoot_timer) > 2000: + if (self.current_time - self.shoot_timer) > 1400: self.bullet_group.add(Bullet(self.rect.right, self.rect.y + 40, self.rect.y + 40, c.BULLET_MUSHROOM, c.BULLET_DAMAGE_NORMAL, True)) self.shoot_timer = self.current_time diff --git a/source/constants.py b/source/constants.py index f67485d..23c5ef6 100755 --- a/source/constants.py +++ b/source/constants.py @@ -172,7 +172,7 @@ BUCKETHEAD_HEALTH = 1100 NEWSPAPER_HEALTH = 200 ATTACK_INTERVAL = 500 -ZOMBIE_WALK_INTERVAL = 100 +ZOMBIE_WALK_INTERVAL = 60 # 僵尸步行间隔 ZOMBIE_START_X = SCREEN_WIDTH + 50