Ejemplo n.º 1
0
    public static string WhoIsWinner(List <string> piecesPositionList)
    {
        // retrun "Red" or "Yellow" or "Draw"
        Console.WriteLine(string.Join("\n", piecesPositionList.ToArray()));
        CFHelper game  = new CFHelper();
        Regex    regex = new Regex(@"^(?<c>[a-g])_(?<p>Red|Yellow)", RegexOptions.IgnoreCase | RegexOptions.Compiled);

        foreach (var ln in piecesPositionList)
        {
            Match match;
            if ((match = regex.Match(ln)).Success)
            {
                char   ch  = Char.ToUpper(match.Groups["c"].Value[0]);
                Player p   = (Player)Enum.Parse(typeof(Player), match.Groups["p"].Value, true);
                Player res = game.DropAndCheck(ch, p);
                if (res == Player.Red || res == Player.Yellow)
                {
                    return(res.ToString());
                }
            }
        }

        /*
         * Player[,] board = game.GetBoard();
         * StringBuilder buffer = new StringBuilder();
         * for (int i = 0; i < board.GetLength(0); i++)
         * {
         *      for (int j = 0; j < board.GetLength(1); j++)
         *      {
         *              buffer.Append(' ').Append(board[i, j].ToString()[0]);
         *      }
         *      buffer.Append('\n');
         * }
         * Console.WriteLine(buffer.ToString());
         * for (int i = 0; i < board.GetLength(0); i++)
         * {
         *      for (int j = 0; j < board.GetLength(1); j++)
         *      {
         *              Player p;
         *              if (j < (board.GetLength(1) - 3))
         *              {
         *                      // check row
         *                      p = CFHelper.CheckRow(i, j, board);
         *                      if (p == Player.Red || p == Player.Yellow)
         *                              return p.ToString();
         *                      if (i < (board.GetLength(0) - 3))
         *                      {
         *                              // check column, check diag fwd
         *                              p = CFHelper.CheckCol(i, j, board);
         *                              if (p == Player.Red || p == Player.Yellow)
         *                                      return p.ToString();
         *                              p = CFHelper.CheckDiagFwd(i, j, board);
         *                              if (p == Player.Red || p == Player.Yellow)
         *                                      return p.ToString();
         *                      }
         *              }
         *              if (i < (board.GetLength(0) - 3) && j >= 3)
         *              {
         *                      // check diag back
         *                      p = CFHelper.CheckDiagBack(i, j, board);
         *                      if (p == Player.Red || p == Player.Yellow)
         *                              return p.ToString();
         *              }
         *      }
         * }
         */
        return("Draw");
    }