Исправить код игры «Камень-ножницы-бумага» - C#
Формулировка задачи:
Условие: 1-й класс должен содержать следующие элементы: конструкторы , методы, свойства.
2-й класс должен содержать метод Main, в котором должна выполняться проверка разработанных элементов класса.
Игрок первым выбирает вариант, затем случайно компьютер. Предусмотреть метод очередного хода, свойство «счет», метод обнуления счета. В случае ввода недопустимых значений - исключения.
using System;
namespace ConsoleApplication11
{
class game
{
static void Main()
{
string[] combs = { "Камень", "Ножницы", "Бумага" };
Random random = new Random();
do
{
var r = random.Next(3);
Console.WriteLine("Введите свое значение");
for (int i = 0; i < combs.Length; i++)
{
Console.WriteLine("{0} {1}", i, combs[i]);
}
uint input;
while (!uint.TryParse(Console.ReadLine(), out input) || input > 2)
{
}
Console.WriteLine("Компьютер выбрал {0}, вы выбрали {1}", combs[r], combs[input]);
if (r == input)
Console.WriteLine("Ничья");
else if (input == 2 && r == 0 || input < r)
Console.WriteLine("Поражение");
else
Console.WriteLine("Победа");
Console.WriteLine("Попробовать еще раз? Y/N");
}
while (Console.ReadKey(true).Key == ConsoleKey.Y);
Console.WriteLine("Игра окончена, нажмите любую клавишу");
Console.ReadKey();
}
}
}Решение задачи: «Исправить код игры «Камень-ножницы-бумага»»
textual
Листинг программы
using System;
using System.Linq;
using System.Threading;
internal class Program
{
private static Game game;
private static Random rnd = new Random();
private static string history = "";
private static void Main(string[] args)
{
game = new Game();
int result = Play();
if (result > 0)
Console.WriteLine("Победа!");
else if (result < 0)
Console.WriteLine("Проигрыш...");
else
Console.WriteLine("Ничья");
Thread.Sleep(1000);
}
private static int Play(int index = 0)
{
Console.Clear();
Func<int, string> get = n =>
n == 0 ? "Камень" : n == 1 ? "Ножницы" : "Бумага";
int i = 0, score = game.Player1 - game.Player2;
Action<string> write = s =>
{
if (i++ == index)
{
Console.ForegroundColor = ConsoleColor.White;
Console.BackgroundColor = ConsoleColor.Gray;
}
Console.Write(s);
Console.ResetColor();
Console.Write(" ");
};
write(get(0));
write(get(1));
write(get(2));
Console.WriteLine("\r\nВаш счет : {0}", score);
if (history.Count('\n'.Equals) > 20)
{
history = history.Remove(0, history.IndexOf('\n') + 1);
}
Console.Write(history);
switch (Console.ReadKey().Key)
{
case ConsoleKey.Enter:
{
int c = rnd.Next(0, 3);
history += String.Format(
"Вы выбрали {0}, компьютер выбрал {1}\r\n",
get(index), get(c));
game.Play(index, c);
break;
}
case ConsoleKey.Escape:
{
Console.Clear();
return score;
}
case ConsoleKey.LeftArrow:
{
index += 2;
break;
}
case ConsoleKey.RightArrow:
{
index++;
break;
}
}
return Play(index%3);
}
}
internal class Game
{
public int Player1 = 0, Player2 = 0;
public void Play(int player1, int player2)
{
int res = player1 - player2;
if (res == 0)
return;
if (res == -1 || res == 2)
Player1++;
else Player2++;
}
}