Witam, tworzę grę z kilkoma klasami, coś ala snake. Do momentu kiedy cały kod zawarty był w jednym pliku, kompilacja przebiegała bez problemów, natomiast po podziału kodu na pliki klas i plik źródłowy program wywala szereg błędów przy kompilacji (wszystkie błędy w pliku w załączniku). Załączam również diagram UML. Zdaje sobie sprawę że kod może zawierać błędy niewłaściwe dla samej gry (jest jeszcze nie etapie pisania, poza tym dopiero uczę się programować) , ale proszę jedynie o pomoc tak by mój program mógł kompilować się bez żadnych błędów. A oto kod:
CBiedronka.h
#ifndef CBIEDRONKA_H
#define CBIEDRONKA_H
#include "COwad.h"
class CBiedronka : public COwad
{
private:
double energia;
public:
CBiedronka();
CBiedronka(int, int, double, bool);
~CBiedronka();
double getE();
void krok(int , bool);
};
#endif // CBIEDRONKA_H
CBiedronka.cpp
#include <iostream>
#include <conio.h>
#include <cstdlib>
#include <ctime>
#include "CBiedronka.h"
using namespace std;
CBiedronka::CBiedronka() : COwad()
{
x=0;
y=0;
energia=100;
isAlive=true;
}
CBiedronka::CBiedronka(int xp, int yp, double ep, bool isA)
{
x=xp;
y=yp;
energia=ep;
isAlive=isA;
}
CBiedronka::~CBiedronka()
{
cout<<"Twoja biedronka zginela "<<endl;
}
double CBiedronka::getE()
{
return energia;
}
void CBiedronka::krok(int kierunek, bool czySzybko)
{
int a;
double e;
int znak;
if (czySzybko)
{
a=3;
e=1.5;
}
else
{
a=1;
e=0.2;
}
if (kierunek==1)
{
znak=getch();
switch (znak)
{
case '8':
x-=a;
energia-=e;
break;
case '2':
x+=a;
energia-=e;;
break;
case '6':
y+=a;
energia-=e;
break;
case '4':
y-=a;
energia-=e;
break;
}
}
else if (kierunek==2)
{
znak=getch();
switch (znak)
{
case 'w':
x-=a;
energia-=e;
break;
case 's':
x+=a;
energia-=e;;
break;
case 'd':
y+=a;
energia-=e;
break;
case 'a':
y-=a;
energia-=e;
break;
}
}
}
CGra.h
#ifndef CGRA_H
#define CGRA_H
class CGra
{
private:
CBiedronka *gracze[2];
int licznik;
void rysujPlansze();
public:
CGra();
void generujPodsumowanie();
void graj();
~CGra();
};
#endif // CGRA_H
CGra.cpp
#include <iostream>
#include <conio.h>
#include <cstdlib>
#include <ctime>
#include "CGra.h"
using namespace std;
void CGra::rysujPlansze()
{
char tab1[20][60];
char tab2[10];
for (int i=0; i<20; i++)
{
for (int j=0; j<60; j++)
{
tab1[i][j]=' ';
}
} system("cls");
tab1[gracze[0]->getX()][gracze[0]->getY()]='@';
tab1[gracze[1]->getX()][gracze[1]->getY()]='X';
tab1[COowad[0]->getX()][COowad[0]->getY()]=COowad[0]->getSymbol();
cout << " ------------------------------------------------------------" << endl;
for (int i=0; i<20; i++)
{cout<<"|";
for (int j=0; j<60; j++)
{
cout<<tab1[i][j];
}cout<<"|";
cout<<endl;
}
cout << " ------------------------------------------------------------" << endl;
cout<<"Biedronka 1: [energia: "<<gracze[0]->getE()<<"%]"; ///1
for (int k=0; k<(gracze[0]->getE())/10; k++)
{
tab2[k]='|';
cout<<tab2[k];
}
cout<<"[stan: ";
(gracze[0]->getIsAlive()) ? cout<<"zywa] " : cout<< "martwa ]";
cout<<endl;
cout<<"Biedronka 2: [energia: "<<gracze[1]->getE()<<"%]"; ///2
for (int k=0; k<(gracze[1]->getE())/10; k++)
{
tab2[k]='|';
cout<<tab2[k];
}
cout<<"[stan: ";
(gracze[1]->getIsAlive()) ? cout<<"zywa] " : cout<< "martwa ]";
cout<<endl;
}
CGra::CGra()
{
gracze[0]=new CBiedronka(5,5,5,true);
gracze[1]=new CBiedronka(15,15,100,false);
COowad[0]=new COwad();
licznik=0;
rysujPlansze();
}
void CGra::generujPodsumowanie()
{
cout<<"Game over ";
}
void CGra::graj()
{
CGra();
while ((gracze[0]->getE()>0) && (gracze[1]->getE()>0))
{
rysujPlansze();
gracze[0]->krok(1,1);
gracze[1]->krok(2,1);
}
}
CGra::~CGra()
{
delete gracze[0];
delete gracze[1];
delete COowad[0];
generujPodsumowanie();
}
COwad.h
#ifndef COWAD_H
#define COWAD_H
class COwad
{
protected:
int x;
int y;
char symbol;
bool isAlive;
public:
COwad();
COwad(int, int, char, bool);
~COwad();
int getX();
int getY();
double getSymbol();
bool getIsAlive();
virtual void krok(int, bool);
bool operator==(const COwad& arg2);
void setIsDead();
};
#endif // COWAD_H
COwad.cpp
#include <iostream>
#include <conio.h>
#include <cstdlib>
#include <ctime>
#include "COwad.h"
using namespace std;
COwad::COwad()
{
x=rand()%26;
y=rand()%26;
symbol='$';
isAlive=true;
}
COwad::COwad(int xp, int yp, char symb, bool isAl)
{
x=xp;
y=yp;
symbol=symb;
isAlive=isAl;
}
COwad::~COwad()
{
}
int COwad::getX()
{
return x;
}
int COwad::getY()
{
return y;
}
double COwad::getSymbol()
{
return symbol;
}
bool COwad::getIsAlive()
{
return isAlive;
}
void COwad::krok(int kierunek, bool czySzybko)
{
x=rand()%2;
y=rand()%2;
switch (x)
{
case 0: x+=1;
break;
case 1: x-=1;
break;
case 2: x=x;
}
switch (y)
{
case 0: y+=1;
break;
case 1: y-=1;
break;
case 2: y=y;
}
}
bool COwad::operator==(const COwad& arg2)
{
if ((this->x==arg2.x) && (this->y==arg2.x))
return true;
else
return false;
}
void COwad::setIsDead()
{
}
main.cpp
#include <iostream>
#include <conio.h>
#include <cstdlib>
#include <ctime>
#include "CBiedronka.h"
#include "COwad.h"
#include "CGra.h"
using namespace std;
int main()
{
srand(time(NULL));
CGra arek;
arek.graj();
return 0;
}
Pozdrawiam i proszę o jak najszybszą pomoc.
- bledy.jpg (242 KB) - ściągnięć: 173
- zajecia4.pdf (134 KB) - ściągnięć: 177