private void Scramble(MahjongBoard board)
        {
            List <MahjongPair> reversed = new List <MahjongPair>();

            while (board.Tiles.Count > 0)
            {
                List <MahjongTile> removable = new List <MahjongTile>();
                removable.AddRange(ExtractRemovableTiles(board));
                while (removable.Count > 1)
                {
                    reversed.Add(MahjongPair.GetPair(removable));
                }
                foreach (MahjongTile tile in removable)
                {
                    board.Add(tile);
                }
            }
            for (int i = reversed.Count - 1; i >= 0; i--)
            {
                int typeIndex = random.Next() % types.Count;
                reversed[i].TileOne.Type = board.types[typeIndex];
                reversed[i].TileTwo.Type = board.types[typeIndex];
                board.Add(reversed[i].TileOne);
                board.Add(reversed[i].TileTwo);
            }
        }
 public void SetHint()
 {
     if (Tiles.Count > 0)
     {
         SetNone();
         MahjongPair pair = GetHint();
         pair.TileOne.Select = MahjongSelect.Hint;
         pair.TileTwo.Select = MahjongSelect.Hint;
     }
 }