一款使用 Java Socket 通信的多人在线迷宫寻宝游戏。
- 🎮 实时多人游戏 - 支持多名玩家同时在线竞技
- 🗺️ 动态迷宫 - 随机生成的迷宫地图,每次游戏体验不同
- 💎 宝藏收集 - 收集金色宝藏获得积分,积分 1-10 分随机
- 🏆 排行榜 - 实时显示所有玩家得分
- 👥 玩家可见 - 在各自地图上可以看见其他玩家的位置
- 🎯 冲突竞争 - 多人同时争夺宝藏,先到先得
./compile.sh./run.sh # 启动 1 个玩家
./run.sh Player1 Player2 # 启动 2 个玩家
./run.sh P1 P2 P3 # 启动 3 个玩家游戏会自动启动服务器和客户端。
- W / ↑ - 向上移动
- A / ← - 向左移动
- S / ↓ - 向下移动
- D / → - 向右移动
- 迷宫由道路 (#)、墙壁 (.) 和宝藏 ($) 组成
- 墙壁无法通过,道路和宝藏可以通行
- 当玩家走到宝藏位置时,自动收集宝藏
- 宝藏被收集后,所有玩家的地图都会更新(宝藏消失)
- 其他玩家的位置会实时显示在地图上
- 游戏结束后,得分最高的玩家获胜
┌─────────────────┐ ┌─────────────────┐
│ TrackerServer │◄─────────►│ MazeGUI │
│ (服务器) │ Socket │ (玩家客户端) │
│ │ │ │
│ - 生成迷宫 │ │ - 显示界面 │
│ - 记录状态 │ │ - 处理输入 │
│ - 广播玩家位置 │ │ - 收集宝藏 │
└─────────────────┘ └─────────────────┘
maze-game/
├── com/maze/
│ ├── common/ # 通用类
│ │ └── MazeMessage.java # 消息格式定义
│ ├── tracker/ # 服务器端
│ │ └── TrackerServer.java # 追踪服务器
│ ├── player/ # 玩家客户端
│ │ └── PlayerClient.java # 玩家客户端
│ └── gui/ # 图形界面
│ └── MazeGUI.java # Swing 界面
├── compile.sh # 编译脚本
├── run.sh # 运行脚本
└── README.md
- Java Socket - 客户端与服务器之间的通信
- Swing - 图形用户界面
- HashMap - 存储玩家位置和分数
- ConcurrentHashMap - 线程安全的服务器端数据存储
| 参数 | 说明 | 默认值 |
|---|---|---|
--port |
服务器端口 | 50051 |
--width |
迷宫宽度 | 20 |
--height |
迷宫高度 | 20 |
| 参数 | 说明 | 默认值 |
|---|---|---|
--host |
服务器地址 | localhost |
--port |
服务器端口 | 50051 |
--name |
玩家名称 | 随机 |
MIT License