Esempio n. 1
0
        public void Scramble(Field field)
        {
            List <TilePair> reversed = new List <TilePair>();

            while (field.Tiles.Count > 0)
            {
                // Find two or more random outer tiles, remove them and store the coords
                List <Tile> removables = new List <Tile>();
                removables.AddRange(ExtractRemovableTiles(field));

                // Continue until no more removable tile pairs are left in the list
                while (removables.Count > 1)
                {
                    reversed.Add(TilePair.FetchPair(removables));
                }

                // Add remaing tile to the field
                foreach (Tile tile in removables)
                {
                    field.Add(tile);
                }
            }

            // Read the list from behind and and get random a random tile type for each pair to build the game
            Random random = new Random();

            for (int i = reversed.Count - 1; i >= 0; i--)
            {
                int typeIndex = random.Next() % field.Types.Length;
                reversed[i].Tile1.Type = field.Types[typeIndex];
                reversed[i].Tile2.Type = field.Types[typeIndex];
                field.Add(reversed[i].Tile1);
                field.Add(reversed[i].Tile2);
            }
        }
Esempio n. 2
0
        private void FindHints()
        {
            TilePair hint = _field.GetHint();

            if (hint != null)
            {
                _hint1 = hint.Tile1;
                _hint2 = hint.Tile2;
            }
        }
Esempio n. 3
0
        private string BuildFieldJson()
        {
            TilePair hintPair = null;

            if (_showHint)
            {
                hintPair = _field.GetHint();
            }

            Tile[]        tiles     = _field.GetSortedTiles();
            List <string> tilesJson = new List <string>();

            foreach (Tile tile in tiles)
            {
                string selected = (tile == _selected) ? "true" : "false";
                string disabled = !_field.CanMove(tile) && _showMoveable ? "true" : "false";
                string hint     = _showHint && hintPair != null && (tile == hintPair.Tile1 || tile == hintPair.Tile2) ? "true" : "false";
                string type     = (tile != null) ? tile.Type.Name : "empty";
                string tileJson = "          {\n";
                tileJson += "              \"x\": " + tile.X + ",\n";
                tileJson += "              \"y\": " + tile.Y + ",\n";
                tileJson += "              \"z\": " + tile.Z + ",\n";
                tileJson += "              \"type\": \"" + type + "\",\n";
                tileJson += "              \"selected\": " + selected + ",\n";
                tileJson += "              \"hint\": " + hint + ",\n";
                tileJson += "              \"disabled\": " + disabled + "\n";
                tileJson += "          }";
                tilesJson.Add(tileJson);
            }

            return
                ("{\n" +
                 "   \"field\": {\n" +
                 "       \"fieldwidth\": " + Field.WIDTH + ",\n" +
                 "       \"fieldheight\": " + Field.HEIGHT + ",\n" +
                 "       \"tilewidth\": " + Tile.WIDTH + ",\n" +
                 "       \"tileheight\": " + Tile.HEIGHT + ",\n" +
                 "       \"tiles\": [\n" +
                 string.Join(",\n", tilesJson.ToArray()) + "\n" +
                 "       ]\n" +
                 "   }\n" +
                 "}\n");
        }