public static IGameMove ParseStep(this char cellChar, Row row, Column column)
 {
     switch (char.ToLower(cellChar))
     {
         case 'x':
             return new TicMove(row, column);
         case '0':
             return new TacMove(row, column);
         default:
             return new NoMove(row, column);
     }
 }
        public IGameMove Make(Row row, Column column)
        {
            var move = _moves.LastOrDefault();
            if (move == null || move.GetType() == typeof (TacMove))
            {
                move = new TicMove(row, column);
            }
            else
            {
                move = new TacMove(row, column);
            }

            Make(move);
            return move;
        }
 protected bool Equals(Column other)
 {
     return Value == other.Value;
 }