Вот другой подход.Это было значительно переработано из вашего кода.Сначала я добавил частное System.Random
поле члена к классу формы:
private Random _rand = new Random();
Затем я настроил два enum
s, одно для "знака руки" (камень, бумага, ножницы) идругой для результата:
public enum HandSign
{
Rock, // rock beats scissors
Paper, // paper beats rock
Scissors, // scissors beats paper
}
public enum Result
{
Draw,
ComputerWins,
PlayerWins
}
Затем я создаю несколько вспомогательных функций, первой для определения следующего хода компьютера:
private HandSign GetRandomPlay()
{
var result = _rand.Next(0, Enum.GetValues(typeof(HandSign)).Length);
return (HandSign) result;
}
и следующей - механизм правил для определенияпобедитель:
private Result DetermineWinner(HandSign player, HandSign computer)
{
if (player == computer)
{
return Result.Draw;
}
if (player == HandSign.Scissors && computer == HandSign.Rock)
{
return Result.ComputerWins;
}
if (player == HandSign.Rock && computer == HandSign.Scissors)
{
return Result.PlayerWins;
}
if (player > computer)
{
return Result.PlayerWins;
}
//finally, otherwise
return Result.ComputerWins;
}
Наконец, один, чтобы «сыграть в игру», показывая результаты игры в нескольких ярлыках на форме:
private void PlayGame(HandSign playerPicks)
{
PlayerPicksLbl.Text = playerPicks.ToString();
var computerPicks = GetRandomPlay();
ComputerPicksLbl.Text = computerPicks.ToString();
WinnerLbl.Text = DetermineWinner(playerPicks, computerPicks).ToString();
}
В этот момент,мои три обработчика нажатия кнопки просто выглядят так (это обработчик Rock):
private void RockBtn_Click(object sender, EventArgs e)
{
PlayGame(HandSign.Rock);
}
Одним из результатов структурирования вещей таким образом является расширение на «Камни, Бумага, Ножницы, Ящерица, Спок»."все, что вам нужно сделать, это добавить еще две записи в перечисление HandSign
, добавить немного больше логики в DetermineWinner
и еще две кнопки / обработчики кнопок.
Также обратите внимание, что нет никакого способанеправильно пишется "Ножницы" и все равно есть эта компиляция!