Napisałem prościutką grę (wszystko działało) i jako zadanie dodatkowe dostałem zamknąć całość w jednej klasie tak aby sama gra była obiektem. Niestety program się nie kompiluje wywalając error z tytułu. Nie wiem czy w ogóle dobrze do tego podchodze bo pomysłem było zwyczjane wstawienie działającego kodu jako metody klasy gra. Jak to rozwiązać?
Główny plik projektu:
#include <cstdlib>
#include <iostream>
#include <windows.h>
#include "pole.h"
#include "niespodzianka.h"
#include "kara.h"
#include "dopalacz.h"
#include "zwykle.h"
using namespace std;
void gotoxy(int x, int y)
{
COORD cord;
cord.X = x;
cord.Y = y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), cord);
}
void intro() {
cout << endl << endl << endl << " Alkochinczyk" << endl << endl;
cout << " wersja 0.1 BETA";
cout << endl << endl << " Trwa wczytywanie tekstur" << endl;
for (int pauza=1;pauza<=80;pauza++)
{
cout << ".";
Sleep(50);
}
system("cls");
}
#include "gra.h"
int main()
{
gra nowa;
nowa.gra();
return 0;
}
Klasa gra: (Klasy dopalacz pole itp to klasy odpowiadające za obsługę pól których nie modyfikowałem względem działającego porgramu)
#ifndef _gra_h_
#define _gra_h_
class gra
{
public:
pole* p[50];
int a=1, b=1, c=1, d=1;
int gra()
{
int zy=0,i,j,zx=0,pomoc=0,kostka, wybor=1, pomoc2=1;
char nazwa1[30], nazwa2[30], nazwa3[30], nazwa4[30];
cout << "Podaj nazwy graczy (maks 30 znakow)." << endl << endl; // wprowadzanie nazw graczy
cout << "Gracz A: "; cin >> nazwa1;
cout << endl << "Gracz B: "; cin >> nazwa2;
cout << endl << "Gracz C: "; cin >> nazwa3;
cout << endl << "Gracz D: "; cin >> nazwa4;
system("cls");
poleZwykle* ppocz = new poleZwykle;
poleZwykle* pkon = new poleZwykle;
for(i=2;i<50;i++) // Nadanie polom konkretnych typow
{
if (i%10==0)
{
poleZwykle* pz = new poleZwykle;
p[i]=pz;
}
else if (i%10==9)
{
poleKara* pk = new poleKara;
p[i]=pk;
}
else if (i%10==8)
{
poleDopalacz* pd = new poleDopalacz;
p[i]=pd;
}
else
{
poleNiespodzianka* pn = new poleNiespodzianka;
p[i]=pn;
}
}
p[1]=ppocz;
p[50]=pkon;
p[1]->pocz(); // ustawienie pionkow na pierwszysm polu
for (i=1;i<51;i++) // wpisywanie wartosci pol
{
p[i]->wprowWartosc(i);
}
for(j=1;j<6;j++) // ustalanie polozenia poszczegolnych pol
{
for (i=1;i<11;i++)
{
p[i+pomoc]->wprowX(zx);
zx=zx+5;
p[i+pomoc]->wprowY(zy);
}
zy=zy+4;
zx=0;
pomoc=pomoc+10;
}
int kolejka=1; // kolejka jest zmienna warunkujaca ktory pionek sie rusza
while(!wybor==0) // glowna petla programu
{
srand(time(NULL));
kostka=rand() % 6;
if (kolejka%4==1) // wybór który gracz sie przesuwa i kosekwencje
{
p[a]->wprowP1(0); // pole na ktorym stal jest informowane ze pionek juz na nim nie stoi
a=a+kostka+1; // zmienna która pamięta na którym polu jest pionek.
if (a>=50)
{
system("cls");
gotoxy(15,8);
cout << nazwa1 << " WYGRYWA!!!!!!!!!!!!";
gotoxy(15,10);
cout << "Dziekujemy za gre! Na zdrowie!";
gotoxy(0,20);
system("pause");
return 0;
}
p[a]->wprowP1(1); // nowe pole jest informowane ze ztanal na nim pionek.
p[a]->zadanie(); // wyswietlane jest zadanie lub informacja
p[a]->dzialanie(1); // wykonywane jest dzialanie (jesli zachodzi)
gotoxy(55,15); // wyswietlenie informacji o kolejce graczy
cout << "Aktualna kolejka " << nazwa1;
gotoxy(55,16);
cout << "Nastepny gracz " << nazwa2;
}
else if (kolejka%4==2)
{
p[b]->wprowP2(0);
b=b+kostka+1;
if (b>=50)
{
system("cls");
gotoxy(15,8);
cout << nazwa2 << " WYGRYWA!!!!!!!!!!!!";
gotoxy(15,10);
cout << "Dziekujemy za gre! Na zdrowie!";
gotoxy(0,20);
system("pause");
return 0;
}
p[b]->wprowP2(1);
p[b]->zadanie();
p[b]->dzialanie(2);
gotoxy(55,15);
cout << "Aktualna kolejka " << nazwa2;
gotoxy(55,16);
cout << "Nastepny gracz " << nazwa3;
}
else if (kolejka%4==3)
{
p[c]->wprowP3(0);
c=c+kostka+1;
if (c>=50)
{
system("cls");
gotoxy(15,8);
cout << nazwa3 << " WYGRYWA!!!!!!!!!!!!";
gotoxy(15,10);
cout << "Dziekujemy za gre! Na zdrowie!";
gotoxy(0,20);
system("pause");
return 0;
}
p[c]->wprowP3(1);
p[c]->zadanie();
p[c]->dzialanie(3);
gotoxy(55,15);
cout << "Aktualna kolejka " << nazwa3;
gotoxy(55,16);
cout << "Nastepny gracz " << nazwa4;
}
else
{
p[d]->wprowP4(0);
d=d+kostka+1;
if (d>=50)
{
system("cls");
gotoxy(15,8);
cout << nazwa4 << " WYGRYWA!!!!!!!!!!!!";
gotoxy(15,10);
cout << "Dziekujemy za gre! Na zdrowie!";
gotoxy(0,20);
system("pause");
return 0;
}
p[d]->wprowP4(1);
p[d]->zadanie();
p[d]->dzialanie(0);
gotoxy(55,15);
cout << "Aktualna kolejka " << nazwa4;
gotoxy(55,16);
cout << "Nastepny gracz " << nazwa1;
}
kolejka=kolejka+1; // wyswietlenie pol
for (i=1;i<51;i++)
{
p[i]->rysuj();
}
gotoxy(0,23); // wyswietlenie reszty danych
cout << "Alkochinczyk wersja o.1 BeTa";
gotoxy(55,2);
cout << "Kostka: " << kostka+1;
gotoxy(55,4);
cout << "0 - wyjscie";
gotoxy(55,5);
cout << "1 - dalej";
gotoxy(55,6);
cout << "Wybor: ";
cin >> wybor;
system("cls");
}
return 0;
};
#endif