mirror of
https://github.com/ChuXunYu/OnlineRpg.git
synced 2026-01-30 23:41:26 +00:00
2.8 KiB
2.8 KiB
项目验收标准 (Checklist)
以下清单用于验证项目是否满足《C++程序设计》结课作业的核心要求。
1. 功能验收
- [ ] UC-01 (账户):可以成功注册新用户,数据库 Users 表中出现新纪录。
- [ ] UC-01 (账户):可以使用已注册的账户成功登录。
- [ ] UC-02 (大厅):客户端A 在大厅发送消息,客户端B、C (均在大厅) 能收到。
- [ ] UC-02 (大厅):客户端可以正确获取在线玩家列表。
- [ ] UC-03 (邀请):客户端A 邀请 B,B 收到提示并能接受或拒绝。
- [ ] UC-04 (战斗):A 和 B 进入战斗后,不再收到大厅聊天。
- [ ] UC-04 (战斗):战斗逻辑在服务器端正确执行(e.g., A 攻击 B,B 的 HP 减少)。
- [ ] UC-04 (战斗):客户端能正确收发战报,并显示回合制提示。
- [ ] UC-04 (战斗):一方 HP 归零后,服务器能正确宣布胜负,并将双方踢回大厅。
- [ ] 健壮性:客户端A 强行退出 (Ctrl+C),服务器能检测到,并在玩家列表中移除 A。
2. 关键技术验收 (强制)
- [ ] 多态:
- [ ] 提供了 ICharacter 和 ISkill 抽象基类。
- [ ] 提供了至少 2 种职业和 2 种技能的派生类。
- [ ] BattleRoom 仅通过 ICharacter* 和 ISkill* (基类指针) 来执行战斗逻辑。
- [ ] STL:
- [ ] GameServer 使用 std::map 管理 ClientHandler。
- [ ] GameServer (或 ClientHandler) 使用 std::thread 为每个客户端创建了线程。
- [ ] GameLobby 和 BattleRoom 在访问共享数据(如 map, 战斗状态)时,使用了 std::mutex。
- [ ] BattleRoom 使用 std::vector + <algorithm> (std::sort) 来管理行动顺序。
- [ ] 模板 + 链表:
- [ ] 提供了 HistoryLog.h 文件。
- [ ] 该文件手写实现了泛型的 Node<T> 结构体。
- [ ] 该文件手写实现了泛型类 HistoryLog<T>。
- [ ] HistoryLog<T> 必须使用 Node<T>* (链表) 作为其底层数据结构,而不是 std::list 或 std::vector。
- [ ] BattleRoom 成功实例化并使用了 HistoryLog<string>。
- [ ] 网络编程:
- [ ] 提供了 SocketWrapper (或等效) 类来封装原生 Socket API。
- [ ] 服务器实现了 bind, listen, accept 的 C/S 模型。
- [ ] 客户端实现了 connect 模型。
- [ ] 客户端使用了多线程来分别处理 send 和 recv。
- [ ] 数据库:
- [ ] 项目集成了 sqlite3.c / sqlite3.h。
- [ ] 提供了 Database 封装类。
- [ ] Users 和 Characters 表已按设计创建。
- [ ] 注册和登录功能已通过数据库 SELECT/INSERT 验证。