当前位置: 首页 > news >正文

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

当我们在自摸杠时,实际上在杠完之后,我们还需要进行一个删除操作。因此,我们需要在上面拷贝一个删除操作。由于这是自摸杠,所以这个地方需要删除四次。在这里,我们需要注意的是,自摸杠时,传过来的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万,这边随便抽一个牌,然后回过来。这面是没有问题的,这面也没有问题。但是,这面我们很明显也看不到,大家都看不到别人的牌,但是你能看到自己的牌。这样处理就对了。虽然前面讲的是暗杠的事情,就是我们自摸的时候,别人不应该看到你到底杠什么。这是因为在我们发的时候,是给所有用户发的,你把他的牌给别人发过去之后,相当于所有人都能看见。但是,如果你不给他发这个牌,他也不知道你杠的是什么,客户端也没法处理。这个地方我们是有这么一个问题,我们把这块逻辑处理一下,这块逻辑就正常了。

相关文章:

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

当我们在自摸杠时,实际上在杠完之后,我们还需要进行一个删除操作。因此,我们需要在上面拷贝一个删除操作。由于这是自摸杠,所以这个地方需要删除四次。在这里,我们需要注意的是,自摸杠时,传过来…...

AI创业风向标:构建下一代「AI叙事创作平台」

随着技术的进步和市场需求的爆发,AI故事叙述平台正成为投资者和创业者关注的焦点。本文将探讨为何这一赛道值得关注,并提供一些关于如何构建成功的AI叙事创作平台的战略建议。 一、为什么这是2025年值得关注的赛道? 1. 底层需求的爆发 人类永恒的故事需求:全球每月有超过…...

拜特科技签约惠生工程,携手打造高效资金管理系统

近日,拜特科技成功签约惠生工程(中国)有限公司(以下简称“惠生工程”)资金管理系统项目。此次双方携手打造一套先进的资金管理系统,为惠生工程的战略发展注入强劲新动力,推动其资金管理迈向更高水平。 惠生工程作为行…...

快瞳宠物肢体关键点检测:让宠物设备更懂“猫言狗语”

在宠物经济高速发展的今天,智能设备已渗透到养宠生活的方方面面。然而,如何让设备真正理解宠物的行为意图?快瞳科技推出的宠物肢体关键点检测技术,通过精准捕捉宠物肢体动作,为智能喂食、健康监测、行为训练等场景提供…...

【安卓】APP生成器v1.0,生成属于你的专属应用

今天作者给大家分享一个超级好用的手机APP。还在为反复搜索常用网站抓狂?今天安利一款颠覆性神器——它能将你所有心头好的网页变成专属按钮,像搭乐高一样DIY你的「软件」,从此告别收藏夹混乱!小说党、资讯控、摸鱼达人集体狂喜&a…...

详细解读react框架中的hooks

React Hooks 是 React 16.8 引入的一项革命性特性,它允许你在函数组件中使用状态(state)和其他 React 特性,而无需编写 class 组件。下面将详细解读 React Hooks 的核心概念、常用 Hooks 及其工作原理。 一、Hooks 的核心概念 1. 什么是 Hooks Hooks …...

机器学习01-支持向量机(SVM)(未完)

参考浙大 胡浩基老师 的课以及以下链接: https://blog.csdn.net/m0_74100344/article/details/139560508 https://blog.csdn.net/2301_78630677/article/details/132657023 https://blog.csdn.net/lsb2002/article/details/131338700 一、一些定义 T是倒置&…...

Java进阶版线程池(超详细 )

线程池 线程池工具类 Executors Executors 是 Java 提供的一个工具类,它包含了多个静态方法,能够方便地创建不同类型的线程池。 newFixedThreadPool 创建一个固定大小的线程池,线程池中的线程数量固定,当有新任务提…...

场外期权只适合上涨行情吗?

场外期权与直接进行期货市场操作相比,场外期权让我们有了更多的选择空间。”目前期权市场有了更多合适的风险管理模式,场外期权衍生品工具与其需求不谋而合,适合做以小博大,做各种对冲大盘下跌风险等等策略,下文为大家…...

