我正在进行" Udemy - 通过开发您的第一个游戏来学习C ++编码"这是一个虚幻的引擎C ++基础课程,在本课程中,您开发了一个用户尝试的小游戏猜一个字。
代码效果很好。但我想加入它。我在下面创建了代码并且效果很好。但它是UGGGGLLLY。因为我还处于早期学习阶段,所以我想开始养成正确的习惯。
所以问题是如何使所有这些If语句消失或凝结。 如果我想再添加50个单词,我不想再创建50个if语句。
我试图将ISecret更改为FString并使用该数字从HIDDEN_WORD [1]获取数字,但它没有按计划工作。
以下是我的想法:
ISecret[1-100] = MyHiddenWord[1-100] = HIDDEN_WORD[1-100]
我知道这不起作用,我知道我必须列出"单词"在银行,但我可以创建一个单词库,只列出银行中的所有单词吗?
int32 ISecret; //This section generates a
srand(time(NULL)); // random number between 1 and 10.
ISecret = rand() % 10, 1;///
const FString HIDDEN_WORD01 = "planet";
const FString HIDDEN_WORD02 = "bait";
const FString HIDDEN_WORD03 = "dog";
const FString HIDDEN_WORD04 = "cat";
const FString HIDDEN_WORD05 = "stream";/// These are the Hidden words
const FString HIDDEN_WORD06 = "taco";
const FString HIDDEN_WORD07 = "ship";
const FString HIDDEN_WORD08 = "balcony";
const FString HIDDEN_WORD09 = "tail";
const FString HIDDEN_WORD10 = "barf";
if (ISecret == 1){MyHiddenWord = HIDDEN_WORD01;}
else if (ISecret == 2){MyHiddenWord = HIDDEN_WORD02;}
else if (ISecret == 3){MyHiddenWord = HIDDEN_WORD03;}// These make is so
else if (ISecret == 4){MyHiddenWord = HIDDEN_WORD04;}//what ever number
else if (ISecret == 5){MyHiddenWord = HIDDEN_WORD05;}//is randomly
else if (ISecret == 6){MyHiddenWord = HIDDEN_WORD06;}//generated that
else if (ISecret == 7){MyHiddenWord = HIDDEN_WORD07;}//the correct
else if (ISecret == 8){MyHiddenWord = HIDDEN_WORD08;}//HIDDEN_WORD
else if (ISecret == 9){MyHiddenWord = HIDDEN_WORD09;}//is chosen.
else if (ISecret == 10){MyHiddenWord = HIDDEN_WORD10;}
答案 0 :(得分:7)
您可以将它们存储在std::array
:
#include<array>
const std::array<FString, 10> hidden_words =
{
"planet",
"bait",
"dog",
"cat",
"stream",
"taco",
"ship",
"balcony",
"tail",
"barf"
};
int main()
{
int ISecret = 0;
std::cout<<hidden_words[ISecret]<<std::endl;
}
或std::vector<Fstring>
通常,如果您打算使用整数来区分每个元素,那么将元素存储在数组中会很有用。
答案 1 :(得分:5)
首先,
ISecret = rand() % 10, 1;
错了。此语句等同于ISecret = rand() % 10;
,1
无效(这应触发编译器警告)。
如果你想要一个[1,10](含)范围内的随机数,你应该这样做:
ISecret = rand() % 10 + 1;
要为给定数字选择单词,最简单的方法可能是数组:
const FString hidden_word[] = {
"planet",
"bait",
"dog",
"cat",
"stream",
"taco",
"ship",
"balcony",
"tail",
"barf"
};
ISecret = rand() % 10; // a number between 0 and 9
MyHiddenWord = hidden_word[ISecret];
答案 2 :(得分:0)
除了答案,您还可以执行多态性。您可以查看这些示例
祝你好运......