跳转到内容

重构提示词

使用说明(给人看):把下面【正文】整段复制粘贴给另一个 AI(便宜模型即可)。 该 AI 只读不写源项目;它会在 E:\AI\zcode\object\ke-she\refactored\ 下生成完整新代码。 执行 AI 需要:能读写本地文件、能运行 javac/java、能看到 E:\C\cDownKeShe(只读参考)与 mysql-connector-j-8.0.33.jar。 同目录的《重构计划.md》是本提示词的详细版,执行 AI 应当两份都读


你是一名 Java 工程师,现在要对一个学生课程设计项目做纯结构重构。请严格遵守下方所有要求。

把位于 E:\C\cDownKeShe\src\ 的 23 个 Java 源文件(默认包,平铺)重构为规范分包、单文件单类、带方法注释的版本,输出到新目录:

E:\AI\zcode\object\ke-she\refactored\

新目录结构最终长这样(顶层包 com.genshin.rpg):

refactored\
├─ src\
│ └─ com\genshin\rpg\
│ ├─ Main.java
│ ├─ app\ MainFrame.java
│ ├─ view\ LoginPanel.java MainMenuPanel.java LevelPanel.java
│ │ BattlePanel.java TeamPanel.java UpgradePanel.java
│ │ BagPanel.java AdminPanel.java
│ │ └─ ui\ElementStyle.java
│ ├─ model\ Stats.java ElementAttach.java Character.java Player.java
│ │ Enemy.java Item.java User.java SkillData.java Inventory.java
│ │ └─ enums\ ElementType.java ReactionType.java
│ ├─ service\ CombatSystem.java SkillSystem.java
│ │ └─ skill\ Skill.java NormalAttack.java ElementalSkill.java ElementalBurst.java
│ └─ dao\ StorageManager.java DBConnector.java TableInitializer.java
└─ run.bat

MySQL 驱动 jar 复制自 E:\C\cDownKeShe\mysql-connector-j-8.0.33.jar,放在 refactored\ 根目录。

  1. 先用工具读取 E:\C\cDownKeShe\src\ 下全部 23 个 .javarun.batdb\genshin_rpg.sql,以及同目录《重构计划.md》。
  2. 源项目是默认包,重构后改为显式包 com.genshin.rpg.*

红线(违反即算失败,禁止改动)

Section titled “红线(违反即算失败,禁止改动)”
  1. ElementType 枚举顺序不得变:ANEMO, GEO, HYDRO, PYRO, CRYO, ELECTRO, DENDRO, PHYSICAL(DB 用 ElementType.values()[index] 还原)。
  2. ReactionType 枚举常量名与顺序不得变。
  3. 所有数值原样搬运,包括但不限于:防御/抗性/等级基础伤害/精通加成公式、世界等级缩放 1+(wl-1)*0.6/0.4/0.3、奖励金币 50*worldLevel*85、经验 100*worldLevel*85、掉落 itemId==1→+2, ==2→+1, ==4→+2、战败回血/能量各 50%、仙跳墙 ATK+20%/暴击+12%/3回合、经验书 +5000、买书 -200、升级 HP+50*lv / ATK+5*lv / DEF+2.5*lv、深渊法师盾 25000、岩盔王盾 60000(破盾后减伤 0.2)、狂暴激怒 HP<30% ATK*1.5、超导 -40%物抗 8回合、结晶盾吸收倍率 同元素2.5/异元素1.0、玩家抗性 0.10
  4. 角色 id 硬编码特例保留:id1可莉/id3莫娜/id6甘雨/id8纳西妲 普攻带元素;id7刻晴E 雷附魔 2 回合;id5迪卢克Q 火附魔 3 回合;id8纳西妲Q +250 精通 3 回合;id4琴skill.id==12 Q 全队回血 ATK*1.2+3000
  5. 怪物 specialType 1..6 的 AI(普通挥棍0.8 / 射手瞄准0.95随机火雷 / 狂暴0.9或激怒1.25 / 遗迹大风车1.5或导弹1.0 / 法师1.1 / 岩盔有盾1.4岩伤或无盾1.0物伤)原样。
  6. 关卡-怪物配置MainFrame.startWave):第1关=模板0×2+模板1;第2关波1=0×2+1、波2=2+0;第3关波1=1×2+0、波2=3;第4关波1=1×2+0×2、波2=5;第5关=模板4×3(按出现顺序命名火/水/冰深渊法师)。模板索引与波次判断一字不改
  7. 管理员密码 "klee is comming"、提示 "klee is c..." 不变。
  8. MySQL 自动启动E:\SQL\mysql\bin\mysqld.exe + E:\SQL\mysql\my.ini + 工作目录 E:\SQL + Thread.sleep(4000) + 密码候选 ["","root","123456"] + 连接串 jdbc:mysql://localhost:3306/... + 库名 genshin_rpg + 全部建表 SQL + 全部 seed INSERT + 离线 fallback 静态数据全部原样。
  9. UI 视觉:所有 new Color(...)、字体 Microsoft YaHei、尺寸、中文文案、emoji(🎉☠️)、HTML <font color=...> 标签、JOptionPane 文字一字不改
  10. 行为流程:登录自动存档、showPanel 自动 saveUserProgress+refresh、战斗内 useItem 同步存档、注销 initGameData() 重置、战报文件名 battle_log_level_<id>_<yyyyMMdd_HHmmss>.txt 原样。
  11. 存档表 user_characters(user_id,character_id) / user_items(user_id,item_id) 的 PK、外键、ON DUPLICATE KEY UPDATERETURN_GENERATED_KEYS 写法不变。
  12. 不要做”顺手优化”:禁止把 for 改 stream、禁止提常量、禁止合并/改 buff 叠加、禁止重构数值、禁止合并重复 switch 为通用方法除非下面明确允许的 ElementStyle 合并。

