0

ターン制のゲームでは、前のプレイヤーを探したいです。次のプレーヤーを見つけるには、次のように入力します。

int lastPlayer = match.currentPlayer - 1;

問題は、currentPlayerがプレーヤー1の場合です。その後、lastPlayerが0になりますが、これは誤りです。player6である必要があります。

これを修正するには、次のようにします。

    int lastPlayer = match.currentPlayer - 1;

    if (lastPlayer == 0)
        lastPlayer = match.numberOfPlayers;

私の質問は、これをよりクリーンな方法で書く方法です。私はゲームセンターを知っています、ターンベースのコードは次のようなことをします:

    (currentIndex + 1) % match.participants.count];

同じことをするようにコードを書き直すにはどうすればよいですか?

前もって感謝します

4

2 に答える 2

3

どのようにそのことについて?

int lastPlayer = match.currentPlayer > 1 ? match.currentPlayer - 1 : match.numberOfPlayers;
于 2012-08-15T09:25:47.800 に答える
1

あなたがこのようなターンカウンターを持っている場合:

for(int i=0;i< maxTurns;i++){//do something}

そして、player1は1番目のターンを再生し、player2は2番目のターンを再生し、以下同様に、gamecenterで行われたのとまったく同じように現在のプレーヤー数を取得できます。

モジュロ"%"演算子がわからない場合は、たとえば、除算の残りの部分を返します。

3%2 = 1

あなたのターンカウンターはカウントアップを続けるので、次のプレーヤーは

(turncounter + 1)%match.numberOfPlayer

この場合、モジュロ演算子は、カウンターが最大プレーヤー数に達したときにカウンターを「リセット」します(ラウンド6で、5人のプレーヤーが6%5 = 1です)。

要約すると、currentPlayerはturncounter%match.numberOfPlayer

nextPlayerは++turncounter%match.numberOfPlayer

于 2012-08-15T09:30:31.883 に答える