#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ 根据关卡JSON配置文件创建Excel表格 """ import json import pandas as pd import os from pathlib import Path def load_json_file(file_path): """加载JSON文件""" with open(file_path, 'r', encoding='utf-8') as f: return json.load(f) def create_levels_excel(): """根据关卡JSON文件创建关卡配置Excel表格""" levels_dir = 'd:/CocosGame/Pong/assets/resources/data/levels' output_dir = 'd:/CocosGame/Pong/assets/resources/data/excel/关卡配置' # 确保输出目录存在 os.makedirs(output_dir, exist_ok=True) # 关卡基础信息 levels_basic = [] # 关卡武器配置 levels_weapons = [] # 关卡波次配置 levels_waves = [] # 敌人详细配置 enemies_detail = [] # 遍历所有关卡文件 for i in range(1, 10): # Level1 到 Level9 level_file = f'{levels_dir}/Level{i}.json' if os.path.exists(level_file): level_data = load_json_file(level_file) # 基础信息 levels_basic.append({ '关卡ID': level_data['levelId'], '关卡名称': level_data['name'], '场景': level_data['scene'], '描述': level_data['description'], '难度': level_data['difficulty'], '生命倍数': level_data['healthMultiplier'], '金币奖励': level_data['coinReward'], '钻石奖励': level_data['diamondReward'] }) # 武器配置 - 将同一关卡的武器合并到一行,用逗号分割 weapons_str = '、'.join(level_data['availableWeapons']) levels_weapons.append({ '关卡ID': level_data['levelId'], '关卡名称': level_data['name'], '可用武器': weapons_str }) # 波次配置 for wave in level_data['waves']: levels_waves.append({ '关卡ID': level_data['levelId'], '关卡名称': level_data['name'], '波次ID': wave['waveId'], '敌人种类数': len(wave['enemies']) }) # 敌人详细配置 for enemy in wave['enemies']: enemies_detail.append({ '关卡ID': level_data['levelId'], '关卡名称': level_data['name'], '波次ID': wave['waveId'], '敌人类型': enemy['enemyType'], '数量': enemy['count'], '生成间隔': enemy['spawnInterval'], '生成延迟': enemy['spawnDelay'], '特征描述': enemy['characteristics'] }) # 创建Excel文件 excel_file = f'{output_dir}/关卡配置表.xlsx' with pd.ExcelWriter(excel_file, engine='openpyxl') as writer: # 关卡基础配置表 df_basic = pd.DataFrame(levels_basic) df_basic.to_excel(writer, sheet_name='关卡基础配置', index=False) # 关卡武器配置表 df_weapons = pd.DataFrame(levels_weapons) df_weapons.to_excel(writer, sheet_name='关卡武器配置', index=False) # 关卡波次配置表 df_waves = pd.DataFrame(levels_waves) df_waves.to_excel(writer, sheet_name='关卡波次配置', index=False) # 敌人详细配置表 df_enemies = pd.DataFrame(enemies_detail) df_enemies.to_excel(writer, sheet_name='敌人详细配置', index=False) print(f'关卡配置Excel表格已创建: {excel_file}') print('包含以下工作表:') print('- 关卡基础配置: 关卡的基本信息') print('- 关卡武器配置: 每个关卡可用的武器列表') print('- 关卡波次配置: 每个关卡的波次信息') print('- 敌人详细配置: 每个波次中敌人的详细配置') if __name__ == '__main__': create_levels_excel()