新增 view\ui\ElementStyle.java,集中以下纯查表方法(行为零差异):

  • static String getElementChinese(ElementType)
  • static String getElementColorHex(ElementType)(返回 #RRGGBB
  • static Color getElementColor(ElementType)(返回 java.awt.Color
  • static String getReactionChinese(ReactionType) 原来散落在 TeamPanel / UpgradePanel / BattlePanel / CombatSystem / Character 里的同名 switch,改为调用 ElementStyle,删除本地副本。这是唯一允许的去重。

具体搬迁规则(原文件 → 新位置)

Section titled “具体搬迁规则(原文件 → 新位置)”
  • Main.javacom/genshin/rpg/Main.java(加 package + import,逻辑不变)。
  • MainFrame.javaapp/MainFrame.java采用简化方案:保留所有状态字段与方法在 MainFrame 内(不引入 GameContext,减少跳转)。给每个 public 方法补注释。
  • 8 个 *Panel.javaview/。Panel 仍持 MainFrame parent 字段;按钮事件集中在本文件,事件处或紧邻方法顶部用 // 点击后:①… ②… ③… 注释串清楚调用链;删除本地元素 switch,改调 ElementStyle
  • Stats.java/Player.java/Enemy.java/Item.java/User.java/SkillData.java/Inventory.javamodel/,加 package,原样。
  • Character.java(顶部含 class ElementAttach)→ 拆成 model/Character.java + model/ElementAttach.javaElementAttach 改为 public class(跨包可见)。
  • ElementType.java/ReactionType.javamodel/enums/,原样加 package。
  • Skill.java(一文件含 Skill 抽象类 + NormalAttack/ElementalSkill/ElementalBurst + SkillSystem)→ 拆为:
    • service/skill/Skill.javapublic abstract class Skill
    • service/skill/NormalAttack.javaElementalSkill.javaElementalBurst.java(均改为 public class
    • service/SkillSystem.java(改为 public class,单例 API 名字/签名不变)
  • CombatSystem.javaservice/CombatSystem.java,原样搬运 + 补注释;其本地 getHTMLColorString/getElementChineseName/getReactionChineseName 改调 ElementStyle
  • StorageManager.java → 拆为:
    • dao/DBConnector.java:单例,持有 Connection,含原 connectDB()/tryConnect()(含自动启动 MySQL 的全部副作用),暴露 Connection getConnection()boolean isConnected()
    • dao/TableInitializer.javainitTables() + 全部 seed INSERT,依赖 DBConnector.getInstance()
    • dao/StorageManager.java:保持单例 + 原同名同参 APIgetInstance/loadCharacters/loadEnemies/loadSkills/loginUser/registerUser/loadUserProgress/saveUserProgress/getAllUsers/addUser/updateUser/deleteUser/getUserCharacters/updateUserCharacter/getUserItems/updateUserItem/saveBattleLog),内部委托给 DBConnector/TableInitializer;保留 public static class AdminCharDatapublic static class AdminItemData(名字不变,AdminPanel 仍按 StorageManager.AdminCharData 引用)。
    • 所有 SQL 字符串、表名、列名、ON DUPLICATE KEY UPDATERETURN_GENERATED_KEYS、fallback 静态数据逐行搬运

每个方法(public/protected/private/构造)都要有注释,至少说明:

  • 作用:一句话。
  • 输入:参数含义(无参写”无”)。
  • 输出/副作用:返回值含义;是否改字段/写库/切页/刷新 UI。 按钮事件处用 // 点击后:① 调 xxx ② 改 yyy ③ 刷新 zzz 形式就地注释。 保留原代码里已有的中文行注释。

原代码里这些是包级(无 public),跨包后必须加 public

  • ElementAttachSkillSystemNormalAttackElementalSkillElementalBurst。 否则编译失败。

run.bat(写在 refactored\run.bat,Windows cmd 语法)

Section titled “run.bat(写在 refactored\run.bat,Windows cmd 语法)”
Terminal window
@echo off
cd /d "%~dp0"
echo [1/2] Compiling...
if not exist bin mkdir bin
dir /s /b src\*.java > sources.txt
javac -encoding UTF-8 -d bin @sources.txt
if %errorlevel% neq 0 ( echo [ERROR] Compile failed & pause & exit /b 1 )
echo [2/2] Running...
set "CP=bin;mysql-connector-j-8.0.33.jar"
java -cp "%CP%" com.genshin.rpg.Main
pause

完成判据(你必须自行验证并贴出证据)

Section titled “完成判据(你必须自行验证并贴出证据)”
  1. refactored\ 下运行 run.bat编译 0 error(贴编译输出)。
  2. 启动程序,能弹出登录窗(截图或描述)。
  3. 写一份 refactored\REFACTOR_NOTE.md,含:原文件→新文件对照表、红线逐条确认(✓)、编译运行验证记录、与原版的行为一致性抽查清单(登录/注册/主菜单/编队/关卡1战斗胜利领奖/养成买书用书/管理员增删改/存档读写)。
  4. 不允许修改 E:\C\cDownKeShe 下任何文件(那是原版,只读参考)。
  • E:\AI\zcode\object\ke-she\refactored\ 完整新源码 + run.bat + jar + REFACTOR_NOTE.md
  • 全部源文件带 package 声明与 import;每个方法有注释;按钮事件可在一屏内读懂”调用谁/做什么”。

开始执行。先读取全部原文件与《重构计划.md》,再动手。完成后贴出编译输出与 REFACTOR_NOTE.md 摘要。