Код C++ застрял в бесконечном цикле
#include "stdafx.h" #include <iostream> #include <conio.h> #include <string> using namespace std; struct Player { string name; int money; string one; }; char secretPhrase[] = "Easy as pie"; char mask[sizeof(secretPhrase) - 1]; void displayBlankPhrase(char p[], char g) { for (int i = 0; i < sizeof(secretPhrase)-1 ; i++) { if (secretPhrase[i] == g) mask[i] = g; } for (int i = 0; i < sizeof(mask); i++) cout << mask[i]; cout << endl; } void init() { //Initialize Mask for (int i = 0; i < sizeof(secretPhrase) - 1; i++) { if (secretPhrase[i] == ' ') mask[i] = ' '; else { mask[i] = '*'; } } } bool isGameOver() { for (int i = 0; i < sizeof(mask) - 1; i++) if(mask[i] == '*') return false; return true; } int main() { // Initializes mask array init(); //Welcome Screen | This is where you enter player information Player one; one.money = 0; cout << "Welcome to 'Wheel of Fortune'!" << endl; cout << "What is your name?: "; cin >> one.name; cout << "Hello " << one.name << ". You starting amount is $" << Player().money << "." << endl; // WHEEL int wheelSlots[24]; wheelSlots[0] = 0; wheelSlots[1] = 1; wheelSlots[2] = 50; wheelSlots[4] = 200; wheelSlots[3] = 1000; wheelSlots[5] = 3000; wheelSlots[6] = 400; wheelSlots[7] = 0; wheelSlots[8] = 5000; wheelSlots[9] = 600; wheelSlots[10] = 10; wheelSlots[11] = 300; wheelSlots[12] = 500; wheelSlots[13] = 8000; wheelSlots[14] = 25; wheelSlots[15] = 400; wheelSlots[16] = 125; wheelSlots[17] = 10000; wheelSlots[18] = 0; wheelSlots[19] = 300; wheelSlots[20] = 250; wheelSlots[21] = 600; wheelSlots[22] = 400; wheelSlots[23] = 50; int playersMenu = 0; int playerOptions; char playersChoice; bool gamePlay = true; bool playerWin = false; int playerSpins = 0; int spin; string playerSolve; ; while (gamePlay == true && playerWin == false) { if (playerSpins < 1) { //Checks to see if play has spun the wheel cout << "Spin the wheel to start the game..." << endl; playerOptions = 2; for (int i = 0; i < sizeof(secretPhrase) - 1; i++) { secretPhrase[i] = '-'; } } else { cout << "\n\n Choose an option?: " << endl << "1. Guess a letter" << endl << "2. Spin the wheel" << endl << "3. Buy a vowel (- $500)" << endl << "4. Solve the puzzle" << endl; cin >> playerOptions; } playersChoice = '*'; // Evaluate players options options 1-4 if (playersMenu == 1) { cout << "Guess a letter for $: " << playerSpins; cin >> playersChoice; } if (playersMenu == 2){ playerSpins++; // Random wheel number generator spin = rand() % 25; cout << endl << "The wheel landed on: $" << wheelSlots[spin] << "." << endl; if (spin == 0 || spin == 1) { one.money = 0; cout << "OH NO! Bankrupt!" << endl; } } if(playersMenu == 3){ one.money -= 250; cout << "Here is your money now: $" << one.money << ". " << "Guess a vowel: "; cin >> playersChoice; } if(playersMenu == 4){ cout << "You want to solve (no caps please and use underscores for spaces):"; // Underscores because of time constraints. cin >> playerSolve; if (playerSolve == secretPhrase) { cout << "You win!" << endl; playerWin = true; gamePlay = false; } } } return 0; }
Что я уже пробовал:
Я пытаюсь создать игру wheel of fortune, но у меня возникли проблемы с тем, что мой код застрял в бесконечном цикле после ввода имени игрока. ПОЖАЛУЙСТА, ПОМОГИТЕ!!! Не мог бы кто-нибудь просмотреть мой код или протестировать его в своей собственной среде? Теперь я действительно знаю, чего мне не хватает или что нужно изменить, чтобы вырваться из этого цикла
Andreas Gieriet
Почему вы думаете,что находитесь в бесконечном цикле? Что это за симптом? Какой последний текст вы видите на экране?
Кстати: у вашего игрока нет стартовых денег, и вы не печатаете его деньги (вы должны позвонить one.money
и нет Player().money
).
У вас также есть неправильный расчет индекса в rand() % 25
- у вас есть только индексы 0...23
так и должно быть ...% 24
.
С уважением
Энди