Witam, mam taki oto kod i nie wiem czym spowodowane błędy są przy kompilacji. Podsunie ktoś pomysł, ew. sam naprawi i powie o co chodziło?
// monopolyMonopol.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream>
#include <ctime>
#include <Windows.h>
#include <string.h>
enum Color{ red,yellow,blue,green,Specjal,Jail,GetCard,none};
class Card
{
public:
int money;
char* opis;
Card(int money,char* opis)
{
this->money = money;
this->opis = opis;
}
Card()
{
this->money = -200;
this->opis = "izba skarbowa jest nie ub³agana bulisz 100";
}
};
static Card cList[20];
class Gracz;
class Pole
{
public:
Color color;
char* opis;
void PayDay(Gracz *gracz);
};
class EmptySpace:Pole
{
public:
void PayDay(Gracz *gracz)
{
printf("Nic nie robisz");
}
};
class Gracz
{
public:
int money;
int pos;
int jailDay;
char name[10];
bool play;
Gracz()
{
this->money = 1000;
this->pos = 0;
this->jailDay=0;
play=true;
}
void poruszGraczem(int cpola)
{
if(pos+cpola<39)
{
pos+=cpola;
}
else
{
pos=(pos+cpola)-40;
}
}
};
class BuyAble:public Pole
{
public:
int koszt;
int domki;
Gracz* wlasciciel;
char* nazwa;
BuyAble(char* nazwa,int koszt2,Color k)
{
this->nazwa = nazwa;
this->koszt = koszt2;
this->domki = 0;
Pole::color = k;
}
bool BuyPole(Gracz &gracz)
{
if(gracz.money>koszt&&wlasciciel==NULL)
{
wlasciciel=&gracz;
wlasciciel->money-=koszt;
return true;
}
return false;
}
void buyHouse(BuyAble* wsk)
{
if(color!= Color::Specjal)
{
bool czymzoebudowac=false;
int pXout=0;
for(int i=0;i<40;i++)
{
if(wsk[i].color==color)
{
pXout++;
}
}
int thisKeeper=0;
for(int i=0;i<40;i++)
{
if(wsk[i].color==color)
{
thisKeeper++;
}
}
if( wlasciciel->money>koszt*1.5 && thisKeeper == pXout)
{
domki++;
}
}
}
void PayDay(Gracz *gracz)
{
if(wlasciciel != gracz)
{
if(wlasciciel!=NULL)
{
gracz->money-=koszt+100*domki;
wlasciciel->money+=this->koszt+100*domki;
printf("W³¹œcicielem jest gracz %s\n",wlasciciel->name);
printf("zap³aci³eœ myto w wysokosci %d\n",koszt+100*domki);
system("pause");
}
else
{
printf("Chcesz kupiæ %s za %d 1-tak;0-nie",this->nazwa,this->koszt);
int k;
std::cin>>k;
if(k==1)
{
gracz->money-=koszt;
wlasciciel = gracz;
}
}
}
else
{
bool w=true;
while(w)
{
printf("1.chcesz kupic domek\n");
printf("2.nic nie chcesz robiæ\n");
int opc;
std::cin>>opc;
if(opc==1)
{
buyHouse(this);
}
else
{
w=false;
}
}
}
}
};
class JailPole:Pole
{
public:
JailPole()
{
Pole::color = Color::Jail;
}
void PayDay(Gracz *gracz)
{
if(gracz->jailDay==0)
gracz->jailDay=2;
else
gracz->jailDay--;
}
};
class CardCarry:public Pole
{
public:
CardCarry()
{
Pole::color = Color::GetCard;
}
void PayDay(Gracz *gracz)
{
srand(time(NULL));
int r = rand()%19;
gracz->money+=cList[r].money;
printf("%s",cList[r].opis);
system("pause");
}
};
class Game
{
public:
bool Work;
void* pole[40];
Game()
{
Work=true;
}
void initCards()
{
cList[0] = Card(100,"Oplacajac zakupy w kasie wydano Ci wiecej reszty. Zyskujesz 100$.");
cList[1] = Card(-150,"Tekst1");
cList[2] = Card(50,"Tekst2");
cList[3] = Card(-50,"Tekst3");
cList[4] = Card(-100,"Tekst4");
cList[5] = Card(100,"Tekst5");
cList[6] = Card(75,"Tekst6");
cList[7] = Card(-75,"Tekst7");
cList[8] = Card(125,"Tekst8");
cList[9] = Card(125,"Tekst9");
cList[10] = Card(100,"Tekst10");
cList[11] = Card(-150,"Tekst11");
cList[12] = Card(-50,"Tekst12");
cList[13] = Card(25,"Tekst13");
cList[14] = Card(-50,"Tekst14");
cList[15] = Card(100,"Tekst15");
cList[16] = Card(50,"Tekst16");
cList[17] = Card(-150,"Tekst17");
cList[18] = Card(50,"Tekst18");
cList[19] = Card(50,"Tekst19");
}
void SetPlayerCount(int p)
{
playerCout=p;
gracze = new Gracz[p];
for(int i=0;i<p;i++)
{
printf("wprowadz nazwe gracza %d",i);
std::cin>>gracze[i].name;
}
ec=0;
initCards();
this->SetMap();
kolejka=0;
}
void Draw()
{
Update();
}
private:
int playerCout;
Gracz* gracze;
int ec;
int kolejka;
void Update()
{
if(kolejka<playerCout)
{
printf("Gracz:%s\nPortfel:%d zl\n",gracze[kolejka].name,gracze[kolejka].money);
if(gracze[kolejka].jailDay==0)
{
kostka = rand()%5;
kostka+=1;
gracze[kolejka].poruszGraczem(kostka);
switch(((Pole*)pole[gracze[kolejka].pos])->color)
{
case Color::blue:
{
((BuyAble*)pole[gracze[kolejka].pos])->PayDay(&gracze[kolejka]);
break;
}
case Color::green:
{
((BuyAble*)pole[gracze[kolejka].pos])->PayDay(&gracze[kolejka]);
break;
}
case Color::red:
{
((BuyAble*)pole[gracze[kolejka].pos])->PayDay(&gracze[kolejka]);
break;
}
case Color::yellow:
{
((BuyAble*)pole[gracze[kolejka].pos])->PayDay(&gracze[kolejka]);
break;
}
case Color::GetCard:
{
((CardCarry*)pole[gracze[kolejka].pos])->PayDay(&gracze[kolejka]);
break;
}
case Color::Specjal:
{
((BuyAble*)pole[gracze[kolejka].pos])->PayDay(&gracze[kolejka]);
break;
}
case Color::Jail:
{
((JailPole*)pole[gracze[kolejka].pos])->PayDay(&gracze[kolejka]);
break;
}
case Color::none:
{
((EmptySpace*)pole[gracze[kolejka].pos])->PayDay(&gracze[kolejka]);
break;
}
}
}else
{
printf("\nJestes w pierdlu\n");
system("pause");
gracze[kolejka].jailDay--;
}
kolejka++;
}
else
{
if(ec==playerCout-1)
{
Work = false;
for(int i=0;i<playerCout;i++)
{
if(gracze[i].play==true)
printf("Win :%s\n",gracze[i]);
system("pause");
break;
}
}
for(int i=0;i<playerCout;i++)
{
if(gracze[i].money<0 && gracze[i].play==true)
{
ec++;
printf("Gracz %s zostal wyeliminowany",gracze[i].name);
gracze[i].play=false;
}
}
kolejka=0;
}
Sleep(500);
system("cls");
}
int kostka;
void SetMap()
{
pole[1] = new BuyAble("Pole1",60,Color::red);
pole[2] = new CardCarry();
pole[3] = new BuyAble("Pole2",60,Color::red);
pole[4] = new BuyAble("Pole po podatku",80,Color::red);
pole[5] = new BuyAble("PoleSpecjal1",200,Color::Specjal);
pole[6] = new BuyAble("Pole3",100,Color::red);
pole[7] = new CardCarry();
pole[8] = new BuyAble("Pole4",100,Color::red);
pole[9] = new BuyAble("Pole5",120,Color::red);
pole[10] = new JailPole();
pole[11] = new BuyAble("Pole6",140,Color::yellow);
pole[12] = new BuyAble("PoleSpecjal2",150,Color::Specjal);
pole[13] = new BuyAble("Pole7",140,Color::yellow);
pole[14] = new BuyAble("Pole8",160,Color::yellow);
pole[15] = new BuyAble("PoleSpecjal3",200,Color::Specjal);
pole[16] = new BuyAble("Pole9",180,Color::yellow);
pole[17] = new CardCarry();
pole[18] = new BuyAble("Pole10",180,Color::yellow);
pole[19] = new BuyAble("Pole11",200,Color::yellow);
pole[20] = new BuyAble("Pole20",180,Color::red);
pole[21] = new BuyAble("Pole12",220,Color::blue);
pole[22] = new CardCarry();
pole[23] = new BuyAble("Pole13",220,Color::blue);
pole[24] = new BuyAble("Pole14",240,Color::blue);
pole[25] = new BuyAble("PoleSpecjal4",200,Color::Specjal);
pole[26] = new BuyAble("Pole15",260,Color::blue);
pole[27] = new BuyAble("Pole16",260,Color::blue);
pole[28] = new BuyAble("PoleSpecjal5",150,Color::Specjal);
pole[29] = new BuyAble("Pole17",280,Color::blue);
pole[30] = new JailPole();
pole[31] = new BuyAble("Pole18",300,Color::green);
pole[32] = new BuyAble("Pole19",300,Color::green);
pole[33] = new CardCarry();
pole[34] = new BuyAble("Pole20",320,Color::green);
pole[35] = new BuyAble("PoleSpecjal6",200,Color::Specjal);
pole[36] = new CardCarry();
pole[37] = new BuyAble("Pole21",350,Color::green);
pole[38] = new BuyAble("Pole22",400,Color::green);
pole[39] = new BuyAble("Pole23",400,Color::green);
}
};
int _tmain(int argc, _TCHAR* argv[])
{
Game game;
std::cout<<"Podaj liczbe graczy:";
int l;
std::cin>>l;
game.SetPlayerCount(l);
while(game.Work)
{
game.Draw();
}
return 0;
}
zmniejszenie wcięć w kodzie - fp