增加最后一大波新增一个墓碑的机制;优化
This commit is contained in:
parent
653009c6be
commit
167ed5a1f5
@ -126,7 +126,6 @@ nuitka --mingw64 --standalone --onefile --show-progress --show-memory --output-d
|
||||
* 已实现
|
||||
* 星星
|
||||
* 已实现
|
||||
* 与原版有所区别,设定为能直接伤害铁门、报纸后面的僵尸
|
||||
* 尖刺
|
||||
* 特殊子弹实体——非普通伤害或有特殊效果
|
||||
* 冰豌豆(减速)
|
||||
|
||||
@ -61,8 +61,8 @@ class Map():
|
||||
if plantName not in {c.LILYPAD, c.SEASHROOM, c.TANGLEKLEP}: # 这里的集合也可以换成存储在某一文件中的常数的表达
|
||||
if not self.map[map_y][map_x][c.MAP_PLANT]: # 没有植物肯定可以种植
|
||||
return True
|
||||
elif ((self.map[map_y][map_x][c.MAP_PLANT] | {'花盆(未实现)', '南瓜头(未实现)'} == {'花盆(未实现)', '南瓜头(未实现)'})
|
||||
and (plantName not in self.map[map_y][map_x][c.MAP_PLANT])): # 例外植物:集合中填花盆和南瓜头,只要这里没有这种植物就能种植;判断方法:并集
|
||||
elif (all((i in {'花盆(未实现)', '南瓜头(未实现)'}) for i in self.map[map_y][map_x][c.MAP_PLANT])
|
||||
and (plantName not in self.map[map_y][map_x][c.MAP_PLANT])): # 例外植物:集合中填花盆和南瓜头,只要这里没有这种植物就能种植;判断方法:并集
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
@ -72,8 +72,8 @@ class Map():
|
||||
# 首先需要判断植物是否是水生植物,水生植物不能种植在陆地上
|
||||
if plantName not in {c.LILYPAD, c.SEASHROOM, c.TANGLEKLEP}: # 这里的集合也可以换成存储在某一文件中的常数的表达
|
||||
if '花盆(未实现)' in self.map[map_y][map_x][c.MAP_PLANT]:
|
||||
if ((self.map[map_y][map_x][c.MAP_PLANT] | {'花盆(未实现)', '南瓜头(未实现)'} == {'花盆(未实现)', '南瓜头(未实现)'})
|
||||
and (plantName not in self.map[map_y][map_x][c.MAP_PLANT])): # 例外植物:集合中填花盆和南瓜头,只要这里没有这种植物就能种植;判断方法:并集
|
||||
if (all((i in {'花盆(未实现)', '南瓜头(未实现)'}) for i in self.map[map_y][map_x][c.MAP_PLANT])
|
||||
and (plantName not in self.map[map_y][map_x][c.MAP_PLANT])): # 例外植物:集合中填花盆和南瓜头,只要这里没有这种植物就能种植;判断方法:并集
|
||||
if plantName in {c.SPIKEWEED}: # 不能在花盆上种植的植物
|
||||
return False
|
||||
else:
|
||||
@ -92,8 +92,8 @@ class Map():
|
||||
return False
|
||||
else: # 非水生植物,依赖睡莲
|
||||
if c.LILYPAD in self.map[map_y][map_x][c.MAP_PLANT]:
|
||||
if ((self.map[map_y][map_x][c.MAP_PLANT] | {c.LILYPAD, '南瓜头(未实现)'} == {c.LILYPAD, '南瓜头(未实现)'})
|
||||
and (plantName not in self.map[map_y][map_x][c.MAP_PLANT])): # 例外植物:集合中填花盆和南瓜头,只要这里没有这种植物就能种植;判断方法:并集
|
||||
if (all((i in {c.LILYPAD, '南瓜头(未实现)'}) for i in self.map[map_y][map_x][c.MAP_PLANT])
|
||||
and (plantName not in self.map[map_y][map_x][c.MAP_PLANT])): # 例外植物:集合中填花盆和南瓜头,只要这里没有这种植物就能种植;判断方法:并集
|
||||
if plantName in {c.SPIKEWEED, c.POTATOMINE,'花盆(未实现)'}: # 不能在睡莲上种植的植物
|
||||
return False
|
||||
else:
|
||||
|
||||
@ -840,7 +840,7 @@ class SunShroom(Plant):
|
||||
def __init__(self, x, y, sun_group):
|
||||
Plant.__init__(self, x, y, c.SUNSHROOM, c.PLANT_HEALTH, None)
|
||||
self.can_sleep = True
|
||||
self.animate_interval = 200
|
||||
self.animate_interval = 140
|
||||
self.sun_timer = 0
|
||||
self.sun_group = sun_group
|
||||
self.is_big = False
|
||||
|
||||
@ -178,6 +178,44 @@ class Level(tool.State):
|
||||
# 否则直接return
|
||||
if self.waveNum >= self.map_data[c.NUM_FLAGS] * 10:
|
||||
if self.map_data[c.BACKGROUND_TYPE] == c.BACKGROUND_NIGHT:
|
||||
# 生长墓碑
|
||||
if not self.graveInLevelAdded:
|
||||
if current_time - self.waveTime > 100:
|
||||
# 墓碑最多有12个
|
||||
if len(self.graveSet) < 12:
|
||||
unoccupied = []
|
||||
occupied = []
|
||||
# 遍历能生成墓碑的区域
|
||||
for mapY in range(0, 4):
|
||||
for mapX in range(4, 8):
|
||||
# 为空、为毁灭菇坑、为冰道时看作未被植物占据
|
||||
if ((not self.map.map[mapY][mapX][c.MAP_PLANT]) or
|
||||
(all((i in {c.HOLE, c.ICE_FROZEN_PLOT}) for i in self.map.map[mapY][mapX][c.MAP_PLANT]))):
|
||||
unoccupied.append((mapX, mapY))
|
||||
# 已有墓碑的格子不应该放到任何列表中
|
||||
elif c.GRAVE not in self.map.map[mapY][mapX][c.MAP_PLANT]:
|
||||
occupied.append((mapX, mapY))
|
||||
if unoccupied:
|
||||
target = unoccupied[randint(0, len(unoccupied) - 1)]
|
||||
mapX, mapY = target
|
||||
posX, posY = self.map.getMapGridPos(mapX, mapY)
|
||||
self.plant_groups[mapY].add(plant.Grave(posX, posY))
|
||||
self.map.map[mapY][mapX][c.MAP_PLANT].add(c.GRAVE)
|
||||
self.graveSet.add((mapX, mapY))
|
||||
elif occupied:
|
||||
target = occupied[randint(0, len(occupied) - 1)]
|
||||
mapX, mapY = target
|
||||
posX, posY = self.map.getMapGridPos(mapX, mapY)
|
||||
for i in self.plant_groups[mapY]:
|
||||
checkMapX, _ = self.map.getMapIndex(i.rect.centerx, i.rect.bottom)
|
||||
if mapX == checkMapX:
|
||||
if i.name not in {c.HOLE, c.ICE_FROZEN_PLOT}:
|
||||
i.health = 0
|
||||
self.plant_groups[mapY].add(plant.Grave(posX, posY))
|
||||
self.map.map[mapY][mapX][c.MAP_PLANT].add(c.GRAVE)
|
||||
self.graveSet.add((mapX, mapY))
|
||||
self.graveInLevelAdded = True
|
||||
# 从墓碑中生成僵尸
|
||||
if not self.graveZombieCreated:
|
||||
if current_time - self.waveTime > 1500:
|
||||
for item in self.graveSet:
|
||||
@ -445,6 +483,7 @@ class Level(tool.State):
|
||||
self.plant_groups[mapY].add(plant.Grave(posX, posY))
|
||||
self.map.map[mapY][mapX][c.MAP_PLANT].add(c.GRAVE)
|
||||
self.graveZombieCreated = False
|
||||
self.graveInLevelAdded = False
|
||||
|
||||
|
||||
# 小菜单
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user