bitte, helft mir (verzweifel)
-
Warum kommt hier ein Fehler:
main.cpp:
#include <iostream> #include <stdlib.h> #include <cstring> #include "head.h" using namespace std; int random(void); void kampf (char name[30]); struct Krieger { public: int str; int dex; int con; int leben; }du, gegner; struct Waffe { public: int S; //Schaden int DM; //DEX-Malus }W, gW; int main(int argc, char *argv[]) { extern Krieger du; extern Krieger gegner; extern Waffe W; extern Waffe gW; char name[30], waffe[30]; char wahl; unsigned int x, rest=15, gs, ausweichen, leben; du.dex=10; du.str=10; du.con=10; cout<<"\tDer Unbesiegte\n\n"; cout<<"Bitte geben Sie den Namen des Kriegers ein: "; cin>>name; srand(time(0)); // Zufalls-Generator //Vergabe der Attribute Stärke, Beweglichkeit, Konstitution while (rest!=0) { cout<<"\n\n"<<name<<"\'s Attribute sind im moment:\nSTR= "<<du.str<<"\nDEX= " <<du.dex<<"\nCON= "<<du.con; cout<<"\n\nSie haben "<<rest<<" Punkte zu verteilen. Wo Wollen Sie sich verbessern\? (S=STR,D=DEX,C=CON)"; cin>>wahl; if (wahl=='D'||wahl=='d') { cout<<"Um wieviele Punkte wollen sie DEX verbessern?"; cin>>x; rest-=x; if (rest<0) { cout<<"Fehler"; rest+=x; } else { du.dex+=x; cout<<"OK, DEX = "<< du.dex; } } else if (wahl=='S'||wahl=='s') { cout<<"Um wieviele Punkte wollen sie STR verbessern?"; cin>>x; rest-=x; if (rest<0) { cout<<"Fehler"; rest+=x; } else { du.str+=x; cout<<"OK, STR = "<< du.str; } } if (wahl=='C'||wahl=='c') { cout<<"Um wieviele Punkte wollen sie CON verbessern?"; cin>>x; rest-=x; if (rest<0) { cout<<"Fehler"; rest+=x; } else { du.con+=x; cout<<"OK, DEX = "<< du.con; } } } du.leben=du.con*10; //Wahl der Waffe cout<<"\n\nKommen wir zur Wahl der Waffe. Bitte waehlen Sie eine der folgenden Waffen: \n" <<"(1)Einhaender\n(2)Zweihaender"; cin>>x; switch (x) { case 1: strcpy(waffe, "Einhaender"); W.S=10; W.DM=0; break; case 2: W.S=20; W.DM=10; strcpy(waffe, "Zweihaender"); } cout<<"Sie sind jetzt mit einem "<<waffe<<" ausgeruestet.\n\n"; cout<<"\n\n\tDer Kampf gegen den Bauern\n\n"; //Def Bauer gegner.str=10; gegner.dex=10; gegner.con=10; gegner.leben=gegner.con*10; gW.S=5; gW.DM=10; kampf("Der Bauer"); system("PAUSE"); return 0; }
xtra.cpp
#include <iostream> #include "head.h" using namespace std; void kampf(char gname[30]) { srand(time(NULL)); //Kampf int risiko=1, risiko2=0, x; while (du.leben>0 && gegner.leben>0) { cout<<"Du hast noch "<<du.leben<<" Lebenseinheiten.\n"<<gname<<" hat noch "<<gegner.leben<<" Lebenseinheiten\n"; cout<<"\n\nWas willst du tun?\n(1)Angriff (ofensiv)\n(2)Angriff (normal)\n(3)Angriff(defensiv)\n\n"; cin>>x; switch (x) { case 1: if ((du.dex-W.DM+risiko2+(rand()%10))<25) { gegner.leben-= ((1,2*(du.str+W.S)+(rand() % 10))/2); risiko=-10;} else { cout<<"Du hast verfehlt"; risiko=-10; } break; case 2: if ((du.dex-W.DM+risiko2+(rand()%10))<25) { gegner.leben-= ((1*(du.str+W.S)+(rand() % 10))/2); risiko=0;} else { cout<<"Du hast verfehlt"; risiko=0; } break; case 3: if ((du.dex-W.DM+risiko2+(rand()%10))<25) { gegner.leben-= ((0,5*(du.str+W.S)+(rand() % 10))/2); risiko=10;} else { cout<<"Du hast verfehlt"; risiko=10; } break; } if (gegner.leben>100) { if ((gegner.dex-gW.DM+risiko+(rand()%10))<25) { du.leben-= ((1,2*(gegner.str+gW.S)+(rand() % 10))/2); risiko2=-10;} else { cout<<"Du bist dem Angriff ausgewichen"; risiko2=-10; } } else if (gegner.leben>50 && gegner.leben<=100) { if ((gegner.dex-gW.DM+risiko+(rand()%10))<25) { du.leben-= ((1*(gegner.str+gW.S)+(rand() % 10))/2); risiko2=0;} else { cout<<"Du bist dem Angriff ausgewichen"; risiko2=0; } } else if (gegner.leben<=50) { if ((gegner.dex-gW.DM+risiko+(rand()%10))<25) { du.leben-= ((0,5*(gegner.str+gW.S)+(rand() % 10))/2); risiko2=10;} else { cout<<"Du bist dem Angriff ausgewichen"; risiko2=10; } } } if (gegner.leben<=0 && du.leben<=0) { cout<<"\n--------------------------------------------\n" <<"WOW, ihr habt euch gegenseitig umgebracht\n" <<"--------------------------------------------\n"; x=9999; } else if (gegner.leben<=0 && !(x==9999)) { cout<<"\n--------------------------------------------\n" <<"SUPER, du hast gewonnen !!!\n" <<"--------------------------------------------\n"; } else if (du.leben<=0 && !(x==9999)) { cout<<"--------------------------------------------\n" <<"SCHADE, du hast verloren .\n" <<"--------------------------------------------\n"; } }
header:
void kampf(void);
Möge das C++ Frum mir helfen
-
Ziemlich dreist, was du hier von uns verlangst.
Möge das C++ Frum mir helfen
Hilf dir selber: Debugger.
-
Kannst du bitte den Code auf das nötigste kürzen und die Stelle an der der Fehler auftaucht kennzeichnen. Die Fehlermeldung solltest du vielliecht auch noch posten.
-
rofl
-
Ich bitte dich, nero-x, poste NUR den Code, wo der Fehler auch erscheint, sonst kommt mir das hier so vor, als schicktest du uns den Code und wir sollen die Arbeit für sich machen. Nenne die Compiler Fehlermeldung, Zeile usw, und dann kommen wir ins geschäft
-
Hab ich ja schon versucht (ein paar Themen vorher)
Das Problem ist, dass der Compiler behauptet, die structuren du, gegner, W
würden doppelt definiert werden. Da wurde mir der rat gegeben es so zu machen.extern KRIEGER du;
Aber auch das nimmt der Compiler nicht an.
-
Das liegt wohl daran, dass die Definition deiner Struktur dem Compiler nicht bekannt ist:
//Header struct A { //... }; extern A a;
//.cpp A a;
-
Hab jetzt im header die struktur und in den beiden .cpp nochmal die def.
Kommt aber immernoch der Fehler :
multiple definition of du;
-
so muss das aussehn
header:
#ifndef HEADERNAME_H #define HEADERNAME_H struct Krieger { public: int str; int dex; int con; int leben; }du, gegner; struct Waffe { public: int S; //Schaden int DM; //DEX-Malus }W, gW; #endif
den bindest du dann in die cpps ein
-
nero-ex schrieb:
Hab jetzt im header die struktur und in den beiden .cpp nochmal die def.
Kommt aber immernoch der Fehler :
multiple definition of du;
Wie, du hast die Definition in beiden cpps? Einmal reicht es, du musst dann lediglich die Header-Datei inkludieren.
Auf den Vorredner solltest du nicht hören. Blödsinn zu posten, scheint bei ihm auf der Tagesordnung zu sein...
-
der post war ohne gleichzeitige erstellung von instanzen gemeint