Skip to content

🎮 TronGame 是一款基于终端的多人实时对战游戏,灵感来自经典的 Tron 。无需图形化界面,在命令行环境中即可游玩

License

Notifications You must be signed in to change notification settings

EdGrass/TronGame

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TronGame with C++


TronGame 是一款基于终端的 多人实时游戏,灵感来源于经典游戏 "Tron"。玩家通过键盘输入控制光球的移动,游戏通过文本界面展示,而无需图形用户界面,因此可以在 命令行 环境下运行。游戏支持 实时多人互动,玩家通过网络连接参与。每个玩家控制一个光球,移动时会留下光轨,撞到其他玩家的光轨则被淘汰。玩家的目标是生存并尽可能长时间地避免撞到障碍物或其他玩家的光轨。

游戏项目包括 服务器客户端 部分,提供了完整的多人对战体验。


🚀 功能亮点

  • 🎮 多人游戏:支持多名玩家同时在线游玩。
  • 💡 光轨机制:玩家控制光球移动,留下一条光轨,其他玩家撞到光轨即被淘汰。
  • 🏆 得分系统:玩家根据存活时间和淘汰其他玩家获得积分。
  • 👥 玩家管理:每个玩家有独立的颜色、分数和最高分等信息。
  • 🔄 实时更新:游戏状态实时更新并通过网络同步到所有连接的客户端。
  • 🖥️ 服务器端:提供游戏逻辑、玩家连接和管理功能。

🛠️ 环境要求

  • 操作系统:macOS 和 Unix/Linux(支持)。
  • 编译器:使用 g++ 编译器,支持 C++11 标准。
  • 依赖库
    • <sys/socket.h>:网络通信。
    • <fcntl.h>:控制非阻塞套接字。
    • <termios.h>:终端输入处理。
    • <unistd.h>:文件描述符操作。
    • <sys/select.h>:多路复用 I/O 操作(监控多个文件描述符)。
    • <unistd.h>:系统级操作(read()write()close() 等)。

⚙️ 配置

  1. 配置服务器 IP 地址和端口号
    config.h 文件中,设置服务器的 IP 地址和端口号:

    #define SERVER_IP "127.0.0.1"  // 服务器 IP 地址
    #define SERVER_PORT 8080      // 服务器端口
  2. 配置其他参数
    你可以调整游戏设置,如最大玩家数量、游戏棋盘的宽度和高度、游戏速度等。


💻 编译与构建

  1. 进入项目目录,运行以下命令进行编译:

    make

🎮 游戏运行

1. 启动服务器

在服务器机器上,运行以下命令启动服务器:

./server

2. 启动客户端

在客户端机器上,运行以下命令启动客户端:

./client

客户端将连接到指定的服务器,玩家可以控制光球并与其他玩家竞赛。


🕹️ 游戏控制

  • "WSAD" 键:控制光球的移动方向。
  • 'Q' 键:退出游戏。

📂 项目结构

项目结构如下:

.
├── client.cpp             # 客户端实现
├── server.cpp             # 服务器实现
├── config.h               # 配置文件(包含 IP、端口等配置)
├── Makefile               # 构建文件(可选)
└── README.md              # 项目文档

📄 许可证

本项目采用 MIT 许可证。查看 LICENSE 文件了解更多详细信息。

License: MIT


💬 反馈与贡献

如果你在使用过程中遇到任何问题,或者有好的改进建议,请随时通过 GitHub Issues 提交反馈,或创建 Pull Request 为项目贡献代码!


🙏 致谢

特别感谢 Zach Latta 提供的灵感,来自 sshtron 的设计。


About

🎮 TronGame 是一款基于终端的多人实时对战游戏,灵感来自经典的 Tron 。无需图形化界面,在命令行环境中即可游玩

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published