create_level_config_excel.py 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. """
  4. 根据关卡JSON配置文件创建Excel表格
  5. """
  6. import json
  7. import pandas as pd
  8. import os
  9. from pathlib import Path
  10. def load_json_file(file_path):
  11. """加载JSON文件"""
  12. with open(file_path, 'r', encoding='utf-8') as f:
  13. return json.load(f)
  14. def create_levels_excel():
  15. """根据关卡JSON文件创建关卡配置Excel表格"""
  16. levels_dir = 'd:/CocosGame/Pong/assets/resources/data/levels'
  17. output_dir = 'd:/CocosGame/Pong/assets/resources/data/excel/关卡配置'
  18. # 确保输出目录存在
  19. os.makedirs(output_dir, exist_ok=True)
  20. # 关卡基础信息
  21. levels_basic = []
  22. # 关卡武器配置
  23. levels_weapons = []
  24. # 关卡波次配置
  25. levels_waves = []
  26. # 敌人详细配置
  27. enemies_detail = []
  28. # 遍历所有关卡文件
  29. for i in range(1, 10): # Level1 到 Level9
  30. level_file = f'{levels_dir}/Level{i}.json'
  31. if os.path.exists(level_file):
  32. level_data = load_json_file(level_file)
  33. # 基础信息
  34. levels_basic.append({
  35. '关卡ID': level_data['levelId'],
  36. '关卡名称': level_data['name'],
  37. '场景': level_data['scene'],
  38. '描述': level_data['description'],
  39. '难度': level_data['difficulty'],
  40. '生命倍数': level_data['healthMultiplier'],
  41. '金币奖励': level_data['coinReward'],
  42. '钻石奖励': level_data['diamondReward']
  43. })
  44. # 武器配置 - 将同一关卡的武器合并到一行,用逗号分割
  45. weapons_str = '、'.join(level_data['availableWeapons'])
  46. levels_weapons.append({
  47. '关卡ID': level_data['levelId'],
  48. '关卡名称': level_data['name'],
  49. '可用武器': weapons_str
  50. })
  51. # 波次配置
  52. for wave in level_data['waves']:
  53. levels_waves.append({
  54. '关卡ID': level_data['levelId'],
  55. '关卡名称': level_data['name'],
  56. '波次ID': wave['waveId'],
  57. '敌人种类数': len(wave['enemies'])
  58. })
  59. # 敌人详细配置
  60. for enemy in wave['enemies']:
  61. enemies_detail.append({
  62. '关卡ID': level_data['levelId'],
  63. '关卡名称': level_data['name'],
  64. '波次ID': wave['waveId'],
  65. '敌人类型': enemy['enemyType'],
  66. '数量': enemy['count'],
  67. '生成间隔': enemy['spawnInterval'],
  68. '生成延迟': enemy['spawnDelay'],
  69. '特征描述': enemy['characteristics']
  70. })
  71. # 创建Excel文件
  72. excel_file = f'{output_dir}/关卡配置表.xlsx'
  73. with pd.ExcelWriter(excel_file, engine='openpyxl') as writer:
  74. # 关卡基础配置表
  75. df_basic = pd.DataFrame(levels_basic)
  76. df_basic.to_excel(writer, sheet_name='关卡基础配置', index=False)
  77. # 关卡武器配置表
  78. df_weapons = pd.DataFrame(levels_weapons)
  79. df_weapons.to_excel(writer, sheet_name='关卡武器配置', index=False)
  80. # 关卡波次配置表
  81. df_waves = pd.DataFrame(levels_waves)
  82. df_waves.to_excel(writer, sheet_name='关卡波次配置', index=False)
  83. # 敌人详细配置表
  84. df_enemies = pd.DataFrame(enemies_detail)
  85. df_enemies.to_excel(writer, sheet_name='敌人详细配置', index=False)
  86. print(f'关卡配置Excel表格已创建: {excel_file}')
  87. print('包含以下工作表:')
  88. print('- 关卡基础配置: 关卡的基本信息')
  89. print('- 关卡武器配置: 每个关卡可用的武器列表')
  90. print('- 关卡波次配置: 每个关卡的波次信息')
  91. print('- 敌人详细配置: 每个波次中敌人的详细配置')
  92. if __name__ == '__main__':
  93. create_levels_excel()