go游戏后端开发32:自摸杠处理逻辑

news2025/4/19 4:18:09

当我们在自摸杠时,实际上在杠完之后,我们还需要进行一个删除操作。因此,我们需要在上面拷贝一个删除操作。由于这是自摸杠,所以这个地方需要删除四次。在这里,我们需要注意的是,自摸杠时,传过来的card是一个空值,相当于暗杠。因为你是自摸的,别人也不知道你到底杠的是什么。如果card有值,那自然就是明杠了。所以,这里card是空的,我们在删除时用它删的话,就是一个空值。因此,我们需要重新拿一个card。我们来拿一个看看,然后用这个card来进行删除操作。

我们进行测试,准备,加入房间,房间号是707646。在测试位置上,我们出五张牌,然后拿一个5。回过来之后,我们随便出一张牌,然后这个地方就过了。接着,我们要杠,杠了之后我们可以看到5万跑这边来了。但是,这个地方我们不能操作,正常情况下,我们在代码里面写的是杠完之后应该能继续操作的。我们来看一下,这个地方报错了,说是越界了。删除就意味着我们的删除代码出错了。在Go语言中,用for循环删除多个元素是有越界风险的。所以,这个地方我们还是采用一种比较古老的方式来处理,给它一个新的part,我们来判断一下,如果我们要删4个,那我们先把这个要删的元素范围确定下来。但是,这里应该是给一个count计数,count等于0。然后,如果count不等于times,我们就继续操作。如果count等于times,我们就把剩下的元素移到新的part里面去。

我们重启之后,开始一个新的游戏,准备,加入房间,房间号是555730。我们准备之后,在测试里面点5万,保证下一个拿到的牌就是5万。回过来之后,我们先过,过了之后我们要杠。杠了之后,我们出牌这个操作是正常的,但是5万还是没有处理掉。我们把这个回过来,这个地方我们把它回过来,我们这个肯定是5万。如果count不等于times,我们就累计一次。累计到4的时候,我们就把剩下的元素移到新的part里面去。看起来应该是没啥问题,我们只能打个断点去测试一下。

我们重启一下,清空数据,进攻,回过来,准备,加入房间,房间号是913164。我们准备之后,测试5万,然后随便抽一个。我们现在要杠,杠了之后,我们在这边打断点。我们拿一个card,现在是one 5,没有问题。我们现在要进行删除,然后进入到删除card的操作。然后,我们继续操作,累计到4的时候,我们把剩下的元素移到新的part里面去。最后,我们把新的card放进去,应该是一二三四五六七八九十,总共10个。这个地方应该是没有问题的。改了之后,我们来看一下,现在我们只有10个牌,应该是没有问题的。

接下来,我们做一个记录,这块没有问题,然后进入到下一个操作,拿牌,把牌append进来,然后是11。这个地方看起来也没有问题,很符合我们的期望。但是,实际上在这个位置上,排队里面还是5万。我们重新加了一下,这个牌换了,这个地方可能是客户端没有处理好。我们在杠的时候,这个地方应该是自摸,我们拿到card后,可以尝试在这个位置上把这个card记录成有card的这种,看看会不会有点不一样。理论上,我们不给他card的话,应该是暗杠。这个地方要么就是我们刚才打断点导致前端没有及时操作的变化,也有可能。我们把这个断点去掉,重新来一遍,不打断点,因为有时候断点会卡住操作,到时候客户端超时之后,可能就来不及做操作了。

我们进入房间,房间号是953988。我们给一个5万,然后回过头来随便来一个。这个是没有问题的,然后我们可以看到5万被处理掉了。这个地方实际上应该是传值的问题,而不是我们打断点的问题。如果没有传值的话,他这个地方就不知道你到底杠的是哪个值。所以,这个地方我们还是需要给他直接传这个card。但是,我们传了card之后,这个操作是告诉所有用户的,这个地方就有问题了。我们应该是在这个位置上操作的,判断一下这个地方,用for循环,i等于0,i小于input,然后count,然后i加加。然后,我们看到i等于user,我们把这个传过来,然后我们给对应的用户传。如果i不等于user,我们在传递的时候就不一样了。这个地方我们再来实验一下。

