Hallo, ich arbeite an einem Prokjekt... Läuft auch schon ganz gut, jedoch gibt es einen ganz großen Fehler im Projekt. Ich vermute es liegt an dem Konstruktor oder an dem aufruf des Konstruktors, in der main.cpp Hier erstmal der Code:
Code:
//Common_Header.h
#ifndef COMMON_HEADER_H
#define COMMON_HEADER_H
#include <iostream>
#include <cstdlib>
#include <conio.h>
#include <ctime>
#include <windows.h>
#include <mmsystem.h>
typedef unsigned int uint;
using namespace std;
#endif
Code:
//Monster.h
#include "common_header.h"
#ifndef _MONSTER_H
#define _MONSTER_H
class Monster {
private:
//Deklaration der Eigenschaften
uint Health;
uint Strenght;
uint Mana;
public:
//Deklaration der Konstruktoren
Monster(uint h, uint s, uint m);
Monster(uint h, uint s);
Monster(uint h);
Monster( ); //Standardkonstruktor
//Deklaration des Destruktors
~Monster( ); //Wird aufgerufen sobald eine Instanz zerstört wird
//Deklaration der Funktionen
//Deklarationen der Zugriffsmethoden (get)
uint get_Health(void) const;
uint get_Strenght(void) const;
uint get_Mana(void) const;
//Deklarationen der Zugrissmethoden (set)
void set_Health(uint h);
void set_Strenght(uint s);
void set_Mana(uint m);
//Deklaration der Adventure-Funktionen
void Monster_get_Health (); //Monster bekommt Leben
void Monster_get_Mana (); //Monster bekommt Mana
void Monster_get_hit(); //Monster wird getroffen
void Monster_Attack(); //Monster greift an
};
#endif
Code:
//Soldat.h
#include "common_header.h"
#ifndef SOLDAT_H
#define SOLDAT_H
class Soldat{
//Deklaration der Eigenschaften
private:
uint Soldat_Health;
uint Soldat_Strenght;
uint Soldat_Mana;
public:
//Deklaration der Konstruktoren
Soldat(uint h, uint s, uint m);
Soldat(uint h, uint s);
Soldat(uint h);
Soldat( ); //Standardkonstruktor
//Deklaration des Destruktors
~Soldat( ); //Wird aufgerufen sobald eine Instanz zerstört wird
//Deklaration der Funktionen
//Deklarationen der Zugriffsmethoden (get)
uint get_Soldat_Health(void) const;
uint get_Soldat_Strenght(void) const;
uint get_Soldat_Mana(void) const;
//Deklarationen der Zugrissmethoden (set)
void set_Soldat_Health(uint h);
void set_Soldat_Strenght(uint s);
void set_Soldat_Mana(uint m);
//Deklaration der Adventure-Funktionen
void Soldat_get_Health (); //Soldat bekommt Leben
void Soldat_get_Mana (); //Soldat bekommt Mana
void Soldat_get_hit(); //Soldat wird getroffen
void Soldat_Attack(); //Soldat greift an
};
#endif
Code:
//Monster.cpp
#include "monster.h"
#include "soldat.h"
//Definitionen der Konstruktoren
Monster::Monster(uint h, uint s, uint m){
uint Health = h;
uint Strenght = s;
uint Mana = m;
}
Monster::Monster(uint h, uint s){
uint Health = h;
uint Strenght = s;
//Sobald Mana nicht angegeben wird, Mana = 100
uint Mana = 100;
}
Monster::Monster(uint h){
uint Health = h;
//Sobald Stärke nicht angegeben wird, Stärke = 100
uint Strenght = 100;
//Sobald Mana nicht angegeben wird, Mana = 100
uint Mana = 100;
}
Monster::Monster( ){ //Definition Standardkonstruktor
//Sobald keine Parameter übergeben werden, Perfektes Mosnter
uint Health = 100;
uint Strenght = 100;
uint Mana = 100;
}
//Definition des Destruktors
Monster::~Monster( ){ //Desktruktor darf niemals Parameter haben
PlaySound(TEXT("Monster_die.wav"), NULL, SND_FILENAME);
int live = 20;
cout<<"Du hast das Monster getötet..."<<endl;
Sleep(5000);
cout<<"Du erhälst 20 Leben..."<<endl;
//Soldat::set_Soldat_Health(live);
//#error "Bitte bei dem Soldat leben auffüllen lassen(Monster.cpp)- Destruktor"
}
//Definition der Zugriffsmethoden (get)
uint Monster::get_Health(void) const{
return Health;
}
uint Monster::get_Strenght(void) const{
return Strenght;
}
uint Monster::get_Mana(void) const{
return Mana;
}
//Definition der Zugriffsmethoden (set)
void Monster::set_Health(uint h){
Health += h;
}
void Monster::set_Strenght(uint s){
Strenght += s;
}
void Monster::set_Mana(uint m){
Mana += m;
}
//Definition der Advanture-Funktionen
void Monster::Monster_get_Health (){
uint Random;
srand((uint)time(0));
Random = (rand()%100)+1;
Monster::set_Health(Random);
if(Health > 100) Health = 100;
cout<<"Das Monster hat Leben bekommen:"<<endl;
cout<<"Monster: "<<this->Health<<endl;
}
void Monster::Monster_get_Mana (){
uint Random;
srand((uint)time(0));
Random = (rand()%100)+1;
Monster::set_Mana(Random);
if(Mana > 100) Mana = 100;
cout<<"Das Monster hat Mana bekommen:"<<endl;
cout<<"Monster: "<<this->Mana<<endl;
}
void Monster::Monster_get_hit(){
PlaySound(TEXT("Monster_get_hit.wav"), NULL, SND_FILENAME);
cout<<"Leben des Monster: "<<this->Health<<endl;
//#error "Bitte nochmal überarbeiten in Verbindung mit Soldat"
}
void Monster::Monster_Attack(){
PlaySound(TEXT("Monster_attack.wav"), NULL, SND_FILENAME);
cout<<"Das Monster greift mit "<<this->Strenght<<" Stärke an..."<<endl;
//#error "Bitte nochmal überarbeiten in Verbindung mit Soldat"
}
Code:
//Soldat.cpp
#include "soldat.h"
#include "monster.h"
//Definitionen der Konstruktoren
Soldat::Soldat(uint h, uint s, uint m){
uint Soldat_Health = h;
uint Soldat_Strenght = s;
uint Soldat_Mana = m;
}
Soldat::Soldat(uint h, uint s){
uint Soldat_Health = h;
uint Soldat_Strenght = s;
//Sobald Mana nicht angegeben wird, Mana = 100
uint Soldat_Mana = 100;
}
Soldat::Soldat(uint h){
uint Soldat_Health = h;
//Sobald Stärke nicht angegeben wird, Stärke = 100
uint Soldat_Strenght = 100;
//Sobald Mana nicht angegeben wird, Mana = 100
uint Soldat_Mana = 100;
}
Soldat::Soldat( ){ //Definition Standardkonstruktor
//Sobald keine Parameter übergeben werden, Perfekter Soldat
uint Soldat_Health = 100;
uint Soldat_Strenght = 100;
uint Soldat_Mana = 100;
}
//Definition des Destruktors
Soldat::~Soldat( ){ //Desktruktor darf niemals Parameter haben
system("CLS");
cout<<"~~~~~~~~~~Game Over~~~~~~~~~~"<<endl;
getch();
}
//Definition der Zugriffsmethoden (get)
uint Soldat::get_Soldat_Health(void) const{
return Soldat_Health;
}
uint Soldat::get_Soldat_Strenght(void) const{
return Soldat_Strenght;
}
uint Soldat::get_Soldat_Mana(void) const{
return Soldat_Mana;
}
//Definition der Zugriffsmethoden (set)
void Soldat::set_Soldat_Health(uint h){
Soldat_Health += h;
if(Soldat_Health > 100) Soldat_Health = 100;
}
void Soldat::set_Soldat_Strenght(uint s){
Soldat_Strenght += s;
if(Soldat_Strenght > 100) Soldat_Strenght = 100;
}
void Soldat::set_Soldat_Mana(uint m){
Soldat_Mana += m;
if(Soldat_Mana > 100) Soldat_Mana = 100;
}
//Definition der Advanture-Funktionen
void Soldat::Soldat_get_Health (){
uint Random;
srand((uint)time(0));
Random = (rand()%100)+1;
Soldat::set_Soldat_Health(Random);
cout<<"Du bekommst Leben:"<<endl;
cout<<"Soldat: "<<this->Soldat_Health<<endl;
}
void Soldat::Soldat_get_Mana (){
uint Random;
srand((uint)time(0));
Random = (rand()%100)+1;
Soldat::set_Soldat_Mana(Random);
cout<<"Du ahst Mana bekommen:"<<endl;
cout<<"Soldat: "<<this->Soldat_Mana<<endl;
}
void Soldat::Soldat_get_hit(){
//cout<<"Du wurdest von einem Monster mit "<<Monster::get_Strenght()<<endl;
//#error "Bitte nochmal überarbeiten in Verbindung mit Soldat"
}
void Soldat::Soldat_Attack(){
cout<<"Du greifst ein Monster mit "<<this->Soldat_Strenght<<" Stärke an..."<<endl;
//#error "Bitte nochmal überarbeiten in Verbindung mit Soldat"
}
Code:
#include "common_header.h"
#include "monster.h"
#include "soldat.h"
using namespace std;
DWORD WINAPI PlaySoundThread(void *file)
{
PlaySound((const char *) file, NULL, SND_FILENAME);
return 0;
}
int main(){
int AgentenWahl = 0;
Monster Org(100, 100, 100);
Sleep(3000);
CreateThread(0, 0, PlaySoundThread, (void *) "music.wav", 0, NULL);
do{
system("CLS");
cout<<"\t\t -------------The Game-------------"<<endl<<endl;
cout<<"\t\t Wähle deinen Agenten aus:"<<endl<<endl;
cout<<"\t\t 1. \t\tJohn"<<endl;
cout<<"\t\t 2. \t\tTommy"<<endl;
cout<<"\t\t 3. \t\tJason"<<endl;
cout<<"\t\t 4. \t\tJack"<<endl;
cout<<"\t\t 5. \t\tSpiel Ende"<<endl;
cin>>AgentenWahl;
if(AgentenWahl > 4 && AgentenWahl != 5 || AgentenWahl <= 0){
cout<<"Fehler bei der Eingabe...Bitte versuche es erneut...";
getch();
}
if(AgentenWahl == 5){
exit (1);
}
system("CLS");
switch(AgentenWahl){
case 1:
Soldat John();
cout<<"Du hast John gewählt"<<endl;
break;
case 2:
Soldat Tommy();
cout<<"Du hast Tommy gewählt"<<endl;
break;
case 3:
Soldat Jason();
cout<<"Du hast Jason gewählt"<<endl;
break;
case 4:
Soldat Jack();
cout<<"Du hast Jack gewählt"<<endl;
break;
}//Ende von switch
getch();
cout<<"Monsters Leben:"<<Org.get_Health()<<endl;
cout<<"Monsters Mana :"<<Org.get_Mana()<<endl;
cout<<"Monsters Särke:"<<Org.get_Strenght()<<endl;
Org.Monster_Attack();
Org.Monster_get_hit();
}while(AgentenWahl = 0);
return 0;
}
Ausgabe:
-------------The Game-------------
Wõhle deinen Agenten aus:
1. John
2. Tommy
3. Jason
4. Jack
5. Spiel Ende
1
Du hast John gewählt
Monsters Leben:2009095316
Monsters Mana :4294967295
Monsters Sõrke:2008948848
Ich glaube jeder kann erkennen das das Leben der Monster und die Stärke sowie auch Mana nicht sooo hoch sein sollten.
Ich hoffe ihr könnt mir helfen.