#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ 能量条经验值系统配置验证脚本 用于验证新的能量条配置是否正确生成和应用 """ import json import os from pathlib import Path def verify_energy_config(): """验证能量条配置""" print("=== 能量条经验值系统配置验证 ===") # 检查关卡配置文件 levels_dir = Path("assets/resources/data/levels") if not levels_dir.exists(): print(f"❌ 关卡配置目录不存在: {levels_dir}") return False success_count = 0 total_count = 0 # 检查所有关卡配置文件 for level_file in levels_dir.glob("Level*.json"): total_count += 1 print(f"\n检查关卡配置: {level_file.name}") try: with open(level_file, 'r', encoding='utf-8') as f: config = json.load(f) # 检查基本结构 if 'levelSettings' not in config: print(f" ❌ 缺少 levelSettings") continue level_settings = config['levelSettings'] # 检查原有能量配置 if 'energyMax' not in level_settings: print(f" ❌ 缺少 energyMax") continue else: print(f" ✓ energyMax: {level_settings['energyMax']}") # 检查新的能量条经验值配置 if 'energyExpValues' not in level_settings: print(f" ❌ 缺少 energyExpValues") continue else: exp_values = level_settings['energyExpValues'] if isinstance(exp_values, list) and len(exp_values) > 0: print(f" ✓ energyExpValues: 长度={len(exp_values)}, 前5个值={exp_values[:5]}") else: print(f" ❌ energyExpValues 格式错误") continue # 检查新的能量条升级配置 if 'energyMaxUpgrades' not in level_settings: print(f" ❌ 缺少 energyMaxUpgrades") continue else: upgrade_values = level_settings['energyMaxUpgrades'] if isinstance(upgrade_values, list) and len(upgrade_values) > 0: print(f" ✓ energyMaxUpgrades: 长度={len(upgrade_values)}, 前5个值={upgrade_values[:5]}") else: print(f" ❌ energyMaxUpgrades 格式错误") continue # 验证数据逻辑 if len(exp_values) != len(upgrade_values): print(f" ⚠️ 警告: energyExpValues和energyMaxUpgrades长度不匹配") # 验证递增趋势 if exp_values == sorted(exp_values): print(f" ✓ energyExpValues 呈递增趋势") else: print(f" ⚠️ 警告: energyExpValues 未呈递增趋势") if upgrade_values == sorted(upgrade_values): print(f" ✓ energyMaxUpgrades 呈递增趋势") else: print(f" ⚠️ 警告: energyMaxUpgrades 未呈递增趋势") print(f" ✅ {level_file.name} 配置验证通过") success_count += 1 except Exception as e: print(f" ❌ 读取配置文件失败: {e}") print(f"\n=== 验证结果 ===") print(f"总计关卡: {total_count}") print(f"验证通过: {success_count}") print(f"验证失败: {total_count - success_count}") if success_count == total_count and total_count > 0: print("🎉 所有关卡配置验证通过!") return True else: print("❌ 部分关卡配置验证失败") return False def verify_excel_config(): """验证Excel配置文件""" print("\n=== Excel配置文件验证 ===") excel_file = Path("assets/resources/data/excel/关卡配置/关卡配置表.xlsx") if not excel_file.exists(): print(f"❌ Excel配置文件不存在: {excel_file}") return False try: import pandas as pd # 检查能量经验配置工作表 try: df_exp = pd.read_excel(excel_file, sheet_name='能量经验配置') print(f"✓ '能量经验配置' 工作表存在,行数: {len(df_exp)}") print(f" 列数: {len(df_exp.columns)}") if len(df_exp.columns) >= 21: # 关卡ID + 20次经验值 print(f" ✓ 列数符合预期 (>=21)") else: print(f" ❌ 列数不足 (<21)") except Exception as e: print(f"❌ '能量经验配置' 工作表读取失败: {e}") # 检查能量升级配置工作表 try: df_upgrade = pd.read_excel(excel_file, sheet_name='能量最大值升级') print(f"✓ '能量最大值升级' 工作表存在,行数: {len(df_upgrade)}") print(f" 列数: {len(df_upgrade.columns)}") if len(df_upgrade.columns) >= 21: # 关卡ID + 20次升级值 print(f" ✓ 列数符合预期 (>=21)") else: print(f" ❌ 列数不足 (<21)") except Exception as e: print(f"❌ '能量最大值升级' 工作表读取失败: {e}") return True except ImportError: print("❌ pandas库未安装,无法验证Excel文件") return False except Exception as e: print(f"❌ Excel文件验证失败: {e}") return False def main(): """主函数""" print("开始验证能量条经验值系统配置...\n") # 验证Excel配置 excel_ok = verify_excel_config() # 验证JSON配置 json_ok = verify_energy_config() print("\n=== 总体验证结果 ===") if excel_ok and json_ok: print("🎉 能量条经验值系统配置验证全部通过!") print("\n系统已准备就绪,可以进行游戏测试:") print("1. 在Cocos Creator中打开项目") print("2. 运行游戏场景") print("3. 击杀敌人观察能量条变化") print("4. 能量满时观察升级效果") else: print("❌ 配置验证存在问题,请检查上述错误信息") if __name__ == "__main__": main()