using System.Collections.Generic;
namespace RockPaperScissors
Rock, Paper, Scissors, MiniGun, Mirror
static MoveEnum GenerateRandomMove()
Random random = new Random(Guid.NewGuid().GetHashCode());
int computerMoveInt = random.Next(1, 6);
if (computerMoveInt == 1) return MoveEnum.Rock;
if (computerMoveInt == 2) return MoveEnum.Paper;
if (computerMoveInt == 3) return MoveEnum.Scissors;
if (computerMoveInt == 4) return MoveEnum.MiniGun;
if (computerMoveInt == 5) return MoveEnum.Mirror;
static MoveEnum ReadUserMove()
Console.Write("Your move (R - rock, P - paper, S - scissors, MG - MiniGun, M -Mirror): ");
string userInput = Console.ReadLine().ToUpper();
if (userInput == "R") return MoveEnum.Rock;
if (userInput == "P") return MoveEnum.Paper;
if (userInput == "S") return MoveEnum.Scissors;
if (userInput == "MG") return MoveEnum.MiniGun;
if (userInput == "M") return MoveEnum.Mirror;
Console.WriteLine("Back to the beginning. Try again.");
static string ConvertMoveToString(MoveEnum move)
if (move == MoveEnum.Rock) return "Rock";
if (move == MoveEnum.Paper) return "Paper";
if (move == MoveEnum.Scissors) return "Scissors";
if (move == MoveEnum.MiniGun) return "MiniGun";
if (move == MoveEnum.Mirror) return "Mirror";
static ResultEnum CompareAToB(MoveEnum a, MoveEnum b)
if (b == MoveEnum.Rock) return ResultEnum.Tie;
if (b == MoveEnum.Paper) return ResultEnum.Lose;
if (b == MoveEnum.Scissors) return ResultEnum.Win;
if (b == MoveEnum.MiniGun) return ResultEnum.Win;
if (b == MoveEnum.Mirror) return ResultEnum.Tie;
if (b == MoveEnum.Rock) return ResultEnum.Win;
if (b == MoveEnum.Paper) return ResultEnum.Tie;
if (b == MoveEnum.Scissors) return ResultEnum.Lose;
if (b == MoveEnum.MiniGun) return ResultEnum.Win;
if (b == MoveEnum.Mirror) return ResultEnum.Tie;
if (a == MoveEnum.Scissors)
if (b == MoveEnum.Rock) return ResultEnum.Lose;
if (b == MoveEnum.Paper) return ResultEnum.Win;
if (b == MoveEnum.Paper) return ResultEnum.Tie;
if (b == MoveEnum.MiniGun) return ResultEnum.Tie;
if (b == MoveEnum.Mirror) return ResultEnum.Win;
if (a == MoveEnum.MiniGun)
if (b == MoveEnum.Rock) return ResultEnum.Win;
if (b == MoveEnum.Paper) return ResultEnum.Lose;
if (b == MoveEnum.Scissors) return ResultEnum.Tie;
if (b == MoveEnum.MiniGun) return ResultEnum.Tie;
if (b == MoveEnum.Mirror) return ResultEnum.Win;
if (a == MoveEnum.Mirror)
if (b == MoveEnum.Rock) return ResultEnum.Tie;
if (b == MoveEnum.Paper) return ResultEnum.Lose;
if (b == MoveEnum.Scissors) return ResultEnum.Win;
if (b == MoveEnum.MiniGun) return ResultEnum.Win;
if (b == MoveEnum.Mirror) return ResultEnum.Tie;
static void Main(string[] args)
Console.WriteLine("Welcome to Rock-Paper-Scissors and other stuff game!");
MoveEnum computerMove = GenerateRandomMove();
MoveEnum userMove = ReadUserMove();
Console.WriteLine($"I played {ConvertMoveToString(computerMove)}");
ResultEnum result = CompareAToB(computerMove, userMove);
if (result == ResultEnum.Win) Console.WriteLine("I Lose");
if (result == ResultEnum.Lose) Console.WriteLine("I Win");
if (result == ResultEnum.Tie) Console.WriteLine("We Tie");