我正在使用以下代码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");
}
Run Code Online (Sandbox Code Playgroud)
参与者ID的集合保证与房间中的每个人相同(但不是在不同的匹配中).但是,他们在列表中的顺序无法保证.因此,如果您想进行简单的选举(例如,确定谁先行等),您必须依赖于参与者ID的集合,而不是顺序.您可以通过以下方式实现以下目标:
方法(2)是优选的,因为它不包含可能的偏差.
为什么?虽然我们没有指定参与者ID的结构(它只是一个字符串),但事实是它确实对信息进行了编码,因此如果您使用参与者ID作为规则,您可能最终会得到一个奇怪的分布先走了.例如,您可能会发现特定的玩家总是先行,但这是因为,巧合的是,他们的参与者ID是以这种方式生成的.因此,最好使用参与者ID来选择谁是随机决定谁先行的权力,而不是实际上谁先行.
| 归档时间: |
|
| 查看次数: |
1240 次 |
| 最近记录: |