Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/148.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 基于word的随机实例化_C++_Arrays_Unity3d_Random_Hashmap - Fatal编程技术网

C++ 基于word的随机实例化

C++ 基于word的随机实例化,c++,arrays,unity3d,random,hashmap,C++,Arrays,Unity3d,Random,Hashmap,我有一个词:“猫” 我有26个字母预制A-Z-预制数组 我想从预置中随机实例化6个预置 所以B,L,T,C,A,T-以任意随机顺序 但是我需要它包括组成单词cat的字母 我的第一个想法是使用dictionary/hashmap将单词cat映射到数组中的位置,即C=[2]a=[0]T[] 但是hashmap/dictionary只接受一个键值对,但我为它提供了3个字母所需的不止一个值 这是在unity中编程的,所以我的预置已经在字母数组中了,只是让它们包含我的拼写 public GameObjec

我有一个词:“猫” 我有26个字母预制A-Z-预制数组 我想从预置中随机实例化6个预置 所以B,L,T,C,A,T-以任意随机顺序 但是我需要它包括组成单词cat的字母

我的第一个想法是使用dictionary/hashmap将单词cat映射到数组中的位置,即C=[2]a=[0]T[] 但是hashmap/dictionary只接受一个键值对,但我为它提供了3个字母所需的不止一个值

这是在unity中编程的,所以我的预置已经在字母数组中了,只是让它们包含我的拼写

public GameObject[] letters;
void Start() {

    int x;

    /* for loop execution */
    for (x = 0; x < 5; x = x + 1)
    {

        CreateCubes();
    }
}

     public void CreateCubes()
    {

        GameObject obj = Instantiate(letters[Random.Range(0, 26)]);
        obj.transform.position = new Vector3(

     );
公共游戏对象[]个字母;
void Start(){
int x;
/*for循环执行*/
对于(x=0;x<5;x=x+1)
{
CreateCubes();
}
}
公共void CreateCubes()
{
GameObject obj=实例化(字母[Random.Range(0,26)];
obj.transform.position=新矢量3(
);

假设您在一个
游戏对象[]
数组中有所有预置,您可以使用它来自动填充字典

public GameObject[]预置=新的GameObject[26];
私有词典CharToPrefab=新词典(26);
私有void Start()
{
对于(变量i=0;i<27;i++)
{
//将0到26添加到起始字符A
//结果是A-Z
CharToPrefab[(char)('A'+i)]=预制件[i];
}
}
然后通过调用

CharToPrefab[字符];
要生成实例(最简单的版本,不考虑任何双精度),您可以执行以下操作:

公共字母(字符串字)
{
//1.生成构建单词所需的最小字母
foreach(单词中的var字母)
{
var obj=实例化(CharToPrefab[字母]);
//可能会将obj用于某些东西,例如shuffel所有实例化对象位置
}
//2.用随机字母填充其余部分
//假设始终与单词字母的数量相同
var rand=new System.Random();
foreach(单词中的var字母)
{
//这是一个从0到26的数字
//并将其添加到char->results A-Z中
var randomChar=(char)('A'+rand.Next(0,27));
var obj=实例化(CharToPrefab[randomChar]);
//可能会将obj用于某些东西,例如shuffel所有实例化对象位置
}
}

如果你使用Unity,你是在C++中编写代码,还是C语言?实际上,我认为这里最紧迫的问题不是语言标签,也不是读你的问题的困难,而是你没有提供任何代码的事实。堆栈溢出是为了帮助你修改代码,而不是为你编写代码。我们可以帮助你,但是展示给我们看。你如何访问你的预制,你提到一个数组,你能粘贴它吗?谢谢你,我会试试这个&看看它如何进行