我们重启之后,再次开启测试。创建房间,准备,房间号是626063。我们准备之后,拿个5万,这边随便抽一个牌,然后回过来。这面是没有问题的,这面也没有问题。但是,这面我们很明显也看不到,大家都看不到别人的牌,但是你能看到自己的牌。这样处理就对了。虽然前面讲的是暗杠的事情,就是我们自摸的时候,别人不应该看到你到底杠什么。这是因为在我们发的时候,是给所有用户发的,你把他的牌给别人发过去之后,相当于所有人都能看见。但是,如果你不给他发这个牌,他也不知道你杠的是什么,客户端也没法处理。这个地方我们是有这么一个问题,我们把这块逻辑处理一下,这块逻辑就正常了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2332828.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

今日行情明日机会——20250411

今天缩量,上方压力依然在,外围还在升级,企稳还需要时日。 2025年4月11日A股涨停主要行业方向分析 一、核心主线方向 芯片(半导体) • 涨停家数:24家(当日最强方向)。 • 驱动逻辑&…

【Linux】TCP_Wrappers+iptables实现堡垒机功能

规划 显示jumpserver的简单功能,大致的网络拓扑图如下 功能规划 & 拓扑结构 JumpServer(堡垒机)主要功能: 对访问目标服务器进行统一入口控制(例如 nginx、mysql、redis)。使用 iptables 做 NAT 转…

ssh 登录报错集合(FQA)

1、使用root登录失败(远程主机不允许root登录) 问题:通过 ssh 连接远程主机( ubuntu )时报错,Permission denied 如下: 解决方法:确认root的登录密码没错,且可以正常与远…

使用Mybatis时在XML中SQL高亮显示的方法

如图所示,上方的SQL代码很像是一个字符串,那么如何把上方的SQL改成和下方一样的SQL,使得IDEA可以识别SQL方言呢? 1.选中SQL中的一部分代码,此时左侧会出现一个黄色的灯泡图案,点击2.选择这个注入语言或者引用

机场跑道异物检测数据集VOC+YOLO格式33793张31类别

