# summer-go **Repository Path**: mkbkwxdx/summer-go ## Basic Information - **Project Name**: summer-go - **Description**: # 斗地主游戏 (Go语言实现) 一个使用 Go 语言开发的多人在线斗地主游戏,支持 WebSocket 实时通信和跨平台部署。 - **Primary Language**: Go - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 2 - **Created**: 2026-01-29 - **Last Updated**: 2026-05-14 ## Categories & Tags **Categories**: games **Tags**: None ## README # 斗地主游戏 (Go语言实现) 一个使用 Go 语言开发的多人在线斗地主游戏,支持 WebSocket 实时通信和跨平台部署。 ## 🎯 项目特点 - **实时对战**:基于 WebSocket 的实时多人游戏 - **跨平台支持**:支持 Windows、Linux、macOS 多个平台 - **多架构兼容**:支持 x86、x64、ARM64 多种 CPU 架构 - **命令行界面**:简洁直观的终端游戏体验 - **完整游戏逻辑**:包含发牌、叫地主、出牌等完整斗地主规则 ## 📁 项目结构 ``` summer-go/ ├── bin/ # 编译输出目录 │ ├── server-macOS-x64 # macOS Intel 64位服务端 │ ├── server-macOS-ARM64 # macOS Apple Silicon 服务端 │ ├── server-Linux-x64 # Linux 64位服务端 │ ├── server-Windows-x64.exe # Windows 64位服务端 │ └── ... # 其他平台版本 ├── cmd/ # 主程序入口 │ ├── client/ # 客户端主程序 │ └── server/ # 服务端主程序 ├── client/ # 客户端代码 │ ├── cli/ # 命令行界面 │ ├── game/ # 游戏状态管理 │ └── network/ # 网络通信 ├── server/ # 服务端代码 │ ├── api/ # HTTP API 接口 │ ├── game/ # 游戏逻辑 │ └── websocket/ # WebSocket 通信 ├── pkg/ # 公共包 │ ├── game/ # 游戏核心逻辑 │ └── protocol/ # 通信协议 ├── learning/ # Go语言学习案例 └── build.sh # 跨平台编译脚本 ``` ## 🚀 快速开始 ### 1. 编译项目 ```bash # 编译所有平台版本 ./build.sh # 查看生成的可执行文件 ls -la bin/ ``` ``` 服务端: server-macOS-x64 (Mac Intel 64位) server-macOS-ARM64 (Mac Apple Silicon) server-Linux-x64 (Linux 64位) server-Linux-x86 (Linux 32位) server-Linux-ARM64 (Linux ARM 64位) server-Windows-x64.exe (Windows 64位) server-Windows-x86.exe (Windows 32位) server-Windows-ARM64.exe (Windows ARM 64位) 客户端: client-macOS-x64 (Mac Intel 64位) client-macOS-ARM64 (Mac Apple Silicon) client-Linux-x64 (Linux 64位) client-Linux-x86 (Linux 32位) client-Linux-ARM64 (Linux ARM 64位) client-Windows-x64.exe (Windows 64位) client-Windows-x86.exe (Windows 32位) client-Windows-ARM64.exe (Windows ARM 64位) ``` ### 2. 启动服务端 ```bash # macOS/Linux ./bin/server-macOS-x64 -port 8080 # Windows bin\server-Windows-x64.exe -port 8080 ``` ### 3. 启动客户端 打开新的终端窗口: ```bash # macOS/Linux ./bin/client-macOS-x64 -server localhost:8080 # Windows bin\client-Windows-x64.exe -server localhost:8080 ``` ## 🎮 游戏玩法 ### 基本规则 - 3人斗地主,使用一副54张牌(含大小王) - 每人初始手牌17张,底牌3张 - 通过叫地主确定地主和农民身份 - 地主先出牌,按顺时针方向轮流出手 - 最先出完手牌的一方获胜 ### 操作说明 - **叫地主阶段**:输入 `y` 叫地主,`n` 不叫 - **出牌阶段**:输入牌的编号(如 `1 2 3`),输入 `p` 过牌 - **牌型支持**:单张、对子、三张、顺子、连对、飞机等多种牌型 ## 🔧 开发指南 ### 技术栈 - **语言**:Go 1.21+ - **网络**:WebSocket (gorilla/websocket) - **Web框架**:Gin - **并发**:Goroutine + Channel ### 代码结构说明 #### 客户端 (client/) - `cli/` - 命令行界面渲染和用户输入处理 - `game/` - 客户端游戏状态管理和同步 - `network/` - WebSocket 客户端通信实现 #### 服务端 (server/) - `api/` - HTTP RESTful API 接口 - `game/` - 核心游戏逻辑和房间管理 - `websocket/` - WebSocket 连接和消息处理 #### 公共包 (pkg/) - `game/` - 牌型识别、牌组操作等核心算法 - `protocol/` - 客户端-服务端通信协议定义 ### 编译说明 使用 `build.sh` 脚本可以一键编译所有平台版本: ```bash ./build.sh ``` 生成的文件命名规则:`{程序名}-{平台}-{架构}[.exe]` 支持的平台/架构组合: - **macOS**: x64 (Intel), ARM64 (Apple Silicon) - **Linux**: x86 (32位), x64 (64位), ARM64 - **Windows**: x86 (32位), x64 (64位), ARM64 ## 📚 学习资源 项目包含完整的 Go 语言学习案例,在 `learning/` 目录下: ```bash cd learning/ ./run.sh # 运行所有学习案例 ``` ## 🤝 贡献指南 欢迎提交 Issue 和 Pull Request! ### 开发环境设置 1. 安装 Go 1.21 或更高版本 2. 克隆项目仓库 3. 运行 `go mod tidy` 安装依赖 4. 使用 `go run cmd/server/main.go` 启动服务端进行开发测试 ## 📄 许可证 MIT License ## 🙏 致谢 - 感谢 Go 社区提供的优秀工具和库 - 感谢所有贡献者的努力和支持