c++ - 基于单词随机实例化
问题描述
我有一个单词 = "CAT" 我有 26 个字母预制件 A - Z - 预制件数组 我想从预制件中随机实例化 6 个预制件,所以 B、L、T、C、A、T - 以任何随机顺序,但我需要它包括构成猫这个词的字母
我的第一个想法是使用字典/哈希图将单词 cat 映射到数组中的位置,即 C = [2] A = [0] T[] 但哈希图/字典只需要一个键值对,但我提供它具有多个值,需要 3 个字母
这是统一编程的,所以我的预制件已经在字母数组中,它只是让它们包含我的拼写。
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(
);
解决方案
假设您在GameObject[]
数组中有所有预制件,您可以使用它来自动填充字典
public GameObject[] prefabs = new GameObject[26];
private Dictionary<char, GameObject> CharToPrefab = new Dictionary<char, GameObject>(26);
private void Start()
{
for (var i = 0; i < 27; i++)
{
// add 0 to 26 to the start character A
// results in A-Z
CharToPrefab[(char)('A' + i)] = prefabs[i];
}
}
比您可以通过调用访问某个预制件
CharToPrefab[character];
为了生成实例(最简单的版本,不考虑任何双打),你可以做例如
public void RandomLetters(string word)
{
// 1. spawn the minimum required letters to build the word
foreach (var letter in word)
{
var obj = Instantiate(CharToPrefab[letter]);
// maybe use obj for something e.g. shuffel all instantiated objects positions
}
// 2. fill the rest with random letters
// assuming always same amount as word letters
var rand = new System.Random();
foreach (var letter in word)
{
// pics a number from 0 to 26
// and adds it to the char -> results in A-Z
var randomChar = (char)('A' + rand.Next(0, 27));
var obj = Instantiate(CharToPrefab[randomChar]);
// maybe use obj for something e.g. shuffel all instantiated objects positions
}
}
推荐阅读
- flutter - 无法让 SliverAppBar 标题颜色跟随 ThemeData
- python - 为什么在使用 PIL 时出现“无法保存模式 RGBA”错误?
- r - 将多个帧选项传递给 rmarkdown::beamer_presentation 中的单个帧
- shader - 错误:GL_INVALID_OPERATION:glUniform1iv:非数组Phaser 3.52的计数> 1
- javascript - innerHTML 属性不适用于 owl carousel
- microstack - Microstack libvirt如何开启TCP监听模式
- php - How to solve ERR_INVALID_REDIRECT for an HTTPS Wordpress website on Apache behind Nginx and varnish?
- python - 无法分割手写字符
- sql - 目标主体名称不正确。无法生成 SSPI 上下文(cmd 提示符中的 SPN 显示现有)
- tensorflow - Keras 保存模型后加载模型,为什么要从头开始训练?