чтение и запись файла для игры - PullRequest
0 голосов
/ 19 апреля 2019

Я создаю игру со случайными инициализированными буквами (например, BASTEN), и пользователь будет набирать как можно больше слов, используя только эти буквы.У меня есть файл, в котором есть правильные слова с соответствующими им точками.Моя проблема в том, как мне запретить пользователю использовать одни и те же слова снова и снова?

Я пытаюсь использовать ofstream, чтобы всякий раз, когда пользователь вводит правильное слово, оно добавлялось в пустой файл

void start()
{
    char ch;
    do {
        clrscr();
        long* newptr = 0;
        time_t start = time(newptr);
        char arr[10][50] = {" B A N S E T ", " R E D G A E ", " S A H L E S ", " P R G N I S ",
                            " A L E R L Y ", " L A C S A U ", " A C Q U K Y ", " M B L U E J ",
                            " Z E D Z U B ", " L E A Z D Z "};
        int i = 0, sum, x;
        while (i != 2) {
            clrscr();
            sum = 0;
            do {
                clrscr();
                cout << "\t**********************************************\n";
                cout << "\t*             W O R D  S E E K E R           *\n";
                cout << "\t**********************************************\n";
                cout << "\n\t\t\t\t\t SCORE: " << sum << " /50 pts"
                     << "\n                  ******************************\n";
                cout << "                  *       " << arr[i] << "        *\n";
                cout << "                  ******************************\n\n";
                cout << " 6 letter=10pts, 5 letter=8pts, 4 letters=6pts, 3 letter=4pts\n\n";
                char a[20], b[20];
                int c;

                // this is where I have my problem
                if (i == 0) {
                    ifstream fin;
                    fin.open("lvl1.txt");
                    if (fin.fail()) {
                        cout << "File doesn't exist!";
                        exit(1);
                    }
                    ofstream fout;
                    fout.open("trial.txt");
                    if (fout.fail()) {
                        cout << "Output file opening failed.\n";
                    }
                    cout << "\tEnter word: ";
                    cin >> a;

                    do {
                        fout << a;
                        fin >> b >> c;
                        if (fin.eof() == 1) {
                            cout << "Incorrect! Try Again!";
                            delay(1000);
                            exit(1);
                        }
                    } while (strcmp(a, b) != 0);
                    fin.close();
                    if (strcmp(a, b) == 0) {
                        sum += c;
                    }
                }
            } while (sum < 50);
            i++;
        }
        x = time(newptr) - start;
        cout << "\n\tGood Job! Your time is " << x << " seconds\n";
        cout << "\tDo you want to continue?(Y/N): ";
        cin >> ch;
    } while (ch != 'n' || ch != 'N');
}

1 Ответ

0 голосов
/ 19 апреля 2019

Вопрос в том, хотите ли вы запомнить слова во время выполнения или после завершения программы.

Чтобы запомнить слова после завершения программы, запишите их в файл.

Чтобы запомнить слова, введенные пользователем во время выполнения, используйте контейнер , например std::vector. Добавьте слово в контейнер, затем отсортируйте контейнер. Вы можете использовать std::binary_search, чтобы найти слово в контейнере перед добавлением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...