整理代码

This commit is contained in:
星外之神 2022-05-15 19:49:07 +08:00
parent bd59b16905
commit 47ec6367c8

View File

@ -106,18 +106,25 @@ BACKGROUND_TRIPLE = 8
# 地图类型集合
# 白天场地(泛指蘑菇睡觉的场地)
DAYTIME_BACKGROUNDS = { BACKGROUND_DAY, BACKGROUND_POOL,
DAYTIME_BACKGROUNDS = {
BACKGROUND_DAY, BACKGROUND_POOL,
BACKGROUND_ROOF, BACKGROUND_WALLNUTBOWLING,
BACKGROUND_SINGLE, BACKGROUND_TRIPLE,
}
# 带有泳池的场地
POOL_EQUIPPED_BACKGROUNDS = { BACKGROUND_POOL, BACKGROUND_FOG,
POOL_EQUIPPED_BACKGROUNDS = {
BACKGROUND_POOL, BACKGROUND_FOG,
}
# 屋顶上的场地
ON_ROOF_BACKGROUNDS = { BACKGROUND_ROOF, BACKGROUND_ROOFNIGHT,
ON_ROOF_BACKGROUNDS = {
BACKGROUND_ROOF, BACKGROUND_ROOFNIGHT,
}
# BACKGROUND_DAY场地的变体
BACKGROUND_DAY_LIKE_BACKGROUNDS = { BACKGROUND_DAY, BACKGROUND_SINGLE,
BACKGROUND_DAY_LIKE_BACKGROUNDS = {
BACKGROUND_DAY, BACKGROUND_SINGLE,
BACKGROUND_TRIPLE,
}
@ -232,45 +239,59 @@ GRAVE = 'Grave'
GRAVEBUSTER = 'GraveBuster'
FUMESHROOM = 'FumeShroom'
# 植物集体属性
# 植物集体属性集合
# 在生效时不用与僵尸进行碰撞检测的对象
SKIP_ZOMBIE_COLLISION_CHECK_WHEN_WORKING = {# 注意爆炸坚果的触发也是啃食类碰撞,因此这里不能省略
SKIP_ZOMBIE_COLLISION_CHECK_WHEN_WORKING = {
# 注意爆炸坚果的触发也是啃食类碰撞,因此这里不能省略
SQUASH, ICESHROOM,
REDWALLNUTBOWLING, CHERRYBOMB,
JALAPENO, DOOMSHROOM,
POTATOMINE,
}
# 非植物对象
NON_PLANT_OBJECTS = { HOLE, ICE_FROZEN_PLOT,
NON_PLANT_OBJECTS = {
HOLE, ICE_FROZEN_PLOT,
GRAVE,
}
# 所有可能不用与僵尸进行碰撞检测的对象
CAN_SKIP_ZOMBIE_COLLISION_CHECK = ( # 生效时不检测的植物
CAN_SKIP_ZOMBIE_COLLISION_CHECK = ( # 这里运用了集合运算
# 生效时不检测的植物
SKIP_ZOMBIE_COLLISION_CHECK_WHEN_WORKING |
# 非植物对象
NON_PLANT_OBJECTS |
# 地刺类
{SPIKEWEED, }
)
# 死亡时不触发音效的对象
PLANT_DIE_SOUND_EXCEPTIONS = { WALLNUTBOWLING, TANGLEKLEP,
PLANT_DIE_SOUND_EXCEPTIONS = {
WALLNUTBOWLING, TANGLEKLEP,
ICE_FROZEN_PLOT, HOLE,
GRAVE, JALAPENO,
REDWALLNUTBOWLING, CHERRYBOMB,
}
# color_key为白色的对象
PLANT_COLOR_KEY_WHITE = { POTATOMINE, SPIKEWEED,
PLANT_COLOR_KEY_WHITE = {
POTATOMINE, SPIKEWEED,
JALAPENO, SCAREDYSHROOM,
SUNSHROOM, ICESHROOM,
HYPNOSHROOM, SQUASH,
WALLNUTBOWLING, REDWALLNUTBOWLING,
}
# 直接水生植物
WATER_PLANTS = { LILYPAD, SEASHROOM,
WATER_PLANTS = {
LILYPAD, SEASHROOM,
TANGLEKLEP,
}
# 不用使用通用方法检验攻击状态的植物
PLANT_NON_CHECK_ATTACK_STATE = ({ # 单独指定攻击状态的植物
PLANT_NON_CHECK_ATTACK_STATE = ( # 这里运用了集合运算
{# 单独指定攻击状态的植物
WALLNUTBOWLING,
# 没有攻击状态的植物
WALLNUT, TALLNUT,
@ -282,11 +303,14 @@ PLANT_NON_CHECK_ATTACK_STATE = ({ # 单独指定攻击状态的植物
# 非植物类
NON_PLANT_OBJECTS
)
# 范围爆炸植物,即灰烬植物与寒冰菇
ASH_PLANTS_AND_ICESHROOM = { REDWALLNUTBOWLING, CHERRYBOMB,
ASH_PLANTS_AND_ICESHROOM = {
REDWALLNUTBOWLING, CHERRYBOMB,
JALAPENO, DOOMSHROOM,
ICESHROOM,}
# 植物生命值
PLANT_HEALTH = 300
WALLNUT_HEALTH = 4000
@ -419,31 +443,37 @@ ZOMBIE_WALK_INTERVAL = 60 # 僵尸步行间隔
# 僵尸生成位置
ZOMBIE_START_X = SCREEN_WIDTH + 50 # 场宽度不一样,用于拟合
# 僵尸集体属性
# 僵尸集体属性集合
# 僵尸生成信息字典:包含生成僵尸名称、僵尸级别、生成权重
CREATE_ZOMBIE_DICT = { # 生成僵尸:(级别, 权重)
NORMAL_ZOMBIE:(1, 4000),
FLAG_ZOMBIE:(1, 0),
CONEHEAD_ZOMBIE:(2, 4000),
BUCKETHEAD_ZOMBIE:(4, 3000),
NEWSPAPER_ZOMBIE:(2, 1000),
FOOTBALL_ZOMBIE:(7, 2000),
DUCKY_TUBE_ZOMBIE:(1, 0), # 作为变种,不主动生成
CONEHEAD_DUCKY_TUBE_ZOMBIE:(2, 0), # 作为变种,不主动生成
BUCKETHEAD_DUCKY_TUBE_ZOMBIE:(4, 0), # 作为变种,不主动生成
SCREEN_DOOR_ZOMBIE:(4, 3500),
POLE_VAULTING_ZOMBIE:(2, 2000),
ZOMBONI:(7, 2000),
NORMAL_ZOMBIE: (1, 4000),
FLAG_ZOMBIE: (1, 0),
CONEHEAD_ZOMBIE: (2, 4000),
BUCKETHEAD_ZOMBIE: (4, 3000),
NEWSPAPER_ZOMBIE: (2, 1000),
FOOTBALL_ZOMBIE: (7, 2000),
DUCKY_TUBE_ZOMBIE: (1, 0), # 作为变种,不主动生成
CONEHEAD_DUCKY_TUBE_ZOMBIE: (2, 0), # 作为变种,不主动生成
BUCKETHEAD_DUCKY_TUBE_ZOMBIE: (4, 0), # 作为变种,不主动生成
SCREEN_DOOR_ZOMBIE: (4, 3500),
POLE_VAULTING_ZOMBIE: (2, 2000),
ZOMBONI: (7, 2000),
}
# 记录陆生僵尸的水生变种
CONVERT_ZOMBIE_IN_POOL = { NORMAL_ZOMBIE:DUCKY_TUBE_ZOMBIE,
CONEHEAD_ZOMBIE:CONEHEAD_DUCKY_TUBE_ZOMBIE,
BUCKETHEAD_ZOMBIE:BUCKETHEAD_DUCKY_TUBE_ZOMBIE}
CONVERT_ZOMBIE_IN_POOL = {
NORMAL_ZOMBIE: DUCKY_TUBE_ZOMBIE,
CONEHEAD_ZOMBIE: CONEHEAD_DUCKY_TUBE_ZOMBIE,
BUCKETHEAD_ZOMBIE: BUCKETHEAD_DUCKY_TUBE_ZOMBIE}
# 水上僵尸集合
WATER_ZOMBIE = { DUCKY_TUBE_ZOMBIE, CONEHEAD_DUCKY_TUBE_ZOMBIE,
WATER_ZOMBIE = {
DUCKY_TUBE_ZOMBIE, CONEHEAD_DUCKY_TUBE_ZOMBIE,
BUCKETHEAD_DUCKY_TUBE_ZOMBIE,
}
# 状态类型
IDLE = 'idle'
FLY = 'fly'