Function void Data, class Field. When I run the programm nothing happens when i click enter, square(class Chose moves, figures stay on there place)
class Figure and her "children" classes Pawns, Quenn and etc.
...........
class Cell
{
public:
int x,y,size,color;
Figure *figure;
public:
Cell(int cx=0,int cy=0,int cl=LIGHTGRAY,int csize=40)
{
x=cx;
y=cy;
color=cl;
size=csize;
figure=NULL;
}
void showC()
{
setfillstyle(1,color);
bar(x,y,x+size,y+size);
if (figure)
figure->draw();
}
};
struct data
{
int code,i,j,desti,destj;
};
class Field
{
protected:
int x,y,size;
Cell f[8][8];
Chose *ramka;
public:
Field(int fx,int fy,int fsize=400)
{
x=fx;
y=fy;
size=fsize;
int sc=size/8;
if(size%8!=0)
size=sc*8;
ramka=NULL;
for(int i=0;i<8;i++)
{
for(int j=0;j<8;j++)
{
if((i+j)%2==0)
f[i][j]=Cell(j*sc,i*sc,LIGHTGRAY,sc);
else
f[i][j]=Cell(j*sc,i*sc,DARKGRAY,sc);
}
}
f[0][0].figure=new Rook(BLACK,20,15);
f[0][1].figure=new Horse(BLACK,70,15);
f[0][2].figure=new Bishop(BLACK,120,15);
f[0][3].figure=new King(BLACK,170,15);
f[0][4].figure=new Queen(BLACK,220,15);
f[0][5].figure=new Bishop(BLACK,270,15);
f[0][6].figure=new Horse(BLACK,320,15);
f[0][7].figure=new Rook(BLACK,370,15);
f[7][0].figure=new Rook(WHITE,20,365);
f[7][1].figure=new Horse(WHITE,70,365);
f[7][2].figure=new Bishop(WHITE,120,365);
f[7][3].figure=new Queen(WHITE,170,365);
f[7][4].figure=new King(WHITE,220,365);
f[7][5].figure=new Bishop(WHITE,270,365);
f[7][6].figure=new Horse(WHITE,320,365);
f[7][7].figure=new Rook(WHITE,370,365);
for (int i=0;i<8;i++)
{
x=20+sc*i;
f[1][i].figure=new Pawn(BLACK,x,65);
f[6][i].figure=new Pawn(WHITE,x,315);
}
ramka=new Chose(5,5,45,45);
}
void Data(data &mes)
{
switch(mes.code)
{
case 0: if(f[rama->y / rama->size][rama->x / rama->size].figure!=NULL)
{
mes.i=x;
mes.j=y;
mes.code=1; break;
}
case 1: if(mes.code==1 && getch()==13)
{
mes.desti=x;
mes.destj=y;
mes.code=2; break;
}
case 2: if(f[mes.j / 50][mes.i / 50].figure->IsLegalMove(mes.i,mes.j,mes.desti,mes.destj)==1 || f[mes.j / 50][mes.i / 50].figure->firstmove(mes.i,mes.j,mes.desti,mes.destj)==1)
mes.code=3; break;
}
if(mes.code==3 && f[mes.j / 50][mes.i / 50].figure)
{
delete f[mes.j / 50][mes.i / 50].figure; // delete original and destination cells
delete f[mes.destj / 50][mes.desti / 50].figure;
delete [];
f[mes.destj / 50][mes.desti / 50].figure; //put new pointer
f[mes.j / 50][mes.i / 50].showC();
f[mes.destj / 50][mes.desti / 50].showC(); // redraw 2 cells
}
}
void Show()
{
x=0;y=0;
rectangle(x,y,x+size,y+size);
for(int i=0;i<8;i++)
{
for(int j=0;j<8;j++)
f[i][j].showC();
}
}
void Step(data &mes)
{
switch(char c=getch())
{
case 0: k=5; break;
case 80: k=0;rama->move(k); break;
case 72: k=1;rama->move(k); break;
case 77: k=2;rama->move(k); break;
case 75: k=3;rama->move(k); break;
case 27: k=4; break;
case 13: if (mes.code!=1) mes.code=0; break;
}
}
};
int main()
{
initwindow(400,400);
Field desk(0,0,400);
desk.Show();
data mes;
Chose object=Chose(5,5,45,45);
object.dChose();
while(k!=4)
{
desk.Step(mes);
}
getch();
}

New Topic/Question
Reply


MultiQuote




|