| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- #!/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()
|