-1

我正在制作一个刽子手游戏,但其中的一部分有问题。

我从文件中选择了一个随机单词,但我想将该单词显示为一系列下划线_ _,然后将所选字母与下划线中的位置相匹配。

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;
4

1 回答 1

1

我不会为你编写这个代码,但我会用伪代码给你一些提示:

创建一个包含 50 个整数的数组(这应该比任何单词都长)并将数组的每个元素初始化为 0。

现在,数组的每个元素都将对应于单词的一个字母。如果数组被int guessed[50]猜测[0] 将对应于第一个字母,猜测[1] 对应于第二个字母,依此类推。数组中的值会告诉你玩家是否已经发现了那个字母。一开始,guessed 中的所有元素都为 0,这意味着玩家还没有猜到任何字母。

然后您向用户询问一个字母并将其保存在一个名为 currentLetter 的字符中,您的代码将如下所示:

for (i = 0; i < len(word); i++)
  if word[i] == currentLetter
    guessed[i] = 1

这会将猜测数组中对应于猜测字母的元素设置为 1。

当您想打印到目前为止猜到的所有字母时,请执行以下操作:

for (i = 0; i < len(word); i++)
  if guessed[i] == 1
    print word[i]
  else
    print "_"

将所有这些添加到 while 循环中,您将拥有一个工作程序。

于 2012-09-30T04:34:10.873 回答