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])); }