2017-02-23 2 views
0

私はターンベースのマルチプレイヤーゲームでアンドロイドクイズアプリを実装しました。奇妙な動作は、プレイヤー1が自動選択マッチを作成してプレイするときです。テストするデバイスが2つしかないので、このゲームはplayer2という他のプレイヤーに送信されることはありません。今、私は、player2に到達したことのない対戦相手がゲームを待っているのを見ることができます。今度は、player2から自動試合を送信し、この試合は、player1に送られた試合を置き換えることによって、player1に送られ、それはplayer1で自分の番になり、彼は通常通りそれをプレイすることができます。この問題を解決するには?奇妙な振る舞いを自動選択するターンベースの一致

@Override 
public void onActivityResult(int request, int response, Intent data) { 
    super.onActivityResult(request, response, data); 
    dismissSpinner(); 
    if (request == RC_LOOK_AT_MATCHES) { 
     // Returning from the 'Select Match' dialog 
     if (response != Activity.RESULT_OK) { 
      // user canceled 
      return; 
     } 
     TurnBasedMatch match = data 
       .getParcelableExtra(Multiplayer.EXTRA_TURN_BASED_MATCH); 

     if (match != null) { 
      //update match here 
      updateMatch(match); //Pls ignore this nothing happen here, still under development 
     } else { 
      // Toast.makeText(getApplicationContext(), "finish", Toast.LENGTH_LONG).show(); 
     } 
    } else if (request == RC_SELECT_PLAYERS) { 
     // Returned from 'Select players to Invite' dialog 
     if (response != Activity.RESULT_OK) { 
      // user canceled 
     } 
     else{ 
      startNewMatchWithIntent(data); 
     } 

    } 
} 

private void startNewMatchWithIntent(Intent intent) 
{ 
    // Log.d("activityResult", "ResultOK"); 
    // get the invitee list 
    final ArrayList<String> invitees = intent 
      .getStringArrayListExtra(Games.EXTRA_PLAYER_IDS); 
    // get automatch criteria 
    Bundle autoMatchCriteria = null; 

    int minAutoMatchPlayers = intent.getIntExtra(
      Multiplayer.EXTRA_MIN_AUTOMATCH_PLAYERS, 0); 
    int maxAutoMatchPlayers = intent.getIntExtra(
      Multiplayer.EXTRA_MAX_AUTOMATCH_PLAYERS, 0); 


    if (minAutoMatchPlayers > 0) { 
     autoMatchCriteria = RoomConfig.createAutoMatchCriteria(
       minAutoMatchPlayers, maxAutoMatchPlayers, 0); 
    } else { 
     autoMatchCriteria = null; 
    } 


    TurnBasedMatchConfig tbmc = TurnBasedMatchConfig.builder() 
      .addInvitedPlayers(invitees) 
      .setAutoMatchCriteria(autoMatchCriteria).build(); 

    // Start the match 
    Games.TurnBasedMultiplayer.createMatch(mGoogleApiClient, tbmc).setResultCallback(
      new ResultCallback<TurnBasedMultiplayer.InitiateMatchResult>() { 

       @Override 
       public void onResult(@NonNull TurnBasedMultiplayer.InitiateMatchResult result) { 
        dismissSpinner(); 
        processResult(result); 
        Log.d(TAG, "create match :" + String.valueOf(result.getMatch().getDescriptionParticipant())); 
       } 
      }); 
    showSpinner(); 
} 
+0

コードを見ずにこの質問に答えることは不可能です。 http://stackoverflow.com/help/mcve –

+0

コードブロックを追加してご覧ください。見てください。 –

答えて

0

あなたはしていない場合、あなたはそれはまたturn-based multiplayer game conceptsを見直すことが示唆された前記最初の訪問Adding Turn-based Multiplayer Support to Your Android Gameにしたいことがあります。

列挙として、あなたはターンベースのマルチプレイヤーゲームをコーディングを開始する前に:

  • は、Google Playデベロッパーコンソールにゲームのためにenable turn-based multiplayer supportに確認してください。
  • Android samples pageのターンベースのマルチプレイヤーゲームコードサンプルをダウンロードして確認してください。
  • Quality Checklistに記載されている推奨事項を熟知してください。

プレーヤーがサインインされ、GoogleApiClientが接続されると、ゲームはマルチプレーヤーAPIを使用して開始できます。