C ++'Word Jumble'

时间:2016-10-07 19:36:30

标签: c++

我有一个小问题。我试图用评分系统制作游戏“Word Jumble”。但有时,当计算机猜到一个单词时,它会说:单词是:空白。那里应该有一个混乱的词。当我尝试任何单词时,它只会减去1.#INF点。

代码:

#include<iostream>
#include<string>
#include<stdlib.h>
#include<time.h>

using namespace std;
const int size=10;
string Words[size] = {
    "consecutive",
    "alternative",
    "consequently",
    "jumbled",
    "computer",
    "charger",
    "food",//I'm hungry
    "library",
    "strawberry",
    "carrier"
};
string Hints[size] = {
    "Following continuously.",
    "Something available as another opportunity.",
    "As a result.",
    "This word is rather jumbled, isn't it ;)",
    "The enitiy you are reading this off of",
    "My phone battery is running low",
    "I'm hungry, I need some _",
    "Where can I go get a book?",
    "It's red, and not a berry."
    "Either carries stuff, or is what your data company is called."
};
void main()
{
    string word,hint;
    double points=0;
    bool correct=false,playAgain=true;
    cout << "Welcome to Word Jumble!\n";
    cout << "The objective of this game is to guess the jumbled word, correctly.\n";
    cout << "Say 'quit' to quit, or 'hint' for a hint.\n";
    while (playAgain==true)
    {
        correct = false;
        int guesses = 0;
        srand(static_cast<unsigned int>(time(0)));
        int num = rand() % size + 1;
        word = Words[num];
        hint = Hints[num];
        string jumble = word;
        int length = jumble.size();
        for (int i = 0; i < length*2; ++i)
        {
            int index1 = (rand() % length);
            int index2 = (rand() % length);
            char temp = jumble[index1];
            jumble[index1] = jumble[index2];
            jumble[index2] = temp;
        }
        cout << "The word is: " << jumble << endl;
        double tempPoints=0;
        while (correct==false)
        {
            string theGuess;
            cout << "Guess the word: ";
            cin >> theGuess;
            guesses++;
            while (!cin)
            {
                cin.sync();
                cin.clear();
                cout << "Ivalid entry, try again: ";
                cin >> theGuess;
            }
            if (theGuess == word)
            {
                cout << "Correct! You guessed the word in only " << guesses << " tries!\n";
                tempPoints += jumble.size()*1.5;
                tempPoints -= (guesses - 1) / 4.0;
                points += tempPoints;
                cout << "You have been awarded " << tempPoints << " points this round for a total of " << points << "!\n";
                correct = true;
                cout << "Would you like to play again? (y or n): ";
                char tempYN;
                cin >> tempYN;
                while (!cin || tempYN != 'y' && tempYN != 'n')
                {
                    cin.sync();
                    cin.clear();
                    cout << "Invalid entry.\nWould you like to play again? (y or n): ";
                    cin >> tempYN;
                }
                if (tempYN == 'y')
                {
                    playAgain = true;
                }
                else
                {
                    playAgain = false;
                }
            }
            else if (theGuess == "hint")
            {
                tempPoints -= (1.0 / (jumble.size())) * 40;
                cout << "Hint: " << hint << endl;
                correct = false;
                playAgain = true;
            }
            else if (theGuess == "quit")
            {
                correct = true;
                playAgain = false;
            }
            else
            {
                double sub = (1.0 / (jumble.size())) * 20;
                cout << "Incorrect word, deducting "<<sub<<" points\n";
                tempPoints -= sub;
                playAgain = true;
                correct = false;
            }
        };
    };
    cout << "Goodbye\n";
}

1 个答案:

答案 0 :(得分:3)

在行中:

int num = rand() % size + 1;

您要说的是选择0到9之间的随机数,然后添加1.

如果随机数为9,则+ 1将使其为10.这意味着您尝试访问索引10处的数组WordsHints中的值。因为数组是0索引的并且它的大小为10表示你只有0到9的元素。

你也永远不会得到数组中的第一个字符串。