mirror of
https://github.com/ChuXunYu/OnlineRpg.git
synced 2026-01-31 12:15:46 +00:00
44 lines
2.8 KiB
Markdown
44 lines
2.8 KiB
Markdown
# **项目验收标准 (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 验证。 |