项目地址:
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 w