我正在制作一个刽子手游戏并且遇到部分问题。
我从文件中选择了一个随机单词,但是我希望将该单词显示为一系列的 _ _,然后将所选字母与底色中的位置相匹配。
cout <<"1. Select to play the game\n";
cout <<"2. Ask for help\n";
cout <<"3. Select to quit the game\n";
cout << "Enter a selection: ";
int number;
cin >> number;
while(number < 1 || number > 3 || cin.fail())
{
if(cin.fail())
{
cin.sync();
cin.clear();
cout << "You have not entered a number, please enter a menu selection between 1 and 3\n";
cin >> number;
}
else
{
cout << "Your selection must be between 1 and 3!\n";
cin >> number;
}
}
switch (number)
{
case 1:
{
string word;
string name;
cout << " Whats your name? ";
cin >> name;
Player player();
ifstream FileReader;
FileReader.open("words.txt");
if(!FileReader.is_open())
cout << "Error";
//this is for the random selection of words
srand(time(0));
int randnum = rand()%10+1;
for(int counter = 0; counter < randnum; counter++)
{
getline(FileReader, word, '\n');
}
cout << "my word: " << word << "\n";
// get length of word
int length;
//create for loop
for(int i = 0; i < length; i++)
cout << "_";
//_ _ _ _ _
SetCursorPos(2,10);
FileReader.close();
break;
答案 0 :(得分:1)
我不会为你编写代码,但我会给你一些伪代码的提示:
创建一个包含50个整数的数组(这应该比任何单词长)并将数组的每个元素初始化为0。
现在,数组的每个元素都对应于单词的字母。如果数组是int guessed[50]
,那么猜测[0]将对应于第一个字母,猜测[1]对应于第二个字母,依此类推。数组中的值将告诉您玩家是否已经发现了该字母。首先,猜测中的所有元素都将为0,这意味着玩家还没有猜到任何一个字母。
然后你要求用户输入一个字母并将其保存在一个名为currentLetter的字符中,你的代码将如下所示:
for (i = 0; i < len(word); i++)
if word[i] == currentLetter
guessed[i] = 1
这会将猜测数组中与猜测字母对应的元素设置为一个。
当你想要打印到目前为止猜到的所有字母时,请执行以下操作:
for (i = 0; i < len(word); i++)
if guessed[i] == 1
print word[i]
else
print "_"
将所有这些添加到while循环中,您将拥有一个可用的程序。