golang 斗地主

dwg255 · · 2298 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

项目地址: **[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. ---

有疑问加站长微信联系(非本文作者))

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

2298 次点击  ∙  1 赞  
加入收藏 微博
被以下专栏收入,发现更多相似内容
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传