2017-11-10 12 views
-3

私はC#XNAで「シンプルなゲーム」を作っています。ロールボタンと2人のプレイヤーがいます。
私がしたいのは、そのロールボタンを押すたびに、生成された番号が6になり、同じプレイヤーが再びロールバックできることです。私はすべてのループとif-else文を試しました。XNA - ダイスプレイヤーが数字をロールしたかどうかを確認する

public void DiceCheck() 
    { 
     if (randomNum == 6) 
     { 
      if (playerTurn) //Intial value of bool playerTurn is equal to true: Which means player 1 turn 
      { 
       playerTurn = true; //Allow player 1 to roll again 
      } 

      else if (playerTurn == false) // Player 2 turn 
      { 
       playerTurn = false; //Allow player 2 to roll again 
      } 
     } 
    } 

私も何かを持っているのには、私はそれがロール番号にプレイヤーが6取得するたびに、私はそれをしたいの2を追加し、両方のプレーヤーのためにそれを挿入プレイヤーが

player2turn++; 
player1turn++; 

をロールするたびに追加されます6を生成するには、プレーヤーが再びロールバックするようにします。しかし、それは私が望むように動作しません。

+0

追加したコードはあまり役に立ちません。 [How to Ask](https://stackoverflow.com/questions/how-to-ask)、[最小限で完全で検証可能なサンプルの作成方法](https://stackoverflow.com/help/mcve)をお読みください。 )、特に[なぜ誰かが私を助けることができますか?実際の質問ではありませんか?](http://meta.stackoverflow.com/q/284236)を参照してください。 – wp78de

+0

1.あなたがフリップしたいrandomNum!= 6の場合、DiceCheckがElseを持つと予想していたようです。すなわち、 playerTurn =!playerTurn; 2.ここに欠けているコードがあります。これはおそらくロジックが欠けている "ゲームループ"ですが、リストにないので何が問題なのかは明確ではありません。 – theoretical

+0

@theoreticalあなたは私にあなたが意味するものの例を示すことができます。私はかなりあなたの言うことを理解していません – TaricDF

答えて

1
public void GameLoop(Random dice) 
{ 
    int randomNum = 0; 
    int turn = 0; 
    while(true) 
    { 
     randomNum = dice.Next(1,7); //next turn roll 
     Console.WriteLine(string.Format("Player {0} rolled a {1}", turn%2 + 1, randomNum)); 
     if(!CheckForReroll(randomNum)) // if it's a reroll don't change player's turns 
     { 
      turn++; 
     } 

     if(turn == 10) break; //made up rules to stop at turn 10 so we don't loop infinitely 
    } 
} 

public bool CheckForReroll(int randomNum) 
{ 
    return randomNum == 6; 
} 
+0

大変お世話になりました – TaricDF

関連する問題