2017-11-10 67 views
-3

我在c#XNA中做了一个“简单游戏”。我有一个按钮和两个球员。
我想要发生的是每当你按下那个滚动按钮时,产生的数字等于6,同一个玩家能够再次滚动。我已经尝试了所有形式的循环和if-else语句。XNA - 骰子检查玩家是否卷起了数字6

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 
      } 
     } 
    } 

我也有话要增加每次玩家掷

player2turn++; 
player1turn++; 

时候,我将其插入它的每个球员得到一个6时,我希望它增加了2到轧辊数量双方球员生成6然后让玩家再次点击滚动。但它不按我想要的方式工作。

+0

您添加的代码不是很有帮助。请阅读[如何问](https://stackoverflow.com/questions/how-to-ask),[如何创建一个最小,完整和可验证的示例](https://stackoverflow.com/help/mcve ),特别是[为什么“有人可以帮助我?”不是一个实际的问题?](http://meta.stackoverflow.com/q/284236),然后相应地编辑您的问题。 – wp78de

+0

1.看起来你期望DiceCheck有一个Else,如果randomNum!= 6你想要翻转玩家轮流。即。 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