Почему код продолжает прыгать, чтобы вернуть main();?

Привет, ребята, я новичок в С++ и для практики я делаю «Сделай свою собственную приключенческую игру». Я понятия не имею, в чем проблема. Я считаю, что это как-то связано с моей переменной char. В основном я буду публиковать код мой main.cpp Как бы то ни было, есть другие внешние файлы заголовков, но я не вижу причин публиковать их, и мой код будет работать без ошибок, и я не понимаю, как это можно сделать, если мой оператор if else не работает/мой символьная переменная.

Спасибо за помощь.

#include <iostream>
//LVL1
#include "C:\Users\QuestionMark\Desktop\Make Your Own Adventure\LVL1\Dog.h"
#include "C:\Users\QuestionMark\Desktop\Make Your Own Adventure\LVL1\Dream.h"
#include "C:\Users\QuestionMark\Desktop\Make Your Own Adventure\LVL1\GTFO.h"

using namespace std;

int main(){

    cout << "Welcome to my 'MAKE YOUR OWN ADVENTURE GAME!!!'\n";
    cout << "Have Fun and enjoy the ride!\n";
    cout << "Would you like to put in a cheat code??\n";
    cout << "Yes or No, Cap Sensitive!\n";
        char y[3];
        cin >> y;
if(y == "Yes"){
        cout << "Please Enter Cheat Code now\n";
        char z[5];

    if(z == "Dog"){
        Dog();
    }else if(z == "Dream"){
        Dream();
    }else if(z == "GTFO"){
        GTFO();
    }else if(z == "Path"){
        Path();
    }else if(z == "Sword"){
        Sword();
    }else if(z == "Weird"){
        Weird();
   }else{
    cout << "Invalid Cheat Code\n";
    }
}else if(y == "No"){

    cout << endl;
    cout << "You wake up and your house is on fire what do you do ??\n";
    cout << "Quick Grab The Dog = 0, GTFO = 1, Go back to sleep = any other number\n";
    int x;
    cin >> x;
    if(x == 0){
        Dog();
    }else if(x == 1){
         GTFO();
    }else{
         Dream();
   }

}else{
cout << "Invalid Answer\n\n\n";
return main();
}
return 0;
}

На заметку. В The Header Dog я вызвал все функции для уровня 2. И мне просто интересно, почему моя программа работает нормально, и мне не приходится вызывать все функции уровня 2 в моем заголовке GTFO и моем заголовке Dream.

ps: Просто чтобы устранить путаницу Path();,Sword(); и Weird(); все функции уровня 2.

pps: Также просто интересно, почему мне не нужно вызывать функции уровня 2 в моем main.cpp?

последняя мысль: спасибо за ваше время и хорошего дня!

ps заключительные мысли: Это портал 1 ссылки.


person Community    schedule 28.11.2013    source источник


Ответы (2)


Вы не можете вызывать main() в программе на C++. Период. В C да, а в C++ нет. Когда у вас есть вызов main() в вашей программе, вы вызываете неопределенное поведение, и программа может делать что угодно.

person Jonathan Leffler    schedule 28.11.2013
comment
Как вы предлагаете вернуться на главную? - person ; 28.11.2013
comment
Не вызывая его... используйте цикл! - person Jonathan Leffler; 28.11.2013
comment
На самом деле вам, вероятно, следует создать функцию std::string GetNextCommand() и функцию DoNextCommand(std::string). Поместите эти два в петлю. Вероятно, цикл do { } while(stillAlive); :) - person MSalters; 28.11.2013

Вы не сравниваете строки c с ==. Вместо этого используйте strcmp(). Поскольку это С++, вы все равно должны использовать std::string. Кроме того, z[5] недостаточно велик для хранения «Dream» или других 5-символьных строк.

person Dave Rager    schedule 28.11.2013