2010-09-16 2 views
6

Я разработал простую карточную игру, в которой отображаются две карты, и пользователь должен сделать ставку на то, получит ли они карту, расположенную между двумя отображаемыми картами. Если пользователь не хочет делать ставки, они просто решают снова. Пользователь начинает с 100 фунтов стерлингов.
Игра прекрасно работает в большинстве аспектов, но имеет огромный недостаток. Пользователь может делать ставки больше, чем в балансе. Итак, если у пользователя есть 100 фунтов стерлингов, они ставят 105 фунтов стерлингов, и они выиграют, у них будет 205 фунтов стерлингов в их балансе. Это, очевидно, bad! И если у них есть 100 фунтов стерлингов, они ставят 105 фунтов стерлингов, и они проигрывают, баланс остается неизменным. Это тоже очень плохо.
Так я думал, что просто, если-заявление будет разобраться в этом:Почему мой простой оператор if не работает?

if (wager > balance) 
{ 
    winLoseLabel.Text = "You can't bet more than you have!"; 
} 
switch (betResult) 
{ 
    case TIE: 
     winloseLabel.Text = "Tie. You still lose. HA!"; 
     myRules.Balance -= wager; 
     break; 

    case PLAYERWINS:  
     winloseLabel.Text = "You win. Woop-de-do.."; 
     myRules.Balance += wager; 
     break; 

    case DEALERWINS: 
     winloseLabel.Text = "You lose. Get over it."; 
     myRules.Balance -= wager; 
     break; 
} 

Почему это не работает? Я почти уверен, что это что-то очень простое, но я довольно новичок в C#, так что легко на меня!

ответ

12

Вы должны иметь else там:

if (wager > balance) 
{ 
    winLoseLabel.Text = "You can't bet more than you have!"; 
} 
else 
{ 
    switch (betResult) 
    { 
     //... 
    } 
} 
+0

@Dan Думитру: Ничего себе, я явно смотрел на моем экране до тех пор, что мой мозг жареным. Извините за мою глупость! Спасибо! –

+0

Не забудьте принять ответ ... –

+0

@Christain W: Я знаю. Вы должны подождать некоторое время, прежде чем сможете. –

2

После вашего если заявление вы идете в сазе в любом случае, не должно вас есть еще вокруг сазе /?

3

Ваш оператор if правилен, однако вы не завершаете процедуру, если она запущена.

Вы можете сделать это, добавив «return;» после установки ярлыка или, если вы зависите от кода под тем, что вы показываете нам, вы можете включить оператор switch в «else» часть if-statement ...

2

Я точно не понимаю , но попробуйте

if (wager > balance) 
{ 
    winLoseLabel.Text = "You can't bet more than you have!"; 
    return; 
} 

или

if (wager <= balance) 
{ 
    switch (betResult) 
    { 
     case TIE: 
      winloseLabel.Text = "Tie. You still lose. HA!"; 
      myRules.Balance -= wager; 
      break; 

     case PLAYERWINS:  
      winloseLabel.Text = "You win. Woop-de-do.."; 
      myRules.Balance += wager; 
      break; 

     case DEALERWINS: 
      winloseLabel.Text = "You lose. Get over it."; 
      myRules.Balance -= wager; 
      break; 
    } 
} 
Смежные вопросы