簡體   English   中英

C ++“單詞混雜”

[英]C++ 'Word Jumble'

我有一個小問題。 我試圖用計分系統制作“ 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";
}

在該行中:

int num = rand() % size + 1;

您說的是選擇一個介於0到9之間的隨機數,然后加1。

如果隨機數是9,則+ 1將使它成為10。這意味着您正在嘗試訪問數組Words and Hints處索引10的值。由於數組被索引為0,並且其大小為10,這意味着您只有元素在0-9。

您也永遠不會獲得數組中的第一個字符串。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM