Files
OnlineRpg/验收标准.md
ChuXun e287aadd3c 1
2025-10-26 16:37:22 +08:00

44 lines
2.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# **项目验收标准 (Checklist)**
以下清单用于验证项目是否满足《C++程序设计》结课作业的核心要求。
## **1\. 功能验收**
* \[ \] **UC-01 (账户)**:可以成功注册新用户,数据库 Users 表中出现新纪录。
* \[ \] **UC-01 (账户)**:可以使用已注册的账户成功登录。
* \[ \] **UC-02 (大厅)**客户端A 在大厅发送消息客户端B、C (均在大厅) 能收到。
* \[ \] **UC-02 (大厅)**:客户端可以正确获取在线玩家列表。
* \[ \] **UC-03 (邀请)**客户端A 邀请 BB 收到提示并能接受或拒绝。
* \[ \] **UC-04 (战斗)**A 和 B 进入战斗后,不再收到大厅聊天。
* \[ \] **UC-04 (战斗)**战斗逻辑在服务器端正确执行e.g., A 攻击 BB 的 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 验证。