echarts图表相关

echarts图表相关 echarts官网折线图实际开发场景一: echarts官网 echarts官网 折线图 实际开发场景一: 只有一条折线,一半实线,一半虚线。 option {tooltip: {trigger: "axis",formatter: (params: any) > {const …...

【操作系统(Linux)】——多线程对共享变量访问的同步与互斥

一、多线程对共享变量的非互斥访问 我们将要做的&#xff1a;构造多线程共享变量竞争的案例&#xff0c;并分析现象发生的原因&#xff0c;进而思考解决方式。 案例源代码&#xff1a; #include <stdio.h> #include <stdlib.h> #include <pthread.h> #inc…...

deeplabv3+街景图片语义分割,无需训练模型,看不懂也没有影响,直接使用,cityscapes数据集_16

目录 1、下载链接1.1、CSDN链接&#xff0c;含权重文件直接使用&#xff0c;建议直接下这个&#xff0c;还不限速。1.2 Github链接&#xff1a; 2、下载代码&#xff0c;下载预训练好的权重3、预测代码4、像素提取&#xff0c;或者说类别提取5、文档部分内容截图6、其他数据处理…...

[前端]从人体结构看网页三要素:HTML、CSS 与 JavaScript

目录 一、HTML:网页的 “骨架” 二、CSS:网页的 “血肉” 三、JavaScript:网页的 “神经系统” 四、三者协同构建精彩网页 在互联网的浩瀚海洋中,网页是我们与世界交互的重要窗口。一个精彩的网页背后,离不开 HTML、CSS 和 JavaScript 这三位 “幕后英雄”。有趣的是,…...

【Leetcode】3375. 使数组的值全部为 K 的最少操作次数

文章目录 题目思路代码复杂度分析时间复杂度空间复杂度 结果总结 题目 题目链接&#x1f517; 给你一个整数数组 nums 和一个整数 k 。 如果一个数组中所有 严格大于 h 的整数值都 相等 &#xff0c;那么我们称整数 h 是 合法的 。 比方说&#xff0c;如果 nums [10, 8, 10…...

封装uniapp request promise化

uniapp request 封装 一、 封装方法1. 使用 promis 封装 request2. 封装 api 在 api.js3.在要请求的页面 调用 api 一、 封装方法 1. 使用 promis 封装 request const BASE_URL 你的url接口 //比如 http://198.12.3.3/pzexport function request(config {}){let {url,dat…...

架构演进成熟度校验体系构建

架构演进成熟度校验体系构建 ——基于电商价格服务Checklist的图形化实践指南 一、成熟度校验全景视图 #mermaid-svg-tXchQ6nY7QzNUrL1 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-tXchQ6nY7QzNUrL1 .error-ico…...

Llama 4全面评测:官方数据亮眼,社区测试显不足之处

引言 2025年4月&#xff0c;Meta正式发布了全新的Llama 4系列模型&#xff0c;这标志着Llama生态系统进入了一个全新的时代。Llama 4不仅是Meta首个原生多模态模型&#xff0c;还采用了混合专家(MoE)架构&#xff0c;并提供了前所未有的上下文长度支持。本文将详细介绍Llama 4…...

kotlin 多个fragment beginTransaction容器添加使用

在Kotlin中如何使用Fragment的beginTransaction来添加多个Fragment到容器中。我需要先回顾一下Fragment的基本用法&#xff0c;然后考虑多个Fragment的情况。 FragmentTransaction的beginTransaction是用来开启一个事务&#xff0c;然后添加、替换或移除Fragment。通常&#x…...

(PTA) L2-011-L2-015

L2-012 关于堆的判断 由于没有得到AC代码&#xff08;1&#xff0c;3测试点错误&#xff09;,这里先不做展示&#xff0c;等后续复盘的时候进行补充。 L2-011 玩转二叉树 给定一棵二叉树的中序遍历和前序遍历&#xff0c;请你先将树做个镜面反转&#xff0c;再输出反转后的层序…...

管理Linux服务器的用户和组

用户/组 命令符会展示当前用户名和主机名 创建用户&#xff0c;同时创建同名组 useradd 用户名 设置密码 passwd 用户名 切换用户登录 su 用户名 删除用户 userdel -r 用户名 记录用户信息的文件 /etc/passwd 记录密码&#xff08;密文&#xff09;信息的文件 /etc/sh…...

奇安信驻场面试题

《网安面试指南》https://mp.weixin.qq.com/s/RIVYDmxI9g_TgGrpbdDKtA?token1860256701&langzh_CN 5000篇网安资料库https://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247486065&idx2&snb30ade8200e842743339d428f414475e&chksmc0e4732df793fa3bf39…...

Testbench设计

一、几个名词&#xff1a; 被仿真的文件叫DUT&#xff08;Design under Test&#xff09; 编写Testbench的目的 验证设计有没问题。 怎么写Testbench&#xff1f; 四、Teshbench各个部分的写法&#xff1a; 外部信号就是外面连接的信号。...

使用IPython有哪些好处?

这里总结了50个使用IPython的好处&#xff0c;大大提升开发效率&#xff01; 什么是IPython&#xff1f;可能很多人已经在用&#xff0c;却不知道它到底是什么。 根据维基百科的解释&#xff1a; IPython是一种基于Python的交互式解释器&#xff0c;提供了强大的编辑和交互功能…...

加油站小程序实战教程10开通会员

目录 1 修改用户登录逻辑2 创建变量3 调用API总结 我们上一篇搭建了开通会员的界面&#xff0c;有了界面的时候就需要加入一些逻辑来控制界面显示。我们的逻辑是当用户打开我的页面的时候&#xff0c;在页面加载完毕后调用API看用户是否已经开通会员了&#xff0c;如果未开通就…...

NO.84十六届蓝桥杯备战|动态规划-路径类DP|矩阵的最小路径和|迷雾森林|过河卒|方格取数(C++)

路径类dp是线性dp的⼀种&#xff0c;它是在⼀个nm的矩阵中设置⼀个⾏⾛规则&#xff0c;研究从起点⾛到终点的⽅案数、最⼩路径和或者最⼤路径和等等的问题 矩阵的最小路径和_牛客题霸_牛客网 状态表⽰&#xff1a; dp[i][j]表⽰&#xff1a;到达[i, j]位置处&#xff0c;最⼩…...

WHAT - React 技术栈常用库/工具

目录 基础类状态管理路由管理UI 组件库开发工具 / 辅助库测试相关表单和数据展示其它实用类代码重构应用迁移&#xff1a;PWA代码组织与架构建议&#xff08;选项&#xff09; 下面是一个 React 技术栈常用库/工具清单&#xff0c;按不同分类整理&#xff0c;涵盖开发、状态管理…...

FreeSWITCH的SIP配置

确认 FreeSWITCH 的 SIP 配置 FreeSWITCH 的 SIP 配置文件通常位于 /usr/local/freeswitch/conf/sip_profiles 目录下。默认情况下&#xff0c;FreeSWITCH 使用 internal.xml 和 external.xml 作为 SIP 配置文件。 查看 internal.xml 配置 编辑 /usr/local/freeswitch/conf/sip…...

Spark核心知识总结

一、Spark运行架构 &#xff08;一&#xff09;整体结构 Spark框架采用标准master - slave结构&#xff0c;Driver为master管理作业任务调度&#xff0c;Executor为slave负责实际执行任务。 &#xff08;二&#xff09;核心组件 1. Driver&#xff1a;执行Spark任务的main方法&…...

第1节:计算机视觉发展简史

计算机视觉与图像分类概述&#xff1a;计算机视觉发展简史 计算机视觉&#xff08;Computer Vision&#xff09;作为人工智能领域的重要分支&#xff0c;是一门研究如何使机器"看"的科学&#xff0c;更具体地说&#xff0c;是指用摄影机和计算机代替人眼对目标进行识…...

2D 与 3D 连线效果全解析 | 从平面到立体

HT 是一个灵活多变的前端组件库&#xff0c;具备丰富的功能和效果&#xff0c;满足多种开发需求。让我们将其效果化整为零&#xff0c;逐一拆解具体案例&#xff0c;帮助你更好地理解其实现方案。 在此篇文章中&#xff0c;让我们一起深入探讨 2D 与 3D 的连线效果是如何实现的…...

Django Cookies 实际项目示例

Django Cookies 实际项目示例 推荐超级课程: 本地离线DeepSeek AI方案部署实战教程【完全版】Docker快速入门到精通Kubernetes入门到大师通关课AWS云服务快速入门实战目录 Django Cookies 实际项目示例介绍什么是 Django Cookies?为什么要关心 Django Cookies?Django Cookie…...

【问题排查】SQLite安装失败

启动 Django 自带的开发服务器 python manage.py runserver出现如下报错&#xff1a; [rootiZ2zedudtf2cwzi9argky2Z myproject]# python manage.py runserver Watching for file changes with StatReloader Performing system checks...System check identified no issues (…...

stream流Collectors.toMap(),key值重复问题

文章目录 一、问题二、问题示例三、原因四、解决方法4.1、方案一 一、问题 发现Collectors.toMap的一个坑&#xff0c;若key值重复的时候会抛异常。如&#xff1a; IllegalStateException: Duplicate key 男 二、问题示例 报错示例如下&#xff1a; import lombok.AllArgsC…...

STM32(基于标准库)

参考博客&#xff1a;江科大STM32笔记 Stm32外设 一、GPIO 基础 GPIO位结构 I/O引脚的保护二极管是对输入电压进行限幅的上面的二极管接VDD, 3.3V,下面接VSS, 0V&#xff0c;当输入电压 >3.3V 那上方这个二极管就会导通&#xff0c;输入电压产生的电流就会大部分充入VD…...

OpenStack Yoga版安装笔记(十八)Self-service networks配置笔记

1、官方文档 在OpenStack官方安装文档中&#xff0c;提供了两个网络配置选项&#xff1a; Option1&#xff1a;Provider networksOption2&#xff1a;Self-service networks 这两个选项并不冲突&#xff0c;可以在OpenStack环境中同时配置。 在《OpenStack Yoga版安装笔记&…...

2025年黑龙江建筑安全员 C3 证考试题库练习题

黑龙江建筑安全员 C3 证考试题库练习题 1、消防控制室是设有火灾自动报警设备和消防设施控制设备&#xff0c;用于接收、显示、处理&#xff08; &#xff09;&#xff0c;控制相关消防设施的专门处所2。 A. 安全信息 B. 设备信息 C. 通讯信号 D. 火灾报警信号 答案&…...

JavaScript数据结构-Map的使用

在 JavaScript 中&#xff0c;Map 是 ES6 引入的一种新的数据结构&#xff0c;它类似于对象&#xff0c;也是键值对的集合&#xff0c;但 Map 的键可以是任意类型的值&#xff08;对象、函数、基本类型等&#xff09;&#xff0c;而传统对象的键只能是字符串或 Symbol&#xff…...

LeetCode面试经典150题

目录 力扣80. 删除有序数组中的重复项 II 代码解析 力扣274. H 指数 代码解析 力扣151. 反转字符串中的单词 解析代码 力扣12. 整数转罗马数字 解析代码 力扣28. 找出字符串中第一个匹配项的下标 解析代码1&#xff08;暴力模拟&#xff09; 解析代码2&#xff08;K…...

mysql之等值连接8个实例

以下实例以常见的业务场景为例&#xff0c;使用 MySQL 语法&#xff0c;假设存在员工表&#xff08;employees&#xff09;、部门表&#xff08;departments&#xff09;、订单表&#xff08;orders&#xff09;、客户表&#xff08;customers&#xff09;等&#xff0c;来展示…...

C基础笔记_指针专题

一:C 和 C 偏爱使用指针的原因 1. 通过指针可以直接操作内存 C 和 C 是系统级编程语言&#xff0c;它们的设计目标之一是允许开发者直接与硬件交互并高效地管理资源。 指针的本质&#xff1a;指针本质上是一个存储内存地址的变量&#xff0c;它让程序员可以直接访问和操作内…...

GPT-SoVITS Windows 配置与推理笔记(自用)

GPT-SoVITS Windows 配置与推理笔记&#xff08;自用&#xff09; 这是给自己留的备份&#xff0c;方便下次查。Windows 端配置和推理为主&#xff0c;代码为核心&#xff0c;直接干货。 环境准备 系统&#xff1a;Windows 10/11Python&#xff1a;3.9&#xff08;别用别的版…...

【设计模式】面向对象开发学习OOPC

PLOOC-裸机思维 PLOOC OOPC精要——撩开“对象”的神秘面纱 C/C面向对象编程之封装-KK 面向过程&#xff0c;本质是“顺序&#xff0c;循环&#xff0c;分支”面向对象&#xff0c;本质是“继承&#xff0c;封装&#xff0c;多态”参考的书籍&#xff1a;《UMLOOPC嵌入式C语言…...

LVGL开发指南

一、主流ARM开发UI界面库 主流ARM开发UI界面库的详细对比分析,从多个维度评估各库的适用场景: 1. 基础对比表 特性LVGLQt for MCUEmbedded WizardTouchGFXemWin许可证MIT开源商业商业商业(STM32免费)商业RAM最小需求16KB512KB64KB256KB50KBFlash占用64KB+1MB+200KB+500KB+1…...

linux shell looop循环写法

在 Linux Shell 中编写loop循环的常见方法有以下几种&#xff0c;适用于持续执行任务或监控场景&#xff1a; 1. while true 循环&#xff08;最常用&#xff09; while true; do# 循环体内的命令echo "Running..."sleep 1 # 避免 CPU 占用过高 done 终止方式&…...

【力扣hot100题】(075)数据流的中位数

一开始只建立了一个优先队列&#xff0c;每次查询中位数时都要遍历一遍于是喜提时间超限&#xff0c;看了答案才恍然大悟原来还有这么聪明的办法。 方法是建立两个优先队列&#xff0c;一个大根堆一个小根堆&#xff0c;大根堆记录较小的数&#xff0c;小根堆记录较大的数。 …...

蓝桥杯刷题总结 + 应赛技巧

当各位小伙伴们看到这篇文章的时候想必蓝桥杯也快开赛了&#xff0c;那么本篇文章博主就来总结一下一些蓝桥杯的应赛技巧&#xff0c;那么依旧先来走个流程 那么接下来我们分成几个板块进行总结 首先是一些基本语法 编程语言的基本语法 首先是数组&#xff0c;在存数据的时候…...

JetBrains Terminal 又发布新架构,Android Studio 将再次迎来新终端

不到一年的时间&#xff0c;JetBrains 又要对 Terminal 「大刀阔斧」&#xff0c;本次发布的新终端是重构后的全新的架构&#xff0c;而上一次终端大调整还是去年 8 月的 v2024.2 版本&#xff0c;并且在「Android Studio Ladybug | 2024.2.1」也被引入。 不知道你们用不用内置…...

怎么构造思维链数据?思维链提示工程的五大原则

我来为您翻译这篇关于思维链提示工程的文章&#xff0c;采用通俗易懂的中文表达&#xff1a; 思维链(CoT)提示工程是生成式AI(GenAI)中一种强大的方法&#xff0c;它能让模型通过逐步推理来解决复杂任务。通过构建引导模型思考过程的提示&#xff0c;思维链能提高输出的准确性…...

mongodb--用户管理

文章目录 MongoDB 用户管理1. 连接到 MongoDB2. 用户创建2.1 创建管理员用户2.2 创建特定数据库用户2.3 常用内置角色 3. 用户管理操作3.1 查看所有用户3.2 查看特定用户信息3.3 更新用户密码3.4 添加用户角色3.5 移除用户角色3.6 删除用户 4. 权限修改4.1 创建自定义角色4.2 将…...

2025年考OCP认证有用吗?

在数字化转型的浪潮中&#xff0c;数据库管理技术成为企业核心竞争力的基石。Oracle作为全球领先的数据库解决方案提供商&#xff0c;其OCP&#xff08;Oracle Certified Professional&#xff09;认证不仅是技术能力的权威背书&#xff0c;更是职业发展的强力引擎。以下从多个…...