2016-07-11 22 views
-3

Hallo Ich habe ein Würfelspiel gemacht. Alles funktioniert gut außer der Gewinn/Verlust-Methode des Spiels. Ich bin mir nicht sicher, was ich falsch mache, aber wenn ich die Würfel rollen es hält nur „Roll Again“ zu sagen, auch wenn die Summe der Würfel nicht 0.Würfel Spiel Probleme

 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

Bitte bearbeiten Sie Ihre Frage nicht, um sie zu entfernen. Wir machen uns nicht über dich lustig, wir zeigen nur die Fakten. Fehler machen oder Probleme haben ist nichts, wofür man sich schämen müsste. Wir mussten alle irgendwann lernen. Sehen Sie sich die Antworten unten an. Sie sollten Ihnen helfen, Ihren Code zu korrigieren, damit Sie fortfahren können. – TimothyP

Antwort

1

Sie sumDice Wert mit 0 zuweisen, bevor Sie anrufen RollDice. Bewegen Sie int sumDice = die1 + die2 nach RollDice Funktion:

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

Während er 'sum = die1 + die2' sagt, ignoriert er den Wert solange, bis er ihn zurückgibt. Der Code ist ziemlich schlecht, aber es ist nicht die Ursache für sein Problem. – TimothyP

+0

Warum herunterladen? Dies ist eine legale Antwort ... –

+1

Nicht ich, ich stimme es ab, so wird es zu 0 – TimothyP

0

dies tun. Es sollte funktionieren. Versuchen Sie, Ihren Code zu lesen und sicherzustellen, dass es keine logischen Probleme gibt, bevor Sie ihn hier veröffentlichen. Dies war nur ein einfacher logischer Fehler.

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); 
} 
Verwandte Themen