数据集分辨率都是300x300,都是贴近地面拍摄,具体看图片 据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):33793 标注数量(xml文件…

掌握C语言文件操作:从理论到实战指南

文件操作是C语言编程中不可或缺的一部分,它使得程序能够持久化存储数据,并在需要时高效读写。本文将从基础概念到实战技巧,系统讲解C语言文件操作的核心知识点,并结合代码示例帮助读者深入理解。 一. 为什么需要文件操作&#xf…

在 Linux 上安装 MongoDB Shell

1. 下载 MongoDB Shell Download | MongoDB wget https://downloads.mongodb.com/compass/mongosh-2.5.0-linux-x64.tgz 2. tar -zxvf mongosh-2.5.0-linux-x64.tgz 3. copy 命令 sudo cp mongosh /usr/local/bin/ sudo cp mongosh_crypt_v1.so /usr/local/lib/ 4. …

数据结构-复杂度详解

前言:大家好!本文带来的是数据结构-复杂度的讲解,一起来看看吧! 1.算法的时间复杂度和空间复杂度 1.1算法的效率 复杂度:衡量一个算法的好坏(效率),从两个维度衡量,时…

安宝特新闻丨Vuzix Core™波导助力AR,视角可调、高效传输,优化开发流程

Vuzix Core™ 光波导技术 近期,Vuzix Core™光波导技术赋能AR新视界!该系列镜片支持定制化宽高比调节及20至40视场角范围,可灵活适配各类显示引擎。通过创新的衍射光波导架构,Vuzix Core™实现了光学传输效率与图像质量的双重突破…

【SQL】常见SQL 行列转换的方法汇总 - 精华版

【SQL】常见SQL 行列转换的方法汇总 - 精华版 一、引言二、SQL常见的行列转换对比1. 行转列 Pivoting1.1 ​​CASE WHEN 聚合函数​​1.2 ​​IF 聚合函数​​1.3 ​​PIVOT操作符​​ 2.列转行 Unpivoting2.1 UNION ALL​​2.2 ​​EXPLODE函数(Hive/Spark&#…

【原创】vue-element-admin-plus完成确认密码功能,并实时获取Form中表单字段中的值

前言 我第一句就想说:vue-element-admin-plus真是个大坑货!就一个确认密码功能都值得我单开一页博客来讲这么一个简单的功能 布局和代码 布局如图所示,我需要密码和确认密码,确认密码需要和密码中的内容一致,不然会返…

MySQL---数据库基础

1.数据库概念 文件保存数据有以下几个缺点: 文件的安全性问题 文件不利于数据查询和管理 文件不利于存储海量数据 文件在程序中控制不方便 数据库存储介质: 1.磁盘 2.内存 为了解决上述问题,设计出更加利于管理数据的东西 —— 数据库。…

leetcode68.左右文本对齐

思路源自 leetcode-字符串篇 68题 文本左右对齐 难度高的模拟类型题目,关键点在于事先知道有多少单词要放在本行并且还要知道本行是不是最后一行(最后一行需要全部单空格右对齐,不是最后一行就空格均摊),非最后一行的空…

若依微服务集成Flowable仿钉钉工作流

项目简介 本项目工作流模块集成在若依项目单独一个模块,可实现单独运行部署, 前端采用微前端,嵌入在若依的前端项目中。因博主是后端开发,对前端不是太属性,没将工作流模块前端代码移到若依前端。下面贴上代码工程结构…

MySQL 架构设计:数据库的“城市规划指南“

就像一座完美城市需要精心的规划才能高效运行,一个优秀的 MySQL 系统也需要精心的架构设计才能支撑业务的发展…让我们一起探索 MySQL 的"城市规划",学习如何设计一个既高效又稳定的数据库王国! 什么是 MySQL 架构设计&#xff1f…

【从0到1学MybatisPlus】MybatisPlus入门

Mybatis-Plus 使用场景 大家在日常开发中应该能发现,单表的CRUD功能代码重复度很高,也没有什么难度。而这部分代码量往往比较大,开发起来比较费时。 因此,目前企业中都会使用一些组件来简化或省略单表的CRUD开发工作。目前在国…

依靠视频设备轨迹回放平台EasyCVR构建视频监控,为幼教连锁园区安全护航

一、项目背景 幼教行业连锁化发展态势越发明显。在此趋势下,幼儿园管理者对于深入了解园内日常教学与生活情况的需求愈发紧迫,将这些数据作为提升管理水平、优化教育服务的重要依据。同时,安装监控系统不仅有效缓解家长对孩子在校安全与生活…

HOW - React Developer Tools 调试器

目录 React Developer Tools使用Components 功能特性1. 查看和编辑 props/state/hooks2. 查找组件3. 检查组件树4. 打印组件信息5. 检查子组件 Profiler 功能特性Commit ChartFlame Chart 火焰图Ranked Chart 排名图 why-did-you-render 参考文档: React调试利器&a…

STM32F103C8T6单片机开发:简单说说单片机的外部GPIO中断(标准库)

目录 前言 如何使用STM32F1系列的标准库完成外部中断的抽象 初始化我们的GPIO为输入的一个模式 初识GPIO复用,开启GPIO的复用功能时钟 GPIO_EXTILineConfig和EXTI_Init配置外部中断参数 插入一个小知识——如何正确的配置结构体? 初始化中断&#…

docker的安装使用0废话版本自学软硬件工程师778天

见字如面, 这里是AIGC创意人_竹相左边 上一篇 因为 自己开发客户系统,为了解决一键启动 前端后端,涉及到了docker-compose 在新的电脑上安装docker 有各种问题这里再次记录下,既是笔记也是分享。 我先用自己的话说一遍&#xff0…