mirror of
https://github.com/ChuXunYu/OnlineRpg.git
synced 2026-01-30 23:41:26 +00:00
11 KiB
11 KiB
OnlineRpg 运行和游戏指南
快速开始
第一步:启动服务器
在 WSL 终端中运行:
cd /mnt/e/50425/Documents/Github/OnlineRpg
./build/bin/server
你会看到:
==================================
OnlineRpg Server
==================================
Port: 8888
Database: data/game.db
==================================
Server started successfully
Listening on port: 8888
Database: Connected
Server accepting connections...
保持这个终端开着!服务器正在运行。
第二步:启动客户端(新开终端)
打开新的 WSL 终端窗口,运行:
cd /mnt/e/50425/Documents/Github/OnlineRpg
./build/bin/client
游戏流程指南
1. 连接服务器
客户端启动后会自动尝试连接 localhost:8888
你会看到主菜单:
========================================
OnlineRpg Client
========================================
1. Register (注册)
2. Login (登录)
3. Exit (退出)
========================================
Please select:
2. 注册新账号
首次游戏选择 1 (注册):
Enter username: xiaoming
Enter password: 123456
服务器会返回:
SUCCESS|Registration successful
3. 登录游戏
选择 2 (登录):
Enter username: xiaoming
Enter password: 123456
成功后显示:
SUCCESS|Login successful
4. 创建角色
首次登录会提示创建角色:
You need to create a character first.
Select class:
1. Warrior (战士 - 高血量高防御)
2. Mage (法师 - 高魔法攻击)
Enter choice: 1
Enter character name: 小明的战士
职业说明:
战士 (Warrior)
- 生命值: 150
- 攻击力: 15
- 防御力: 10
- 魔法: 0
- 技能:
- 普通攻击 (Normal Attack)
- 强力打击 (Power Strike) - 2倍伤害
- 防御姿态 (Defensive Stance) - 提升防御
法师 (Mage)
- 生命值: 100
- 攻击力: 8
- 防御力: 3
- 魔法: 20
- 技能:
- 普通攻击 (Normal Attack)
- 火球术 (Fireball) - 魔法伤害
- 奥术护盾 (Arcane Shield) - 魔法防护
5. 游戏大厅
创建角色后进入游戏大厅:
========================================
Game Lobby
========================================
1. Chat (聊天)
2. List Players (查看在线玩家)
3. Invite to Battle (邀请战斗)
4. Check Battle Status (查看战斗状态)
5. Logout (登出)
========================================
Select:
5.1 聊天功能
选择 1:
Enter message: 大家好!有人一起战斗吗?
所有在线玩家都会收到:
[Chat] xiaoming: 大家好!有人一起战斗吗?
5.2 查看在线玩家
选择 2:
Online Players:
- xiaoming (Warrior Lv.1)
- xiaohua (Mage Lv.1)
- xiaogang (Warrior Lv.2)
5.3 邀请战斗
选择 3:
Enter target player username: xiaohua
对方会收到邀请:
[Battle Invite] xiaoming wants to battle with you!
Accept? (yes/no):
6. 战斗系统
6.1 战斗开始
当对方接受邀请后,双方进入战斗:
========================================
Battle Started!
========================================
Your Character: 小明的战士 (Warrior)
HP: 150/150 ATK: 15 DEF: 10
Enemy: 小花的法师 (Mage)
HP: 100/100 ATK: 8 DEF: 3
========================================
6.2 回合制战斗
每个回合你可以选择:
Your Turn!
========================================
Available Skills:
0. Normal Attack (普通攻击)
1. Power Strike (强力打击 - 消耗10能量)
2. Defensive Stance (防御姿态 - 消耗15能量)
========================================
Select skill (0-2):
技能详解:
战士技能:
- 普通攻击 - 基础攻击,造成 ATK 伤害
- 强力打击 - 造成 2×ATK 伤害,消耗能量
- 防御姿态 - 临时提升防御力50%,持续一回合
法师技能:
- 普通攻击 - 基础攻击
- 火球术 - 造成 (ATK + MAGIC) 的魔法伤害
- 奥术护盾 - 减少50%受到的伤害
- 冰霜新星 - 魔法AOE攻击
- 闪电链 - 连续攻击
- 治疗术 - 恢复生命值
- 魔法箭 - 精准魔法攻击
6.3 战斗日志
每个行动都会记录:
[Round 1]
> xiaoming uses Power Strike!
> Deals 30 damage to xiaohua!
> xiaohua HP: 100 -> 70
> xiaohua uses Fireball!
> Deals 28 magic damage to xiaoming!
> xiaoming HP: 150 -> 122
========================================
6.4 战斗结束
战斗结束条件:
- 任意一方HP降至0
- 玩家逃跑
- 连接断开
胜利显示:
========================================
Victory!
========================================
You defeated xiaohua!
Rewards:
- Experience: +50 XP
- Level Up! (Lv.1 -> Lv.2)
========================================
失败显示:
========================================
Defeat...
========================================
You were defeated by xiaohua.
Better luck next time!
========================================
7. 战斗策略建议
战士策略:
- 开局: 使用防御姿态提升防御
- 中期: 积累能量后使用强力打击
- 残血: 优先普通攻击保持输出
- 对法师: 利用高防御抗魔法,近身输出
法师策略:
- 开局: 火球术快速压血
- 中期: 使用奥术护盾减伤
- 残血: 治疗术回血,拉扯战线
- 对战士: 保持距离,魔法风筝
8. 高级功能
8.1 查看战斗历史
战斗房间使用 HistoryLog<string> 记录所有战斗日志:
- 每回合的行动
- 伤害计算
- 状态变化
- 胜负结果
8.2 多人同时在线
- 服务器支持多客户端连接
- 每个客户端独立线程处理
- 使用
std::map管理所有连接 std::mutex保证线程安全
8.3 数据持久化
- 用户账号保存在
data/game.db - 角色数据自动保存
- 重新登录后保留等级和属性
多人游戏示例
场景:三人同时在线
终端1 - 服务器
./build/bin/server
# 保持运行
终端2 - 玩家A (xiaoming)
./build/bin/client
# 登录 -> 创建战士 -> 进入大厅
Select: 1
Enter message: 有人组队吗?
终端3 - 玩家B (xiaohua)
./build/bin/client
# 登录 -> 创建法师 -> 进入大厅
# 看到 xiaoming 的聊天
Select: 3
Enter target: xiaoming
# 邀请战斗
终端4 - 玩家C (xiaogang)
./build/bin/client
# 旁观,或者等战斗结束后挑战胜者
常见问题
Q1: 连接失败怎么办?
检查服务器是否启动:
ps aux | grep server
检查端口是否被占用:
netstat -an | grep 8888
重启服务器:
killall server # 如果有旧进程
./build/bin/server
Q2: 数据库错误?
删除并重新创建:
rm -f data/game.db
./build/bin/server # 自动重建表结构
Q3: 客户端卡住了?
重新连接:
- 按
Ctrl+C退出客户端 - 重新运行
./build/bin/client - 重新登录
Q4: 忘记密码了?
直接修改数据库(开发测试用):
sqlite3 data/game.db
-- 查看所有用户
SELECT * FROM Users;
-- 重置密码 (hash值需要计算)
UPDATE Users SET PasswordHash = '新密码hash' WHERE Username = 'xiaoming';
或者注册新账号。
Q5: 如何在 Windows 上运行?
项目代码支持跨平台,在 Windows 上:
-
使用 Visual Studio:
- 打开 CMake 项目
- 选择 x64-Release 配置
- 生成解决方案
- 运行 server.exe 和 client.exe
-
使用 MinGW:
cmake -B build -G "MinGW Makefiles"
cmake --build build
build\bin\server.exe
技术特性展示
1. 多态 (Polymorphism)
// 战斗中,不同职业使用各自的技能
ICharacter* player = new Warrior();
ISkill* skill = new PowerStrike();
skill->execute(*player, *enemy); // 多态调用
2. 模板与链表 (Templates & Linked List)
// 战斗历史记录
HistoryLog<string> battleLog;
battleLog.append("Round 1: Player attacks!");
battleLog.append("Enemy takes 30 damage");
// 使用手写的 Node<T> 链表存储
3. STL 容器
// 客户端管理
std::map<int, shared_ptr<ClientHandler>> clients;
// 战斗房间管理
std::map<int, shared_ptr<BattleRoom>> rooms;
// 多线程
std::thread clientThread(&ClientHandler::run, handler);
4. 网络编程
// 跨平台 Socket 封装
SocketWrapper socket;
socket.connect("127.0.0.1", 8888);
socket.sendLine("LOGIN|xiaoming|123456");
string response = socket.recvLine();
5. 数据库
// SQLite3 操作
Database db("data/game.db");
db.registerUser("xiaoming", "123456");
db.createCharacter(userId, "Warrior");
6. 线程安全
// 多线程保护
std::mutex m_clientsMutex;
{
std::lock_guard<std::mutex> lock(m_clientsMutex);
m_clients[clientId] = handler;
}
游戏截图示例
玩家A视角:
========================================
[Battle] Round 3
Your HP: 85/150
Enemy HP: 45/100
----------------------------------------
You used: Power Strike
Critical Hit! 45 damage!
Enemy HP: 45 -> 0
========================================
Victory!
========================================
玩家B视角:
========================================
[Battle] Round 3
Your HP: 45/100
Enemy HP: 85/150
----------------------------------------
Enemy used: Power Strike
You took 45 damage!
Your HP: 45 -> 0
========================================
Defeat...
========================================
进阶玩法
1. 练级策略
- 多次战斗积累经验
- 升级提升属性
- 解锁更强技能
2. 战术配合
- 战士吸引火力
- 法师后排输出
- 组队刷怪
3. PvP 竞技
- 排位战
- 天梯系统
- 赛季奖励
4. 数据分析
- 查看战斗日志
- 分析伤害输出
- 优化技能搭配
开发者选项
查看数据库内容
sqlite3 data/game.db
-- 查看所有用户
SELECT * FROM Users;
-- 查看所有角色
SELECT * FROM Characters;
-- 查看特定玩家
SELECT u.Username, c.CharacterName, c.CharacterClass, c.Level
FROM Users u
JOIN Characters c ON u.UserID = c.UserID;
调试模式
编译时启用调试输出:
cmake -B build -DCMAKE_BUILD_TYPE=Debug
cmake --build build
性能测试
同时启动多个客户端:
for i in {1..10}; do
./build/bin/client &
done
项目文件说明
OnlineRpg/
├── build/bin/
│ ├── server # 服务器程序
│ └── client # 客户端程序
├── data/
│ └── game.db # SQLite 数据库(自动创建)
├── include/ # 头文件
├── src/ # 源代码
├── lib/
│ ├── sqlite3.c # SQLite3 amalgamation
│ └── sqlite3.h
├── CMakeLists.txt # CMake 配置
└── 各种文档.md
祝你游戏愉快!
有任何问题欢迎查看源码或提问。项目展示了:
- ✅ 面向对象设计
- ✅ 多态与继承
- ✅ 模板编程
- ✅ STL 容器
- ✅ 网络编程
- ✅ 数据库操作
- ✅ 多线程编程
- ✅ 跨平台开发
享受编程与游戏的乐趣!🎮