verify_energy_config.py 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. """
  4. 能量条经验值系统配置验证脚本
  5. 用于验证新的能量条配置是否正确生成和应用
  6. """
  7. import json
  8. import os
  9. from pathlib import Path
  10. def verify_energy_config():
  11. """验证能量条配置"""
  12. print("=== 能量条经验值系统配置验证 ===")
  13. # 检查关卡配置文件
  14. levels_dir = Path("assets/resources/data/levels")
  15. if not levels_dir.exists():
  16. print(f"❌ 关卡配置目录不存在: {levels_dir}")
  17. return False
  18. success_count = 0
  19. total_count = 0
  20. # 检查所有关卡配置文件
  21. for level_file in levels_dir.glob("Level*.json"):
  22. total_count += 1
  23. print(f"\n检查关卡配置: {level_file.name}")
  24. try:
  25. with open(level_file, 'r', encoding='utf-8') as f:
  26. config = json.load(f)
  27. # 检查基本结构
  28. if 'levelSettings' not in config:
  29. print(f" ❌ 缺少 levelSettings")
  30. continue
  31. level_settings = config['levelSettings']
  32. # 检查原有能量配置
  33. if 'energyMax' not in level_settings:
  34. print(f" ❌ 缺少 energyMax")
  35. continue
  36. else:
  37. print(f" ✓ energyMax: {level_settings['energyMax']}")
  38. # 检查新的能量条经验值配置
  39. if 'energyExpValues' not in level_settings:
  40. print(f" ❌ 缺少 energyExpValues")
  41. continue
  42. else:
  43. exp_values = level_settings['energyExpValues']
  44. if isinstance(exp_values, list) and len(exp_values) > 0:
  45. print(f" ✓ energyExpValues: 长度={len(exp_values)}, 前5个值={exp_values[:5]}")
  46. else:
  47. print(f" ❌ energyExpValues 格式错误")
  48. continue
  49. # 检查新的能量条升级配置
  50. if 'energyMaxUpgrades' not in level_settings:
  51. print(f" ❌ 缺少 energyMaxUpgrades")
  52. continue
  53. else:
  54. upgrade_values = level_settings['energyMaxUpgrades']
  55. if isinstance(upgrade_values, list) and len(upgrade_values) > 0:
  56. print(f" ✓ energyMaxUpgrades: 长度={len(upgrade_values)}, 前5个值={upgrade_values[:5]}")
  57. else:
  58. print(f" ❌ energyMaxUpgrades 格式错误")
  59. continue
  60. # 验证数据逻辑
  61. if len(exp_values) != len(upgrade_values):
  62. print(f" ⚠️ 警告: energyExpValues和energyMaxUpgrades长度不匹配")
  63. # 验证递增趋势
  64. if exp_values == sorted(exp_values):
  65. print(f" ✓ energyExpValues 呈递增趋势")
  66. else:
  67. print(f" ⚠️ 警告: energyExpValues 未呈递增趋势")
  68. if upgrade_values == sorted(upgrade_values):
  69. print(f" ✓ energyMaxUpgrades 呈递增趋势")
  70. else:
  71. print(f" ⚠️ 警告: energyMaxUpgrades 未呈递增趋势")
  72. print(f" ✅ {level_file.name} 配置验证通过")
  73. success_count += 1
  74. except Exception as e:
  75. print(f" ❌ 读取配置文件失败: {e}")
  76. print(f"\n=== 验证结果 ===")
  77. print(f"总计关卡: {total_count}")
  78. print(f"验证通过: {success_count}")
  79. print(f"验证失败: {total_count - success_count}")
  80. if success_count == total_count and total_count > 0:
  81. print("🎉 所有关卡配置验证通过!")
  82. return True
  83. else:
  84. print("❌ 部分关卡配置验证失败")
  85. return False
  86. def verify_excel_config():
  87. """验证Excel配置文件"""
  88. print("\n=== Excel配置文件验证 ===")
  89. excel_file = Path("assets/resources/data/excel/关卡配置/关卡配置表.xlsx")
  90. if not excel_file.exists():
  91. print(f"❌ Excel配置文件不存在: {excel_file}")
  92. return False
  93. try:
  94. import pandas as pd
  95. # 检查能量经验配置工作表
  96. try:
  97. df_exp = pd.read_excel(excel_file, sheet_name='能量经验配置')
  98. print(f"✓ '能量经验配置' 工作表存在,行数: {len(df_exp)}")
  99. print(f" 列数: {len(df_exp.columns)}")
  100. if len(df_exp.columns) >= 21: # 关卡ID + 20次经验值
  101. print(f" ✓ 列数符合预期 (>=21)")
  102. else:
  103. print(f" ❌ 列数不足 (<21)")
  104. except Exception as e:
  105. print(f"❌ '能量经验配置' 工作表读取失败: {e}")
  106. # 检查能量升级配置工作表
  107. try:
  108. df_upgrade = pd.read_excel(excel_file, sheet_name='能量最大值升级')
  109. print(f"✓ '能量最大值升级' 工作表存在,行数: {len(df_upgrade)}")
  110. print(f" 列数: {len(df_upgrade.columns)}")
  111. if len(df_upgrade.columns) >= 21: # 关卡ID + 20次升级值
  112. print(f" ✓ 列数符合预期 (>=21)")
  113. else:
  114. print(f" ❌ 列数不足 (<21)")
  115. except Exception as e:
  116. print(f"❌ '能量最大值升级' 工作表读取失败: {e}")
  117. return True
  118. except ImportError:
  119. print("❌ pandas库未安装,无法验证Excel文件")
  120. return False
  121. except Exception as e:
  122. print(f"❌ Excel文件验证失败: {e}")
  123. return False
  124. def main():
  125. """主函数"""
  126. print("开始验证能量条经验值系统配置...\n")
  127. # 验证Excel配置
  128. excel_ok = verify_excel_config()
  129. # 验证JSON配置
  130. json_ok = verify_energy_config()
  131. print("\n=== 总体验证结果 ===")
  132. if excel_ok and json_ok:
  133. print("🎉 能量条经验值系统配置验证全部通过!")
  134. print("\n系统已准备就绪,可以进行游戏测试:")
  135. print("1. 在Cocos Creator中打开项目")
  136. print("2. 运行游戏场景")
  137. print("3. 击杀敌人观察能量条变化")
  138. print("4. 能量满时观察升级效果")
  139. else:
  140. print("❌ 配置验证存在问题,请检查上述错误信息")
  141. if __name__ == "__main__":
  142. main()