用户玩快游戏时如何确定谁是第一个玩家?

2024-01-08

我正在使用以下代码onRoomConnected(int statusCode, Room room)用于决定谁是第一名玩家。但有时我会为两名球员获得相同的第一/第二。如何解决此错误。

        if (quickGame) {
            myTurn = room.getParticipants().get(0).getParticipantId().equals(myId);
        } else {
            myTurn = room.getCreatorId().equals(myId);
        }
        if (myTurn) {
            Log.e(TAG, "First Player");
            status.setText("Click a button to start");
        } else {
            Log.e(TAG, "Second Player");
            status.setText("Wait for opponent to start");
        }

保证房间里的每个人的参与者 ID 集都相同(但不同比赛之间不同)。然而,他们的order不保证列表中的内容。因此,如果您想进行简单的选择(例如确定谁先行等),您必须依赖参与者 ID 集,但不能依赖顺序。实现这一目标的一些方法是:

  1. 按字母顺序排列在前的参与者 ID 是第一个参与游戏的玩家
  2. 按字母顺序排列在前的参与者 ID 负责随机选择一名玩家先开始。其他客户端将等待,直到参与者发送包含所选参与者 ID 的可靠实时消息。

方法(2)是首选,因为它不包含可能的偏差。

为什么?虽然我们没有指定参与者 ID 的结构(它只是一个字符串),但事实是它确实对信息进行编码,因此如果您使用参与者 ID 作为规则,最终可能会得到一个奇怪的参与者分布首先。例如,您可能会发现某个特定玩家总是先行,但这是因为,巧合的是,他们的参与者 ID 的生成方式总是会发生这种情况。因此,使用参与者 ID 来选择谁是参与者绝对是一个更好的主意权威随机决定谁先走,而不是谁先走actually首先。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用户玩快游戏时如何确定谁是第一个玩家? 的相关文章

随机推荐

  • Pandas 自定义函数来查找是否是第一、第二等星期一、星期二等 - 欢迎所有建议

    所以我有以下代码 它读取 5 列 日期 ohlc 然后 它创建一个列 dow 来保存星期几 到目前为止 一切都很好 import numpy as np import pandas as pd df pd read csv content
  • 错误(10028):无法解析网络的多个常量驱动程序... VHDL 错误

    我正在尝试编写一个代码来检测 din 信号的上升沿 并在发生后将 doout 提高 5 个时钟周期 我在编译时不断收到不同的错误 但我不确定它们的含义 我认为我对 VHDL 中的一些概念缺乏基本的了解 但遗憾的是在网上查找并没有给我带来太大
  • 找到章节的最大深度

    每个人 在这种情况下 我想计算章节的最大深度 例如 一本没有章节的书的高度为 0 一本书只有章节没有章节 高度应该为1 以下是xml
  • 无法使用mysql中的数据库(未知数据库)

    我正在尝试开始使用以下 github 包 py gameday https github com wellsoliver py gameday 我安装了 mysqlbrew mysql并创建了 root 密码 gt mysqladmin u
  • 使用opencv,如何去除透明图像中的非对象?

    我是图像处理方面的新手 我正在尝试调整透明图像中绑定对象的矩形 框架的大小 但我不知道怎么做 请帮我 非常感谢 P s 它不会与作物重复 在裁剪中 您修复了一个元组 从 x y w h 裁剪 但在我的照片中 我不知道在哪里裁剪 我们需要首先
  • 跳过foreach淘汰赛js数组中的项目?

    我有一个关于淘汰赛 js 中的 foreach 和第一项的问题 我想跳过第一个并迭代下一个项目 主要问题是我想做这样的事情 div div div div div div 我不认为 knockoutJS 提供了跳过数组中特定元素的功能 但您
  • 在PYTHON中将列表打印到不带[括号]的txt文件

    我正在尝试获取姓名列表 按字母顺序排列并将它们打印到新列表中 这是我的代码 names newnames with open C names txt r as infile for row in infile readlines name
  • 为什么C中的const指针可以修改?

    今天我尝试使用const标识符 但我发现const变量仍然可以修改 这让我很困惑 以下是代码 在compare const void a const void b 函数中 我尝试修改该值a指向 include
  • TSQL 四舍五入到小数点后半位

    我想四舍五入到最接近的半个小数 地理坐标 以进行一些数据可视化 在 t sql 中 是否有一个内置函数可以四舍五入到小数点后一半 如果是这个术语 期望结果的示例 1 1 gt 1 0 1 4 gt 1 5 1 6 gt 1 5 1 9 gt
  • 第二次打开时进度条没有重置为“0”

    在 Android 应用程序中 我在单独的线程中运行任务 当线程运行时 它会更新主窗口中的进度条 让用户知道发生了什么 问题是 如果用户第二次启动线程 进度条将不会重置 它只会保持 100 状态而不执行任何操作 整个源码是可以在 githu
  • Hoxton.SR6 与 Spring Boot 2.3.0 导致奇怪的内容类型问题

    当我将 Spring Boot 2 3 0 RELEASE 应用程序从 Hoxton SR4 更新到 Hoxton SR6 唯一的更改 时 我开始面临来自各个端点的内容类型的奇怪问题 例如 对于 Hoxton SR4 任何未经授权的端点都会
  • 在两个视图之间传递数据

    我想在 watchOS 6 上创建一个安静的简单应用程序 但是在 Apple 更改了 Xcode 11 beta 5 中的 ObjectBindig 后 我的应用程序不再运行 我只是想在两个视图之间同步数据 所以我用新的 Published
  • 使用 Google Translate API 翻译时排除 HTML 标签

    目前我知道 span class e notranslate span 用于省略要在跨度之间翻译的文本 我正在寻找将带有 HTML 标签的内容发送到 Translate API 并让它返回而不翻译标签 无论如何 在翻译之前是否可以省略标签
  • Spring Social - Facebook 登录出现 404 错误

    我的应用程序中有 spring 3 1 和 spring security 登录 我正在尝试使用 Spring Social 添加 facebook 登录 它会转到 facebook 登录页面 但登录后会抛出 404 错误 我在网址中有这个
  • 如何禁用 DataTables/TableTools 按钮

    我正在使用 DataTable 1 10 和 TableTools 2 2 1 鉴于以下内容 我想禁用 启用编辑按钮 var myTable myTable DataTable tableTools aButtons sExtends te
  • “$container.imagesLoaded 不是函数”错误

    所以 我得到 container imagesLoaded is not a function error 这是位于标题中的代码 function root undefined function use strict var contain
  • 使用WELL512获取一定范围内的随机实数

    我正在使用中描述的 WELL512 伪随机数生成器函数这张纸 http www lomont org Math Papers 2008 Lomont PRNG 2008 pdf 该函数返回一个随机数unsigned long value 如
  • Rails 迁移:消除约束

    我在 Rails 应用程序中有一个表 在 schema rb 中 如下所示 create table users force gt true do t t string name null gt false t string address
  • 如何在ffmpeg中连接具有不同属性的视频?

    我正在尝试合并一些视频 但出现时间戳错误 我试图使它们具有相同的尺寸 帧速率 采样率 并且在没有音轨时添加音轨 ffmpeg i input1 mp4 y i audio1 mp3 c v copy c a aac shortest out
  • 用户玩快游戏时如何确定谁是第一个玩家?

    我正在使用以下代码onRoomConnected int statusCode Room room 用于决定谁是第一名玩家 但有时我会为两名球员获得相同的第一 第二 如何解决此错误 if quickGame myTurn room getP