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