Seltsamer Bug
-
Hey Leute,
ich habe ein äußerst seltsamen Bug in einem Programm, was mir ein Freund geschickt hat, gefunden.
Erst mal der Code://main.cpp: #include <iostream> #include <string> #include "gamefunktionen.cpp" using namespace std; int main() { int a; aktionen akt; //---------------------------------------------------------- a=1; while(a==1) { cout << "Menu:\n 1:Copyright\n 2:Spielen\n" << endl; // Menu, fragt 2 sachen ab cin >> a ; //---------------------------------------------------------- if(a==1) { cout << "Jan und Waldi !" << endl; } //---------------------------------------------------------- //---------------------------------------------------------- if(a==2) { cout << "Ok das Spiel beginnt!" << endl; } } while(!akt.ende) { cout <<"1:Jagen\n 2:Ausruhen\n 3:Shop\n"; cin >>a; if(a==1) { akt.Jagen(); } else if(a==2) { //Ausruhen } else if(a==3); { akt.Shop(); } } }//gamefunktionen.cpp #include <iostream> #include <string> using namespace std; class aktionen { public: bool ende; aktionen() { DeinAtk=3; DeineHp=10; DeineMaxHp=10; ende=false; } void Vinfos(int auswahl) { switch(auswahl) { case 1: cout<<"EGO: ATK:3 HP:10" << endl; cout<<"Ameise:\n HP:2\n ATK:1\n" << endl; Angreifen(1,2); break; case 2: cout<<"EGO: ATK:3 HP 10" << endl; cout<<"Fliege:\n HP:3\n ATK:2\n" << endl; Angreifen(2,3); break; case 3: cout<<"EGO: ATK:3 HP 10" << endl; cout<<"Wolf:\n HP:5\n ATK:2\n" << endl; Angreifen(2,5); break; case 4: cout<<"EGO: ATK:3 HP 10" << endl; cout<<"Schlange:\n HP:4\n ATK:3\n" << endl; Angreifen(3,4); break; case 5: cout<<"EGO: ATK:3 HP 10" << endl; cout<<"Löwe:\n HP:6\n ATK:4\n" << endl; Angreifen(4,6); break; case 6: cout<<"EGO: ATK:3 HP 10" << endl; cout<<"Drache:\n HP:10\n ATK:6\n" << endl; Angreifen(6,10); break; } } void Angreifen(int TierAtk,int TierHp) { cout << "1:Angreifen\n2:Weglaufen"<< endl; int a; cin >>a; if(a==1) { if(TierHp/DeinAtk<=DeineHp/TierAtk) { cout <<" Das Monster ist Tod" << endl; } else { cout << "Game Over!"<< endl; cin.get(); ende=true; } } } void Shop() { int a; cout << "Willkommen im Shop"<<endl; cout << "Hier kannst du folgende Items kaufen:"; cout << "1:Schwert"<<endl; cout << "2:Schild" <<endl; cin >> a; if (a==1) { DeinAtk += 5; } } void Jagen() { int a; cout << "Liste der Monster:\n" << endl; cout << "1:Ameise" << endl; cout << "2:Fliege" << endl; cout << "3:Wolf" << endl; cout << "4:Schlange" << endl; cout << "5:Löwe" << endl; cout << "6:Drache" << endl; cout << "Gib die Jewahlige Zahl an um infos über das Monster zu erhalten!" << endl; cin >> a; Vinfos(a); } private: int DeinAtk; int DeineMaxHp; int DeineHp; int DeinGeld; };Das ganze soll ein Konsolenspiel darstellen. Das Problem ist, dass man, nachdem man ein Monster gekillt hat automatisch in den Shop kommt.
Wenn man in der Mainfunktion das letzte elseif durch ein if ersetzt gehts.
Jetzt die Frage: Warum???
-
1. Das mit dem include ist eigentlich nicht so gemein,t dass man cpp-Dateien einbindet. Guck dir mal an, wie das mit den Headern funktioniert.
2.if(a==3);
Übersetzt nach Deutsch: Wenn a gleich 3 ist, wird alles bis zum Semikolon gemacht, also nichts.
-
Oh das Semikolon habe ich nicht gesehen.
Zum Thema .cpp einbinden: Wie schon gesagt ist der code von nem Freund :D.