2016-07-11 2 views
-3

Привет, я сделал игру в кости. Все работает отлично, за исключением метода выигрыша/проигрыша игры. Я не уверен, что я делаю неправильно, но всякий раз, когда я бросить кости он просто продолжает говорить «Ролл снова» Даже если сумма в кости не является 0.Dice Проблемы с игрой

 private void RollDice(out int die1, out int die2) 
    { 
     die1 = 0; 
     die2 = 0; 


     Random rand = new Random(); 

     die1 = 1 + rand.Next(6); 
     die2 = 1 + rand.Next(6); 
     return; 
    } 



    private int UpdateGameStatus(int sumDice) 
    { 
     int die1 = 0, die2 = 0; 
     int sum = die1 + die2; 
     if (sumDice == 8) 
      lblSum.Text = ("You lose!"); 
     if (sumDice == 4) 
      lblSum.Text = ("You lose!"); 
     if (sumDice == 11) 
      lblSum.Text = ("You lose!"); 
     if (sumDice == 9) 
      lblSum.Text = ("You win!"); 
     if (sumDice == 13) 
      lblSum.Text = ("You win!"); 
     if (sumDice == 0) 
      lblSum.Text = ("Roll again!"); 
     return sum; 

    } 
    private void btnRoll_Click(object sender, EventArgs e) 
    { 

     int die1 = 0, int die2 = 0 
     RollDice(out die1, out die2); 
     UpdateGameStatus(sumDice); 
+0

Пожалуйста, не изменяйте свой вопрос, чтобы удалить его. Мы не высмеиваем вас, мы просто указываем факты. Ошибки или проблемы есть нечего стыдиться. В какой-то момент мы все должны были учиться. Просто взгляните на приведенные ниже ответы, они помогут вам исправить ваш код, позволяя продолжить. – TimothyP

ответ

1

присваивается значение sumDice с 0 перед вызовом RollDice. Перемещение int sumDice = die1 + die2 после RollDice функции:

private void btnRoll_Click(object sender, EventArgs e) 
{ 
    int die1 = 0; 
    int die2 = 0; 
    RollDice(out die1, out die2); 
    int sumDice = die1 + die2; 
    UpdateLabel(die1, die2); 
    UpdatePictureBoxes(die1, die2); 
    UpdateGameStatus(sumDice); 
} 
0
int die1 = 0; 
    int die2 = 0; 
    RollDice(out die1, out die2); 
    int sumDice = die1 + die2; //needs to be moved one down 
    UpdateLabel(die1, die2); 
    UpdatePictureBoxes(die1, die2); 
    UpdateGameStatus(sumDice); 
+1

Пока он говорит 'sum = die1 + die2', он игнорирует значение, пока не вернет его. Код довольно плох, но это не причина его проблемы. – TimothyP

+0

Почему downvote? Это законный ответ ... –

+1

Не я, я проголосую, чтобы он добрался до 0 – TimothyP

0

ли это. Он должен работать. Попробуйте прочитать свой код и убедитесь, что нет логических проблем, прежде чем публиковать его здесь. Это была простая логическая ошибка.

private void btnRoll_Click(object sender, EventArgs e) 
{ 
    int die1 = 0; 
    int die2 = 0; 
    RollDice(out die1, out die2); 
    UpdateLabel(die1, die2); 
    UpdatePictureBoxes(die1, die2); 
    int sumDice = die1 + die2; 
    UpdateGameStatus(sumDice); 
} 
Смежные вопросы