Cześć,
chciałem napisać prostą symulację walki turowej za pomocą obiektowego języka C++. Jednakże przy samej próbie utworzenia obiektów wyskakują błędy, szukałem w google przykładów, jak to naprawić, niestety nie znalazłem nic, co mogłoby pomóc w moim przypadku. Czy jakaś dobra dusza mogłaby mi objaśnić czemu program nie może znaleźć "Wojownik' w metodzie spell(Wojownik*)?
main:
#include <iostream>
#include <Windows.h>
#include <time.h>
#include "Header.h"
using namespace std;
int main() {
srand(time(NULL));
Wojownik* woj1 = new Wojownik;
woj1->pokaz();
Mag* mag1 = new Mag;
mag1->show();
return 0;
}
header:
#include <iostream>
#include <Windows.h>
#include <time.h>
using namespace std;
//----------Klasy---------
class Wojownik {
public:
string imie;
int hp;
int sila;
Wojownik(string = "Mieszko", int = 100, int = 10);
void pokaz();
bool uderz(Mag*);
};
class Mag {
public:
string name;
int hp;
int power;
int mana;
Mag(string = "Lucyfer", int = 50, int = 25, int = 50);
void show();
bool spell(Wojownik*);
};
.cpp:
#include "Header.h"
//----------Metody dla Wojownika-----------
Wojownik::Wojownik(string i, int h, int s) {
this->imie = i;
this->hp = h;
this->sila = s;
}
void Wojownik::pokaz() {
cout << "Wojownik " << this->imie << " posiada " << this->hp << " punktow zycia" << endl;
}
bool Wojownik::uderz(Mag* przeciwnik) {
Sleep(3000);
int obr = this->sila + (rand() % 11);
cout << "Wojownik " << this->imie << " uderza maga " << przeciwnik->name << " za " << obr << " punktow obrazen" << endl;
przeciwnik->hp -= obr;
if (przeciwnik->hp <= 0) return true;
else return false;
}
//-------------Metody dla Maga---------------
Mag::Mag(string n, int h, int p, int m) {
this->name = n;
this->hp = h;
this->power = p;
this->mana = m;
}
void Mag::show() {
cout << "Mag " << this->name << " posiada " << this->hp << " punktow zdrowia" << endl;
}
bool Mag::spell(Wojownik* target) {
Sleep(3000);
int dmg = this->power + (rand() % 21);
cout << "Mag " << this->name << " uderza wojownika " << target->imie << " za " << dmg << " punktow obrazen";
target->hp -= dmg;
if (target->hp <= 0) return true;
else return false;
}
błędy: