项目地址:
**[https://github.com/dwg255/landlord](https://github.com/dwg255/landlord "斗地主")**
说明:go modules管理依赖包,执行编译自动下载依赖;使用sqlite数据库,无需配置;自带无脑出牌AI;服务端经过压力测试,客户端代码来自https://github.com/mailgyc/doudizhu ,原版服务端用python tornado开发。golang开发的服务端编程简单,执行高效,有效利用多核资源,游戏server端为golang典型的应用场景之一。项目大量使用goroutine及channel,命名及注释清晰。
主要依赖包:
- github.com/astaxie/beego 主要用到其logs包,监听http端口及处理请求使用golang自带的包 net/http
- github.com/mattn/go-sqlite3 持久化数据使用了sqlite,省去配置mysql及见表的操作
- github.com/gorilla/websocket websocket连接及收发消息
项目目录说明:
- common 公共包,`*包含全局配置、生成全部牌型的方法、计算牌型以及客户端协议常量*`
- config .go 全局配置
- generate.go 生成json格式所有牌型
- model.go
- poker.go
- protocol.go
- rule.go
- conf 配置文件目录 `*监听的端口、日志级别、日志路径、存储路径等*`
- controllers 控制器目录 `*处理http请求*`
- Index .go
- LogiN.go
- LogoUt.go
- RegiSter.go
- db 数据目录 `*sqlite数据目录*`
- logs 日志文件目录
- main 项目入口 `*初始化配置、启动服务*`
- config.go 初始化全局配置
- init.go
- main.go 启动服务,监听端口
- pid
- roter 路由目录
- router.go
- service 逻辑目录 `*处理开局、出牌、加入机器人、输赢判断等*`
- client.go 处理客户端请求,启动协程处理客户端请求
- request.go
- robot.go 机器人
- room.go 房间
- table.go
- static 静态文件目录
- templates 模板文件目录
- go.mod
- go.sum
- LICENSE
- main.exe windows 64位系统下的可执行文件
- README.MD
- rule.json 生成的所有牌型文件
```go
func init() { //生成pid文件,保存pid
pidFileName := "pid"
fileInfo, err := os.Stat(pidFileName)
if err != nil {
if os.IsNotExist(err) {
err = os.Mkdir(pidFileName, os.ModePerm)
fileInfo, _ = os.Stat(pidFileName)
}
}
if fileInfo.IsDir() {
pid := os.Getpid()
pidFile, err := os.OpenFile(pidFileName+"/landlord.pid", os.O_RDWR|os.O_CREATE, 0766)
if err != nil {
logs.Error("open pidFile [%s] error :%v", pidFileName, err)
return
}
err = pidFile.Truncate(0) //清空数据
_, err = io.WriteString(pidFile, strconv.Itoa(pid))
if err != nil {
logs.Error("write pid error :%v", err)
}
err = pidFile.Close()
if err != nil {
logs.Error("close pid file err: %v", err)
}
} else {
logs.Error("pidFile [%s] is exists and not dir", pidFileName)
}
}
```
*更多代码详见 [GitHub](https://github.com/dwg255/landlord "斗地主") *
-service -room.go 文件内包含压测代码,压测5000个房间CPU平均占有率30%-50%,内存200M左右。
运行步骤:
1.下载源码:
git clone https://github.com/dwg255/landlord.git
2.编译:
cd landlord/main
go build -o ../main.exe
cd ..
main.exe
3.启动:
浏览器访问 http://localhost
4.效果展示:
http://blzz.shop
5.运行截图:
![](https://raw.githubusercontent.com/dwg255/landlord/master/static/1.png)
![](https://raw.githubusercontent.com/dwg255/landlord/master/static/2.png)
![](https://raw.githubusercontent.com/dwg255/landlord/master/static/3.png)
---
License
This project is released under the terms of the MIT license. See [LICENSE](LICENSE) for more
information or see https://opensource.org/licenses/MIT.
---
有疑问加站长微信联系(非本文作者))