示例#1
0
        public void TestShuffle()
        {
            var aList = new List <int>();

            for (int i = 1; i <= 100; ++i)
            {
                aList.Add(i);
            }
            var oldLength = aList.Count;

            Shuffle.DoShuffle(aList);

            Assert.Equal(aList.Count, oldLength);

            bool inverseOrder = false;

            for (int i = 0; i < aList.Count; ++i)
            {
                if (aList[i] != i)
                {
                    inverseOrder = true;
                    break;
                }
            }
            Assert.True(inverseOrder);

            // 确保没有丢东西
            var intSet = new HashSet <int>();

            foreach (var item in aList)
            {
                intSet.Add(item);
            }
            Assert.Equal(intSet.Count, oldLength);
        }
    public void GenerateName()
    {
        int        randomName  = -1;
        int        randomSpawn = -1;
        List <int> vs          = new List <int>();

        namesMiniGame = Shuffle.DoShuffle(namesMiniGame);

        /*
         * do
         * {
         *  randomSpawn = UnityEngine.Random.Range(0, spawnPoints.Count);
         * } while (spawnUse.Contains(randomSpawn));
         * spawnUse.Add(randomSpawn);
         * do
         * {
         *  randomName = UnityEngine.Random.Range(0, namesMiniGame.Count);
         * } while (wordsInGame.Contains(namesMiniGame[randomName]));
         */

        for (int i = 0; i < spawnPoints.Count; i++)
        {
            if (!spawnUse.Contains(i))
            {
                randomSpawn = i;
                vs.Add(randomSpawn);
            }
        }
        if (vs.Count <= 0)
        {
            return;
        }
        else
        {
            randomSpawn = Shuffle.DoShuffle(vs)[0];
            spawnUse.Add(randomSpawn);
        }

        for (int i = 0; i < namesMiniGame.Count; i++)
        {
            if (!wordsInGame.Contains(namesMiniGame[i]))
            {
                randomName = i;
                break;
            }
        }
        if (randomName == -1)
        {
            return;
        }

        wordsInGame.Add(namesMiniGame[randomName]);
        GameObject obj = Instantiate(newName, gameObject.transform);

        obj.transform.position = spawnPoints[randomSpawn].transform.position;
        obj.GetComponent <TextMeshPro>().text = namesMiniGame[randomName];

        points.Add(new SpawnName(randomSpawn, namesMiniGame[randomName]));
    }