Ulr*_*ler 8 android google-play-games
我有一款适用于Android的基于回合的多人游戏,以前一直在使用XMPP,我想切换到Google Play游戏服务.在旧版本中,有一个XMPP机器人,决定哪个玩家将是玩家1或2.重要的是要知道哪个玩家应该进行第一步.
通过Google Play游戏服务,我找到了一个几乎可行的解决方案:
@Override
public void onRoomConnected(int statusCode, Room room) {
ArrayList<Participant> participants = room.getParticipants();
Participant first = participants.get(0);
if (first.getPlayer() == null || !first.getPlayer().getPlayerId().equals(myPlayerId)) {
LaskaField.HUMAN_PLAYER = 2;
LaskaField.OTHER_PLAYER = 1;
opponent = first.getDisplayName();
} else {
LaskaField.HUMAN_PLAYER = 1;
LaskaField.OTHER_PLAYER = 2;
opponent = participants.get(1).getDisplayName();
}
setPlayerNames();
}
Run Code Online (Sandbox Code Playgroud)
这种方式在邀请其他玩家时效果很好.但是,当两个玩家都选择自动匹配时,它经常会失败.在这种情况下,两个玩家在参与者ArrayList中处于相同位置.因此,它们将在其当前使用的设备上显示为相同的播放器.
选择玩家1和2的正确方法是什么,没有用于决定这一点的中心实例.参与者列表中是否有任何有用的数据,我没有找到调试器?
我通过比较玩家ID(每个游戏随机)来解决问题:
String myid = mActiveRoom.getParticipantId(client.getCurrentPlayerId());
String remoteId = null;
ArrayList<String> ids = mActiveRoom.getParticipantIds();
for(int i=0; i<ids.size(); i++)
{
String test = ids.get(i);
if( !test.equals(myid) )
{
remoteId = test;
break;
}
}
boolean iMakeTheFirstMove = ( myid.compareTo(remoteId) > 0 );
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1457 次 |
| 最近记录: |