将常数性质的json统一合并到python
This commit is contained in:
parent
7c50a29f9e
commit
8acb592508
@ -1,15 +0,0 @@
|
||||
{
|
||||
"plant_image_rect":{
|
||||
"PeaNormal":{"x":28, "y":0, "width":28, "height":34},
|
||||
"PeaIce":{"x":26, "y":0, "width":30, "height":34},
|
||||
"Chomper":{"x":0, "y":0, "width":100, "height":114},
|
||||
"PuffShroom":{"x":0, "y":28, "width":35, "height":38},
|
||||
"PuffShroomSleep":{"x":1, "y":0, "width":39, "height":65},
|
||||
"BulletMushRoom":{"x":0, "y":1, "width":55, "height":21},
|
||||
"BulletSeaShroom":{"x":0, "y":1, "width":55, "height":21},
|
||||
"PotatoMine":{"x":0, "y":0, "width":75, "height":55},
|
||||
"Squash":{"x":10, "y":140, "width":80, "height":86},
|
||||
"SquashAim":{"x":10, "y":140, "width":80, "height":86},
|
||||
"Spikeweed":{"x":3, "y":0, "width":80, "height":35}
|
||||
}
|
||||
}
|
||||
@ -1,38 +0,0 @@
|
||||
{
|
||||
"zombie_image_rect":{
|
||||
"Zombie":{"x":62, "width":90},
|
||||
"ZombieAttack":{"x":62, "width":90},
|
||||
"ZombieLostHead":{"x":62, "width":90},
|
||||
"ZombieLostHeadAttack":{"x":62, "width":90},
|
||||
"ZombieDie":{"x":0, "width":164},
|
||||
"BoomDie":{"x":68, "width":80},
|
||||
"ConeheadZombie":{"x":80, "width":80},
|
||||
"ConeheadZombieAttack":{"x":79, "width":87},
|
||||
"BucketheadZombie":{"x":54, "width":90},
|
||||
"BucketheadZombieAttack":{"x":46, "width":90},
|
||||
"FlagZombie":{"x":56, "width":110},
|
||||
"FlagZombieAttack":{"x":60, "width":100},
|
||||
"FlagZombieLostHead":{"x":55, "width":110},
|
||||
"FlagZombieLostHeadAttack":{"x":55, "width":110},
|
||||
"NewspaperZombie":{"x":48, "width":92},
|
||||
"NewspaperZombieAttack":{"x":48, "width":92},
|
||||
"NewspaperZombieNoPaper":{"x":40, "width":98},
|
||||
"NewspaperZombieNoPaperAttack":{"x":48, "width":92},
|
||||
"NewspaperZombieLostHead":{"x":44, "width":96},
|
||||
"NewspaperZombieLostHeadAttack":{"x":48, "width":92},
|
||||
"NewspaperZombieDie":{"x":0, "width":100},
|
||||
"DukyTubeZombie":{"x":55, "width":105},
|
||||
"DukyTubeZombieAttack":{"x":55, "width":105},
|
||||
"DukyTubeZombieDie":{"x":55, "width":105},
|
||||
"DukyTubeZombieLostHead":{"x":55, "width":105},
|
||||
"DukyTubeZombieSwim":{"x":55, "width":105},
|
||||
"ConeheadDukyTubeZombie":{"x":55, "width":105},
|
||||
"ConeheadDukyTubeZombieAttack":{"x":55, "width":105},
|
||||
"ConeheadDukyTubeZombieSwim":{"x":55, "width":105},
|
||||
"BucketheadDukyTubeZombie":{"x":55, "width":105},
|
||||
"BucketheadDukyTubeZombieAttack":{"x":55, "width":105},
|
||||
"BucketheadDukyTubeZombieSwim":{"x":55, "width":105},
|
||||
"ScreenDoorZombie":{"x":41, "width":100},
|
||||
"ScreenDoorZombieAttack":{"x":41, "width":100}
|
||||
}
|
||||
}
|
||||
@ -64,8 +64,8 @@ class Bullet(pg.sprite.Sprite):
|
||||
|
||||
def loadFrames(self, frames, name):
|
||||
frame_list = tool.GFX[name]
|
||||
if name in tool.PLANT_RECT:
|
||||
data = tool.PLANT_RECT[name]
|
||||
if name in c.PLANT_RECT:
|
||||
data = c.PLANT_RECT[name]
|
||||
x, y, width, height = data['x'], data['y'], data['width'], data['height']
|
||||
else:
|
||||
x, y = 0, 0
|
||||
@ -252,8 +252,8 @@ class Plant(pg.sprite.Sprite):
|
||||
|
||||
def loadFrames(self, frames, name, scale=1, color=c.BLACK):
|
||||
frame_list = tool.GFX[name]
|
||||
if name in tool.PLANT_RECT:
|
||||
data = tool.PLANT_RECT[name]
|
||||
if name in c.PLANT_RECT:
|
||||
data = c.PLANT_RECT[name]
|
||||
x, y, width, height = data['x'], data['y'], data['width'], data['height']
|
||||
else:
|
||||
x, y = 0, 0
|
||||
|
||||
@ -59,8 +59,8 @@ class Zombie(pg.sprite.Sprite):
|
||||
frame_list = tool.GFX[name]
|
||||
rect = frame_list[0].get_rect()
|
||||
width, height = rect.w, rect.h
|
||||
if name in tool.ZOMBIE_RECT:
|
||||
data = tool.ZOMBIE_RECT[name]
|
||||
if name in c.ZOMBIE_RECT:
|
||||
data = c.ZOMBIE_RECT[name]
|
||||
x, width = data['x'], data['width']
|
||||
else:
|
||||
x = 0
|
||||
|
||||
@ -2,7 +2,7 @@ import os
|
||||
import pygame as pg
|
||||
|
||||
# 用户数据及日志存储路径
|
||||
if os.name == 'nt': # Windows系统存储路径
|
||||
if os.name == "nt": # Windows系统存储路径
|
||||
USERDATA_PATH = os.path.expandvars(os.path.join("%APPDATA%", "wszqkzqk.dev", "pypvz", "userdata.json"))
|
||||
USERLOG_PATH = os.path.expandvars(os.path.join("%APPDATA%", "wszqkzqk.dev", "pypvz", "run.log"))
|
||||
else: # 非Windows系统存储路径
|
||||
@ -11,24 +11,18 @@ else: # 非Windows系统存储路径
|
||||
|
||||
# 窗口图标
|
||||
ORIGINAL_LOGO = os.path.join(os.path.dirname(os.path.dirname(__file__)), "pypvz-exec-logo.png")
|
||||
# 僵尸显示特殊定义文件路径
|
||||
JSON_PATH_ZOMBIE = os.path.join(os.path.dirname(os.path.dirname(__file__)), 'resources', 'data', 'entity', 'zombie.json')
|
||||
# 植物显示特殊定义文件路径
|
||||
JSON_PATH_PLANTS = os.path.join(os.path.dirname(os.path.dirname(__file__)), 'resources', 'data', 'entity', 'plant.json')
|
||||
# 游戏图片资源路径
|
||||
PATH_IMG_DIR = os.path.join(os.path.dirname(os.path.dirname(__file__)), "resources", "graphics")
|
||||
# 游戏关卡地图文件夹路径
|
||||
PATH_MAP_DIR = os.path.join(os.path.dirname(os.path.dirname(__file__)), "resources", 'data', "map")
|
||||
# 游戏音乐文件夹路径
|
||||
PATH_MUSIC_DIR = os.path.join(os.path.dirname(os.path.dirname(__file__)), "resources","music")
|
||||
|
||||
# 窗口标题
|
||||
ORIGINAL_CAPTION = 'pypvz'
|
||||
ORIGINAL_CAPTION = "pypvz"
|
||||
|
||||
# 游戏模式
|
||||
GAME_MODE = 'mode'
|
||||
MODE_ADVENTURE = 'adventure'
|
||||
MODE_LITTLEGAME = 'littleGame'
|
||||
GAME_MODE = "mode"
|
||||
MODE_ADVENTURE = "adventure"
|
||||
MODE_LITTLEGAME = "littleGame"
|
||||
|
||||
# 窗口大小
|
||||
SCREEN_WIDTH = 800
|
||||
@ -36,7 +30,7 @@ SCREEN_HEIGHT = 600
|
||||
SCREEN_SIZE = (SCREEN_WIDTH, SCREEN_HEIGHT)
|
||||
|
||||
# 字体路径
|
||||
FONT_PATH = os.path.join(os.path.dirname(os.path.dirname(__file__)), 'resources', 'DroidSansFallback.ttf')
|
||||
FONT_PATH = os.path.join(os.path.dirname(os.path.dirname(__file__)), "resources", "DroidSansFallback.ttf")
|
||||
|
||||
# 选卡数量
|
||||
# 最大数量
|
||||
@ -75,56 +69,56 @@ YELLOWGREEN = ( 55, 200, 0)
|
||||
LIGHTGRAY = (107, 108, 145)
|
||||
|
||||
# 退出游戏按钮
|
||||
EXIT = 'exit'
|
||||
EXIT = "exit"
|
||||
# 游戏界面可选的菜单
|
||||
LITTLE_MENU = 'littleMenu'
|
||||
BIG_MENU = 'bigMenu'
|
||||
RESTART_BUTTON = 'restartButton'
|
||||
MAINMENU_BUTTON = 'mainMenuButton'
|
||||
LITTLEGAME_BUTTON = 'littleGameButton'
|
||||
OPTION_BUTTON = 'optionButton'
|
||||
SOUND_VOLUME_BUTTON = 'volumeButton'
|
||||
LITTLE_MENU = "littleMenu"
|
||||
BIG_MENU = "bigMenu"
|
||||
RESTART_BUTTON = "restartButton"
|
||||
MAINMENU_BUTTON = "mainMenuButton"
|
||||
LITTLEGAME_BUTTON = "littleGameButton"
|
||||
OPTION_BUTTON = "optionButton"
|
||||
SOUND_VOLUME_BUTTON = "volumeButton"
|
||||
# 金银向日葵奖杯
|
||||
TROPHY_SUNFLOWER = 'sunflowerTrophy'
|
||||
TROPHY_SUNFLOWER = "sunflowerTrophy"
|
||||
# 小铲子
|
||||
SHOVEL = 'shovel'
|
||||
SHOVEL_BOX = 'shovelBox'
|
||||
SHOVEL = "shovel"
|
||||
SHOVEL_BOX = "shovelBox"
|
||||
# 一大波僵尸来袭图片
|
||||
HUGE_WAVE_APPROCHING = 'Approching'
|
||||
HUGE_WAVE_APPROCHING = "Approching"
|
||||
# 关卡进程图片
|
||||
LEVEL_PROGRESS_BAR = 'LevelProgressBar'
|
||||
LEVEL_PROGRESS_ZOMBIE_HEAD = 'LevelProgressZombieHead'
|
||||
LEVEL_PROGRESS_FLAG = 'LevelProgressFlag'
|
||||
LEVEL_PROGRESS_BAR = "LevelProgressBar"
|
||||
LEVEL_PROGRESS_ZOMBIE_HEAD = "LevelProgressZombieHead"
|
||||
LEVEL_PROGRESS_FLAG = "LevelProgressFlag"
|
||||
|
||||
|
||||
# GAME INFO字典键值
|
||||
CURRENT_TIME = 'current time'
|
||||
LEVEL_NUM = 'level num'
|
||||
LITTLEGAME_NUM = 'littleGame num'
|
||||
LEVEL_COMPLETIONS = 'level completions'
|
||||
LITTLEGAME_COMPLETIONS = 'littleGame completions'
|
||||
GAME_RATE = 'game rate'
|
||||
SOUND_VOLUME = 'volume'
|
||||
CURRENT_TIME = "current time"
|
||||
LEVEL_NUM = "level num"
|
||||
LITTLEGAME_NUM = "littleGame num"
|
||||
LEVEL_COMPLETIONS = "level completions"
|
||||
LITTLEGAME_COMPLETIONS = "littleGame completions"
|
||||
GAME_RATE = "game rate"
|
||||
SOUND_VOLUME = "volume"
|
||||
|
||||
# 整个游戏的状态
|
||||
MAIN_MENU = 'main menu'
|
||||
LOAD_SCREEN = 'load screen'
|
||||
GAME_LOSE = 'game los'
|
||||
GAME_VICTORY = 'game victory'
|
||||
LEVEL = 'level'
|
||||
MAIN_MENU = "main menu"
|
||||
LOAD_SCREEN = "load screen"
|
||||
GAME_LOSE = "game los"
|
||||
GAME_VICTORY = "game victory"
|
||||
LEVEL = "level"
|
||||
|
||||
# 界面图片文件名
|
||||
MAIN_MENU_IMAGE = 'MainMenu'
|
||||
OPTION_ADVENTURE = 'Adventure'
|
||||
GAME_LOSE_IMAGE = 'GameLose'
|
||||
GAME_VICTORY_IMAGE = 'GameVictory'
|
||||
AWARD_SCREEN_IMAGE = 'AwardScreen'
|
||||
MAIN_MENU_IMAGE = "MainMenu"
|
||||
OPTION_ADVENTURE = "Adventure"
|
||||
GAME_LOSE_IMAGE = "GameLose"
|
||||
GAME_VICTORY_IMAGE = "GameVictory"
|
||||
AWARD_SCREEN_IMAGE = "AwardScreen"
|
||||
|
||||
# 地图相关内容
|
||||
BACKGROUND_NAME = 'Background'
|
||||
BACKGROUND_TYPE = 'background_type'
|
||||
INIT_SUN_NAME = 'init_sun_value'
|
||||
ZOMBIE_LIST = 'zombie_list'
|
||||
BACKGROUND_NAME = "Background"
|
||||
BACKGROUND_TYPE = "background_type"
|
||||
INIT_SUN_NAME = "init_sun_value"
|
||||
ZOMBIE_LIST = "zombie_list"
|
||||
|
||||
# 地图类型
|
||||
BACKGROUND_DAY = 0
|
||||
@ -162,28 +156,28 @@ BACKGROUND_DAY_LIKE_BACKGROUNDS = {
|
||||
}
|
||||
|
||||
# 夜晚地图的墓碑数量等级
|
||||
GRADE_GRAVES = 'grade_graves'
|
||||
GRADE_GRAVES = "grade_graves"
|
||||
# 不同墓碑等级对应的信息,列表位置对应的是墓碑等级
|
||||
GRAVES_GRADE_INFO = (0, 4, 7, 11)
|
||||
|
||||
# 僵尸生成方式
|
||||
SPAWN_ZOMBIES = 'spawn_zombies'
|
||||
SPAWN_ZOMBIES_AUTO = 'auto'
|
||||
SPAWN_ZOMBIES_LIST = 'list'
|
||||
INCLUDED_ZOMBIES = 'included_zombies'
|
||||
NUM_FLAGS = 'num_flags'
|
||||
INEVITABLE_ZOMBIE_DICT = 'inevitable_zombie_list'
|
||||
SURVIVAL_ROUNDS = 'survival_rounds'
|
||||
SPAWN_ZOMBIES = "spawn_zombies"
|
||||
SPAWN_ZOMBIES_AUTO = "auto"
|
||||
SPAWN_ZOMBIES_LIST = "list"
|
||||
INCLUDED_ZOMBIES = "included_zombies"
|
||||
NUM_FLAGS = "num_flags"
|
||||
INEVITABLE_ZOMBIE_DICT = "inevitable_zombie_list"
|
||||
SURVIVAL_ROUNDS = "survival_rounds"
|
||||
|
||||
# 地图单元格属性
|
||||
MAP_PLANT = 'plantnames'
|
||||
MAP_SLEEP = 'sleep' # 有没有休眠的蘑菇,作是否能种植咖啡豆的判断
|
||||
MAP_PLOT_TYPE = 'plotType'
|
||||
MAP_PLANT = "plantnames"
|
||||
MAP_SLEEP = "sleep" # 有没有休眠的蘑菇,作是否能种植咖啡豆的判断
|
||||
MAP_PLOT_TYPE = "plotType"
|
||||
# 地图单元格区域类型
|
||||
MAP_GRASS = 'grass'
|
||||
MAP_WATER = 'water'
|
||||
MAP_TILE = 'tile' # 指屋顶上的瓦片
|
||||
MAP_UNAVAILABLE = 'unavailable' # 指完全不能种植物的地方,包括无草皮的荒地和坚果保龄球等红线右侧
|
||||
MAP_GRASS = "grass"
|
||||
MAP_WATER = "water"
|
||||
MAP_TILE = "tile" # 指屋顶上的瓦片
|
||||
MAP_UNAVAILABLE = "unavailable" # 指完全不能种植物的地方,包括无草皮的荒地和坚果保龄球等红线右侧
|
||||
# 地图单元格状态
|
||||
# 注意是可变对象,不能直接引用
|
||||
# 不喜欢用深拷贝,直接改用函数表示,需要时直接调用该函数生成即可
|
||||
@ -204,15 +198,15 @@ MAP_ROOF_OFFSET_Y = 105 # 暂时还不清楚数据
|
||||
MAP_POOL_FRONT_X = SCREEN_WIDTH - 15
|
||||
|
||||
# 植物选择菜单栏、传送带菜单栏等类型设定
|
||||
CHOOSEBAR_TYPE = 'choosebar_type'
|
||||
CHOOSEBAR_TYPE = "choosebar_type"
|
||||
CHOOSEBAR_STATIC = 0
|
||||
CHOOSEBAR_MOVE = 1
|
||||
CHOOSEBAR_BOWLING = 2
|
||||
MENUBAR_BACKGROUND = 'ChooserBackground'
|
||||
MOVEBAR_BACKGROUND = 'MoveBackground'
|
||||
PANEL_BACKGROUND = 'PanelBackground'
|
||||
START_BUTTON = 'StartButton'
|
||||
CARD_POOL = 'card_pool'
|
||||
MENUBAR_BACKGROUND = "ChooserBackground"
|
||||
MOVEBAR_BACKGROUND = "MoveBackground"
|
||||
PANEL_BACKGROUND = "PanelBackground"
|
||||
START_BUTTON = "StartButton"
|
||||
CARD_POOL = "card_pool"
|
||||
|
||||
# 关于植物栏的像素设置
|
||||
PANEL_Y_START = 87
|
||||
@ -232,145 +226,145 @@ MOVEBAR_CARD_FRESH_TIME = 6000
|
||||
CARD_MOVE_TIME = 60
|
||||
|
||||
# 其他显示物
|
||||
CAR = 'car'
|
||||
SUN = 'Sun'
|
||||
CAR = "car"
|
||||
SUN = "Sun"
|
||||
|
||||
# plant子类非植物对象
|
||||
NON_PLANT_OBJECTS = {
|
||||
HOLE := 'Hole',
|
||||
ICEFROZENPLOT := 'IceFrozenPlot',
|
||||
GRAVE := 'Grave',
|
||||
HOLE := "Hole",
|
||||
ICEFROZENPLOT := "IceFrozenPlot",
|
||||
GRAVE := "Grave",
|
||||
}
|
||||
|
||||
# 植物相关信息
|
||||
PLANT_IMAGE_RECT = 'plant_image_rect'
|
||||
BOOM_IMAGE = 'Boom'
|
||||
PLANT_IMAGE_RECT = "plant_image_rect"
|
||||
BOOM_IMAGE = "Boom"
|
||||
|
||||
# 植物卡片信息汇总(包括植物名称, 卡片名称, 阳光, 冷却时间)
|
||||
PLANT_CARD_INFO = (# 元组 (植物名称, 卡片名称, 阳光, 冷却时间)
|
||||
(PEASHOOTER := 'Peashooter',
|
||||
CARD_PEASHOOTER := 'card_peashooter',
|
||||
(PEASHOOTER := "Peashooter",
|
||||
CARD_PEASHOOTER := "card_peashooter",
|
||||
100,
|
||||
7500),
|
||||
(SUNFLOWER := 'SunFlower',
|
||||
CARD_SUNFLOWER := 'card_sunflower',
|
||||
(SUNFLOWER := "SunFlower",
|
||||
CARD_SUNFLOWER := "card_sunflower",
|
||||
50,
|
||||
7500),
|
||||
(CHERRYBOMB := 'CherryBomb',
|
||||
CARD_CHERRYBOMB := 'card_cherrybomb',
|
||||
(CHERRYBOMB := "CherryBomb",
|
||||
CARD_CHERRYBOMB := "card_cherrybomb",
|
||||
150,
|
||||
50000),
|
||||
(WALLNUT := 'WallNut',
|
||||
CARD_WALLNUT := 'card_wallnut',
|
||||
(WALLNUT := "WallNut",
|
||||
CARD_WALLNUT := "card_wallnut",
|
||||
50,
|
||||
30000),
|
||||
(POTATOMINE := 'PotatoMine',
|
||||
CARD_POTATOMINE := 'card_potatomine',
|
||||
(POTATOMINE := "PotatoMine",
|
||||
CARD_POTATOMINE := "card_potatomine",
|
||||
25,
|
||||
30000),
|
||||
(SNOWPEASHOOTER := 'SnowPea',
|
||||
CARD_SNOWPEASHOOTER := 'card_snowpea',
|
||||
(SNOWPEASHOOTER := "SnowPea",
|
||||
CARD_SNOWPEASHOOTER := "card_snowpea",
|
||||
175,
|
||||
7500),
|
||||
(CHOMPER := 'Chomper',
|
||||
CARD_CHOMPER := 'card_chomper',
|
||||
(CHOMPER := "Chomper",
|
||||
CARD_CHOMPER := "card_chomper",
|
||||
150,
|
||||
7500),
|
||||
(REPEATERPEA := 'RepeaterPea',
|
||||
CARD_REPEATERPEA := 'card_repeaterpea',
|
||||
(REPEATERPEA := "RepeaterPea",
|
||||
CARD_REPEATERPEA := "card_repeaterpea",
|
||||
200,
|
||||
7500),
|
||||
(PUFFSHROOM := 'PuffShroom',
|
||||
CARD_PUFFSHROOM := 'card_puffshroom',
|
||||
(PUFFSHROOM := "PuffShroom",
|
||||
CARD_PUFFSHROOM := "card_puffshroom",
|
||||
0,
|
||||
7500),
|
||||
(SUNSHROOM := 'SunShroom',
|
||||
CARD_SUNSHROOM := 'card_sunshroom',
|
||||
(SUNSHROOM := "SunShroom",
|
||||
CARD_SUNSHROOM := "card_sunshroom",
|
||||
25,
|
||||
7500),
|
||||
(FUMESHROOM := 'FumeShroom',
|
||||
CARD_FUMESHROOM := 'card_fumeshroom',
|
||||
(FUMESHROOM := "FumeShroom",
|
||||
CARD_FUMESHROOM := "card_fumeshroom",
|
||||
75,
|
||||
7500),
|
||||
(GRAVEBUSTER := 'GraveBuster',
|
||||
CARD_GRAVEBUSTER := 'card_gravebuster',
|
||||
(GRAVEBUSTER := "GraveBuster",
|
||||
CARD_GRAVEBUSTER := "card_gravebuster",
|
||||
75,
|
||||
7500),
|
||||
(HYPNOSHROOM := 'HypnoShroom',
|
||||
CARD_HYPNOSHROOM := 'card_hypnoshroom',
|
||||
(HYPNOSHROOM := "HypnoShroom",
|
||||
CARD_HYPNOSHROOM := "card_hypnoshroom",
|
||||
75,
|
||||
30000),
|
||||
(SCAREDYSHROOM := 'ScaredyShroom',
|
||||
CARD_SCAREDYSHROOM := 'card_scaredyshroom',
|
||||
(SCAREDYSHROOM := "ScaredyShroom",
|
||||
CARD_SCAREDYSHROOM := "card_scaredyshroom",
|
||||
25,
|
||||
7500),
|
||||
(ICESHROOM := 'IceShroom',
|
||||
CARD_ICESHROOM := 'card_iceshroom',
|
||||
(ICESHROOM := "IceShroom",
|
||||
CARD_ICESHROOM := "card_iceshroom",
|
||||
75,
|
||||
50000),
|
||||
(DOOMSHROOM := 'DoomShroom',
|
||||
CARD_DOOMSHROOM := 'card_doomshroom',
|
||||
(DOOMSHROOM := "DoomShroom",
|
||||
CARD_DOOMSHROOM := "card_doomshroom",
|
||||
75,
|
||||
50000),
|
||||
(LILYPAD := 'LilyPad',
|
||||
CARD_LILYPAD := 'card_lilypad',
|
||||
(LILYPAD := "LilyPad",
|
||||
CARD_LILYPAD := "card_lilypad",
|
||||
25,
|
||||
7500),
|
||||
(SQUASH := 'Squash',
|
||||
CARD_SQUASH := 'card_squash',
|
||||
(SQUASH := "Squash",
|
||||
CARD_SQUASH := "card_squash",
|
||||
50,
|
||||
30000),
|
||||
(TANGLEKLEP := 'TangleKlep',
|
||||
CARD_TANGLEKLEP := 'card_tangleklep',
|
||||
(TANGLEKLEP := "TangleKlep",
|
||||
CARD_TANGLEKLEP := "card_tangleklep",
|
||||
25,
|
||||
30000),
|
||||
(THREEPEASHOOTER := 'Threepeater',
|
||||
CARD_THREEPEASHOOTER := 'card_threepeashooter',
|
||||
(THREEPEASHOOTER := "Threepeater",
|
||||
CARD_THREEPEASHOOTER := "card_threepeashooter",
|
||||
325,
|
||||
7500),
|
||||
(JALAPENO := 'Jalapeno',
|
||||
CARD_JALAPENO := 'card_jalapeno',
|
||||
(JALAPENO := "Jalapeno",
|
||||
CARD_JALAPENO := "card_jalapeno",
|
||||
125,
|
||||
50000),
|
||||
(SPIKEWEED := 'Spikeweed',
|
||||
CARD_SPIKEWEED := 'card_spikeweed',
|
||||
(SPIKEWEED := "Spikeweed",
|
||||
CARD_SPIKEWEED := "card_spikeweed",
|
||||
100,
|
||||
7500),
|
||||
(TORCHWOOD := 'TorchWood',
|
||||
CARD_TORCHWOOD := 'card_torchwood',
|
||||
(TORCHWOOD := "TorchWood",
|
||||
CARD_TORCHWOOD := "card_torchwood",
|
||||
175,
|
||||
7500),
|
||||
(TALLNUT := 'TallNut',
|
||||
CARD_TALLNUT := 'card_tallnut',
|
||||
(TALLNUT := "TallNut",
|
||||
CARD_TALLNUT := "card_tallnut",
|
||||
125,
|
||||
30000),
|
||||
(SEASHROOM := 'SeaShroom',
|
||||
CARD_SEASHROOM := 'card_seashroom',
|
||||
(SEASHROOM := "SeaShroom",
|
||||
CARD_SEASHROOM := "card_seashroom",
|
||||
0,
|
||||
30000),
|
||||
(STARFRUIT := 'StarFruit',
|
||||
CARD_STARFRUIT := 'card_starfruit',
|
||||
(STARFRUIT := "StarFruit",
|
||||
CARD_STARFRUIT := "card_starfruit",
|
||||
125,
|
||||
7500),
|
||||
(PUMPKINHEAD := 'PumpkinHead',
|
||||
CARD_PUMPKINHEAD := 'card_pumpkinhead',
|
||||
(PUMPKINHEAD := "PumpkinHead",
|
||||
CARD_PUMPKINHEAD := "card_pumpkinhead",
|
||||
125,
|
||||
30000),
|
||||
(COFFEEBEAN := 'CoffeeBean',
|
||||
CARD_COFFEEBEAN := 'card_coffeebean',
|
||||
(COFFEEBEAN := "CoffeeBean",
|
||||
CARD_COFFEEBEAN := "card_coffeebean",
|
||||
75,
|
||||
7500),
|
||||
(GARLIC := 'Garlic',
|
||||
CARD_GARLIC := 'card_garlic',
|
||||
(GARLIC := "Garlic",
|
||||
CARD_GARLIC := "card_garlic",
|
||||
50,
|
||||
7500),
|
||||
# 应当保证这两个在一般模式下不可选的特殊植物恒在最后
|
||||
(WALLNUTBOWLING := 'WallNutBowling',
|
||||
CARD_WALLNUT := 'card_wallnut',
|
||||
(WALLNUTBOWLING := "WallNutBowling",
|
||||
CARD_WALLNUT := "card_wallnut",
|
||||
0,
|
||||
0),
|
||||
(REDWALLNUTBOWLING := 'RedWallNutBowling',
|
||||
CARD_REDWALLNUT := 'card_redwallnut',
|
||||
(REDWALLNUTBOWLING := "RedWallNutBowling",
|
||||
CARD_REDWALLNUT := "card_redwallnut",
|
||||
0,
|
||||
0),
|
||||
)
|
||||
@ -468,61 +462,61 @@ SUN_VALUE = 25
|
||||
# 僵尸冷冻
|
||||
ICE_SLOW_TIME = 10000
|
||||
MIN_FREEZE_TIME = 4000
|
||||
ICETRAP = 'IceTrap'
|
||||
ICETRAP = "IceTrap"
|
||||
|
||||
# 子弹信息
|
||||
# 子弹类型
|
||||
BULLET_PEA = 'PeaNormal'
|
||||
BULLET_PEA_ICE = 'PeaIce'
|
||||
BULLET_FIREBALL = 'Fireball'
|
||||
BULLET_MUSHROOM = 'BulletMushRoom'
|
||||
BULLET_SEASHROOM = 'BulletSeaShroom'
|
||||
FUME = 'Fume'
|
||||
BULLET_PEA = "PeaNormal"
|
||||
BULLET_PEA_ICE = "PeaIce"
|
||||
BULLET_FIREBALL = "Fireball"
|
||||
BULLET_MUSHROOM = "BulletMushRoom"
|
||||
BULLET_SEASHROOM = "BulletSeaShroom"
|
||||
FUME = "Fume"
|
||||
# 子弹伤害
|
||||
BULLET_DAMAGE_NORMAL = 20
|
||||
BULLET_DAMAGE_FIREBALL_BODY = 27 # 这是火球本体的伤害,注意不是40,本体(27) + 溅射(13)才是40
|
||||
BULLET_DAMAGE_FIREBALL_RANGE = 13
|
||||
# 子弹效果
|
||||
BULLET_EFFECT_ICE = 'ice'
|
||||
BULLET_EFFECT_UNICE = 'unice'
|
||||
BULLET_EFFECT_ICE = "ice"
|
||||
BULLET_EFFECT_UNICE = "unice"
|
||||
|
||||
# 特殊子弹
|
||||
# 杨桃子弹
|
||||
# 子弹名称
|
||||
BULLET_STAR = 'StarBullet'
|
||||
BULLET_STAR = "StarBullet"
|
||||
# 子弹方向
|
||||
STAR_FORWARD_UP = 'forwardUp' # 向前上方
|
||||
STAR_FORWARD_DOWN = 'forwardDown' #向前下方
|
||||
STAR_BACKWARD = 'backward' #向后
|
||||
STAR_UPWARD = 'upward' # 向上
|
||||
STAR_DOWNWARD = 'downward' # 向下
|
||||
STAR_FORWARD_UP = "forwardUp" # 向前上方
|
||||
STAR_FORWARD_DOWN = "forwardDown" #向前下方
|
||||
STAR_BACKWARD = "backward" #向后
|
||||
STAR_UPWARD = "upward" # 向上
|
||||
STAR_DOWNWARD = "downward" # 向下
|
||||
|
||||
# 僵尸信息
|
||||
ZOMBIE_IMAGE_RECT = 'zombie_image_rect'
|
||||
ZOMBIE_HEAD = 'ZombieHead'
|
||||
NORMAL_ZOMBIE = 'Zombie'
|
||||
CONEHEAD_ZOMBIE = 'ConeheadZombie'
|
||||
BUCKETHEAD_ZOMBIE = 'BucketheadZombie'
|
||||
FLAG_ZOMBIE = 'FlagZombie'
|
||||
NEWSPAPER_ZOMBIE = 'NewspaperZombie'
|
||||
FOOTBALL_ZOMBIE = 'FootballZombie'
|
||||
DUCKY_TUBE_ZOMBIE = 'DuckyTubeZombie'
|
||||
CONEHEAD_DUCKY_TUBE_ZOMBIE = 'ConeheadDuckyTubeZombie'
|
||||
BUCKETHEAD_DUCKY_TUBE_ZOMBIE = 'BucketheadDuckyTubeZombie'
|
||||
SCREEN_DOOR_ZOMBIE = 'ScreenDoorZombie'
|
||||
POLE_VAULTING_ZOMBIE = 'PoleVaultingZombie'
|
||||
ZOMBONI = 'Zomboni'
|
||||
SNORKELZOMBIE = 'SnorkelZombie'
|
||||
ZOMBIE_IMAGE_RECT = "zombie_image_rect"
|
||||
ZOMBIE_HEAD = "ZombieHead"
|
||||
NORMAL_ZOMBIE = "Zombie"
|
||||
CONEHEAD_ZOMBIE = "ConeheadZombie"
|
||||
BUCKETHEAD_ZOMBIE = "BucketheadZombie"
|
||||
FLAG_ZOMBIE = "FlagZombie"
|
||||
NEWSPAPER_ZOMBIE = "NewspaperZombie"
|
||||
FOOTBALL_ZOMBIE = "FootballZombie"
|
||||
DUCKY_TUBE_ZOMBIE = "DuckyTubeZombie"
|
||||
CONEHEAD_DUCKY_TUBE_ZOMBIE = "ConeheadDuckyTubeZombie"
|
||||
BUCKETHEAD_DUCKY_TUBE_ZOMBIE = "BucketheadDuckyTubeZombie"
|
||||
SCREEN_DOOR_ZOMBIE = "ScreenDoorZombie"
|
||||
POLE_VAULTING_ZOMBIE = "PoleVaultingZombie"
|
||||
ZOMBONI = "Zomboni"
|
||||
SNORKELZOMBIE = "SnorkelZombie"
|
||||
|
||||
BOOMDIE = 'BoomDie'
|
||||
BOOMDIE = "BoomDie"
|
||||
|
||||
# 对僵尸的攻击类型设置
|
||||
ZOMBIE_DEAFULT_DAMAGE = 'helmet2First'
|
||||
ZOMBIE_HELMET_2_FIRST = 'helmet2First' # 优先攻击二类防具
|
||||
ZOMBIE_COMMON_DAMAGE = 'commonDamage' # 优先攻击僵尸与一类防具的整体
|
||||
ZOMBIE_RANGE_DAMAGE = 'rangeDamage' # 范围攻击,同时伤害二类防具与(僵尸与一类防具的整体)
|
||||
ZOMBIE_ASH_DAMAGE = 'ashDamage' # 灰烬植物攻击,直接伤害本体
|
||||
ZOMBIE_WALLNUT_BOWLING_DANMAGE = 'wallnutBowlingDamage' # 坚果保龄球冲撞伤害
|
||||
ZOMBIE_DEAFULT_DAMAGE = "helmet2First"
|
||||
ZOMBIE_HELMET_2_FIRST = "helmet2First" # 优先攻击二类防具
|
||||
ZOMBIE_COMMON_DAMAGE = "commonDamage" # 优先攻击僵尸与一类防具的整体
|
||||
ZOMBIE_RANGE_DAMAGE = "rangeDamage" # 范围攻击,同时伤害二类防具与(僵尸与一类防具的整体)
|
||||
ZOMBIE_ASH_DAMAGE = "ashDamage" # 灰烬植物攻击,直接伤害本体
|
||||
ZOMBIE_WALLNUT_BOWLING_DANMAGE = "wallnutBowlingDamage" # 坚果保龄球冲撞伤害
|
||||
|
||||
# 僵尸生命值设置
|
||||
# 有关本体
|
||||
@ -585,21 +579,68 @@ WATER_ZOMBIE = {
|
||||
|
||||
|
||||
# 状态类型
|
||||
IDLE = 'idle'
|
||||
FLY = 'fly'
|
||||
EXPLODE = 'explode'
|
||||
ATTACK = 'attack'
|
||||
ATTACKED = 'attacked'
|
||||
DIGEST = 'digest'
|
||||
WALK = 'walk'
|
||||
DIE = 'die'
|
||||
CRY = 'cry'
|
||||
FREEZE = 'freeze'
|
||||
SLEEP = 'sleep'
|
||||
IDLE = "idle"
|
||||
FLY = "fly"
|
||||
EXPLODE = "explode"
|
||||
ATTACK = "attack"
|
||||
ATTACKED = "attacked"
|
||||
DIGEST = "digest"
|
||||
WALK = "walk"
|
||||
DIE = "die"
|
||||
CRY = "cry"
|
||||
FREEZE = "freeze"
|
||||
SLEEP = "sleep"
|
||||
|
||||
# 关卡状态
|
||||
CHOOSE = 'choose'
|
||||
PLAY = 'play'
|
||||
CHOOSE = "choose"
|
||||
PLAY = "play"
|
||||
|
||||
# 加载矩形碰撞范围 用于消除文件边框影响
|
||||
# 植物
|
||||
PLANT_RECT = {
|
||||
BULLET_PEA: {"x":28, "y":0, "width":28, "height":34},
|
||||
BULLET_PEA_ICE: {"x":26, "y":0, "width":30, "height":34},
|
||||
CHOMPER: {"x":0, "y":0, "width":100, "height":114},
|
||||
PUFFSHROOM: {"x":0, "y":28, "width":35, "height":38},
|
||||
f"{PUFFSHROOM}Sleep": {"x":1, "y":0, "width":39, "height":65},
|
||||
BULLET_MUSHROOM: {"x":0, "y":1, "width":55, "height":21},
|
||||
BULLET_SEASHROOM: {"x":0, "y":1, "width":55, "height":21},
|
||||
POTATOMINE: {"x":0, "y":0, "width":75, "height":55},
|
||||
SQUASH: {"x":10, "y":140, "width":80, "height":86},
|
||||
f"{SQUASH}Aim": {"x":10, "y":140, "width":80, "height":86},
|
||||
SPIKEWEED: {"x":3, "y":0, "width":80, "height":35}
|
||||
}
|
||||
# 僵尸
|
||||
ZOMBIE_RECT = {
|
||||
NORMAL_ZOMBIE: {"x":62, "width":90},
|
||||
f"{NORMAL_ZOMBIE}Attack": {"x":62, "width":90},
|
||||
f"{NORMAL_ZOMBIE}LostHead": {"x":62, "width":90},
|
||||
f"{NORMAL_ZOMBIE}LostHeadAttack":{"x":62, "width":90},
|
||||
f"{NORMAL_ZOMBIE}Die": {"x":0, "width":164},
|
||||
BOOMDIE: {"x":68, "width":80},
|
||||
CONEHEAD_ZOMBIE: {"x":80, "width":80},
|
||||
f"{CONEHEAD_ZOMBIE}Attack": {"x":79, "width":87},
|
||||
BUCKETHEAD_ZOMBIE: {"x":54, "width":90},
|
||||
f"{BUCKETHEAD_ZOMBIE}Attack": {"x":46, "width":90},
|
||||
FLAG_ZOMBIE: {"x":56, "width":110},
|
||||
f"{FLAG_ZOMBIE}Attack": {"x":60, "width":100},
|
||||
f"{FLAG_ZOMBIE}LostHead": {"x":55, "width":110},
|
||||
f"{FLAG_ZOMBIE}LostHeadAttack": {"x":55, "width":110},
|
||||
NEWSPAPER_ZOMBIE: {"x":48, "width":92},
|
||||
f"{NEWSPAPER_ZOMBIE}Attack": {"x":48, "width":92},
|
||||
f"{NEWSPAPER_ZOMBIE}NoPaper": {"x":40, "width":98},
|
||||
f"{NEWSPAPER_ZOMBIE}NoPaperAttack":{"x":48, "width":92},
|
||||
f"{NEWSPAPER_ZOMBIE}LostHead": {"x":44, "width":96},
|
||||
f"{NEWSPAPER_ZOMBIE}LostHeadAttack":{"x":48, "width":92},
|
||||
f"{NEWSPAPER_ZOMBIE}Die": {"x":0, "width":100},
|
||||
f"{DUCKY_TUBE_ZOMBIE}Die": {"x":55, "width":105},
|
||||
f"{DUCKY_TUBE_ZOMBIE}LostHead": {"x":55, "width":105},
|
||||
SCREEN_DOOR_ZOMBIE: {"x":41, "width":100},
|
||||
f"{SCREEN_DOOR_ZOMBIE}Attack": {"x":41, "width":100},
|
||||
} # 这里还有懒得写代码的补加,用循环实现
|
||||
for _part1 in (DUCKY_TUBE_ZOMBIE, CONEHEAD_DUCKY_TUBE_ZOMBIE, BUCKETHEAD_DUCKY_TUBE_ZOMBIE):
|
||||
for _part2 in ("", "Attack", "Swim"):
|
||||
ZOMBIE_RECT[f"{_part1}{_part2}"] = {"x":55, "width":105}
|
||||
|
||||
# 音效
|
||||
def _getSound(filename):
|
||||
|
||||
@ -1002,8 +1002,8 @@ class Level(tool.State):
|
||||
|
||||
def setupMouseImage(self, plant_name, select_plant, colorkey=c.BLACK):
|
||||
frame_list = tool.GFX[plant_name]
|
||||
if plant_name in tool.PLANT_RECT:
|
||||
data = tool.PLANT_RECT[plant_name]
|
||||
if plant_name in c.PLANT_RECT:
|
||||
data = c.PLANT_RECT[plant_name]
|
||||
x, y, width, height = data['x'], data['y'], data['width'], data['height']
|
||||
else:
|
||||
x, y = 0, 0
|
||||
|
||||
@ -212,18 +212,6 @@ def load_all_gfx(directory, colorkey=c.WHITE, accept=('.png', '.jpg', '.bmp', '.
|
||||
graphics[name] = img
|
||||
return graphics
|
||||
|
||||
# 从文件加载矩形碰撞范围
|
||||
# 用于消除文件边框影响
|
||||
def loadZombieImageRect():
|
||||
with open(c.JSON_PATH_ZOMBIE) as f:
|
||||
data = json.load(f)
|
||||
return data[c.ZOMBIE_IMAGE_RECT]
|
||||
|
||||
def loadPlantImageRect():
|
||||
with open(c.JSON_PATH_PLANTS) as f:
|
||||
data = json.load(f)
|
||||
return data[c.PLANT_IMAGE_RECT]
|
||||
|
||||
pg.display.set_caption(c.ORIGINAL_CAPTION) # 设置标题
|
||||
SCREEN = pg.display.set_mode(c.SCREEN_SIZE) # 设置初始屏幕
|
||||
pg.mixer.set_num_channels(255) # 设置可以同时播放的音频数量,默认为8,经常不够用
|
||||
@ -231,5 +219,3 @@ if os.path.exists(c.ORIGINAL_LOGO): # 设置窗口图标,仅对非Nuitka时
|
||||
pg.display.set_icon(pg.image.load(c.ORIGINAL_LOGO))
|
||||
|
||||
GFX = load_all_gfx(c.PATH_IMG_DIR)
|
||||
ZOMBIE_RECT = loadZombieImageRect()
|
||||
PLANT_RECT = loadPlantImageRect()
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user