static void Main(string[] args)
        {
            var game        = new ReversiGame(new GameFieldFactory().PrepareField());
            var movesFinder = new PossibleMovesFinder();

            DrawField(game.Field, game.CurrentColor, movesFinder.GetPossibleMoves(game.Field).ToList());

            while (!game.IsOver)
            {
                var move = ReadMove();
                ValueOrError <bool> result;
                if (move == "rnd" || move == "r")
                {
                    result = game.MakeMove(movesFinder.GetPossibleMoves(game.Field)
                                           .First(possibleMove => possibleMove.Color == game.CurrentColor).Position.ToCode());
                }
                else
                {
                    result = game.MakeMove(move);
                }


                if (result.HasValue)
                {
                    DrawField(game.Field, game.CurrentColor, movesFinder.GetPossibleMoves(game.Field).ToList());
                }
                else
                {
                    Console.WriteLine($"Error occured during move: {result.Error}");
                }
            }
        }
        private static void MakeMove(ReversiGame reversiGame, Color myColor)
        {
            var moves = new PossibleMovesFinder().GetPossibleMoves(reversiGame.Field).Where(move => move.Color == myColor).ToList();

            // Console.WriteLine($"//{string.Join(",", moves)}, {reversiGame.Field.GetCell("B4").Piece?.Color}");
            if (!moves.Any())
            {
                Console.WriteLine("pass");
                reversiGame.MakeMove("pass");
                return;
            }

            var move = moves[random.Next(moves.Count)];
            var code = move.Position.ToCode();

            reversiGame.MakeMove(code);
            Console.WriteLine(code);
        }
        private static void GetOpponentsMove(ReversiGame game)
        {
            string nextMove = null;

            while (nextMove == null)
            {
                nextMove = Console.ReadLine();
            }
            game.MakeMove(nextMove);
        }