From 96a6a019b60d7a7a4bdaff355b7bbd1bb0d23037 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=98=9F=E5=A4=96=E4=B9=8B=E7=A5=9E?= Date: Sat, 9 Apr 2022 11:27:37 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=94=B9=E5=9C=9F=E8=B1=86=E9=9B=B7?= =?UTF-8?q?=E8=A7=A6=E5=8F=91=E6=9C=BA=E5=88=B6=EF=BC=8C=E6=9B=B4=E6=94=B9?= =?UTF-8?q?=E5=B0=8F=E6=8E=A8=E8=BD=A6=E7=A2=B0=E6=92=9E=E8=8C=83=E5=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resources/data/map/level_0.json | 30 ++++++++++++++++++++++++++---- source/component/plant.py | 2 +- source/state/level.py | 7 ++++--- 3 files changed, 31 insertions(+), 8 deletions(-) diff --git a/resources/data/map/level_0.json b/resources/data/map/level_0.json index 23a0814..ec591e9 100644 --- a/resources/data/map/level_0.json +++ b/resources/data/map/level_0.json @@ -3,9 +3,31 @@ "init_sun_value":5000, "shovel":1, "zombie_list":[ - {"time":1000, "map_y":2, "name":"Zombie"}, - {"time":2000, "map_y":2, "name":"BucketheadZombie"}, - {"time":3000, "map_y":2, "name":"BucketheadZombie"}, + {"time":1000, "map_y":2, "name":"NewspaperZombie"}, + {"time":1000, "map_y":2, "name":"NewspaperZombie"}, + {"time":1000, "map_y":2, "name":"NewspaperZombie"}, + {"time":1000, "map_y":2, "name":"NewspaperZombie"}, + {"time":1000, "map_y":2, "name":"NewspaperZombie"}, + {"time":1000, "map_y":2, "name":"NewspaperZombie"}, + {"time":1000, "map_y":2, "name":"NewspaperZombie"}, + {"time":1000, "map_y":2, "name":"NewspaperZombie"}, + {"time":1000, "map_y":2, "name":"NewspaperZombie"}, + {"time":1000, "map_y":2, "name":"NewspaperZombie"}, + {"time":1000, "map_y":2, "name":"NewspaperZombie"}, + {"time":1000, "map_y":2, "name":"NewspaperZombie"}, + {"time":1000, "map_y":2, "name":"NewspaperZombie"}, + {"time":1000, "map_y":2, "name":"NewspaperZombie"}, + {"time":1000, "map_y":2, "name":"NewspaperZombie"}, + {"time":1000, "map_y":2, "name":"NewspaperZombie"}, + {"time":1000, "map_y":2, "name":"NewspaperZombie"}, + {"time":1000, "map_y":2, "name":"NewspaperZombie"}, + {"time":1000, "map_y":2, "name":"NewspaperZombie"}, + {"time":1000, "map_y":2, "name":"NewspaperZombie"}, + {"time":1000, "map_y":2, "name":"NewspaperZombie"}, + {"time":1000, "map_y":2, "name":"NewspaperZombie"}, + {"time":1000, "map_y":2, "name":"NewspaperZombie"}, + {"time":2000, "map_y":2, "name":"NewspaperZombie"}, + {"time":3000, "map_y":2, "name":"NewspaperZombie"}, {"time":4000, "map_y":2, "name":"Zombie"}, {"time":5000, "map_y":2, "name":"Zombie"}, {"time":6000, "map_y":2, "name":"Zombie"}, @@ -13,6 +35,6 @@ {"time":8000, "map_y":2, "name":"BucketheadZombie"}, {"time":9000, "map_y":2, "name":"Zombie"}, {"time":10000, "map_y":2, "name":"Zombie"}, - {"time":11000, "map_y":2, "name":"Zombie"} + {"time":60000, "map_y":2, "name":"Zombie"} ] } \ No newline at end of file diff --git a/source/component/plant.py b/source/component/plant.py index eaad966..a1d61bc 100755 --- a/source/component/plant.py +++ b/source/component/plant.py @@ -540,7 +540,7 @@ class PotatoMine(Plant): def canAttack(self, zombie): if (not self.is_init and zombie.rect.right >= self.rect.x and (not zombie.lostHead) and - (zombie.rect.x - self.rect.x) <= self.explode_x_range): + (abs(zombie.rect.x - self.rect.x) <= self.explode_x_range * 0.7)): return True return False diff --git a/source/state/level.py b/source/state/level.py index 38dc44b..be713c7 100644 --- a/source/state/level.py +++ b/source/state/level.py @@ -628,7 +628,7 @@ class Level(tool.State): hypno_zombie.setAttack(zombie, False) def checkCarCollisions(self): - collided_func = pg.sprite.collide_circle_ratio(0.8) + collided_func = pg.sprite.collide_circle_ratio(0.6) for car in self.cars: zombies = pg.sprite.spritecollide(car, self.zombie_groups[car.map_y], False, collided_func) for zombie in zombies: @@ -643,7 +643,8 @@ class Level(tool.State): if abs(i - map_y) > y_range: continue for zombie in self.zombie_groups[i]: - if abs(zombie.rect.centerx - x) <= x_range: + if ((abs(zombie.rect.centerx - x) <= x_range) or + ((zombie.rect.right - (x-x_range) > 20) or (zombie.rect.right - (x-x_range))/zombie.rect.width > 0.15, ((x+x_range) - zombie.rect.left > 20) or ((x+x_range) - zombie.rect.left)/zombie.rect.width > 0.15)[zombie.rect.x > x]): # 这代码不太好懂,后面是一个判断僵尸在左还是在右,前面是一个元组,[0]是在左边的情况,[1]是在右边的情况 zombie.health -= 1800 if zombie.health <= 0: zombie.setBoomDie() @@ -771,7 +772,7 @@ class Level(tool.State): def checkLose(self): for i in range(self.map_y_len): for zombie in self.zombie_groups[i]: - if zombie.rect.right < 0 and (not zombie.lostHead): + if zombie.rect.right < -10 and (not zombie.lostHead): return True return False