Monday, April 2, 2012

Chess for two humans

Chess for two humans

#include<stdio.h>
#include<conio.h>
#include<graphics.h>
void blk(int,int);
void display();
//enum bool{TRUE,FALSE};
/*void main()                   //MAIN FUNCTION
{
display();
getch();
} */
void display()             //DISPLAY TO SHOW THE BOARD
{
int gd=DETECT,gm,i,j,l,m,b;
char pattern[]={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF};
int arrodd[32][2]={ {0,0},{100,0},{200,0},{300,0},{50,50},{150,50}
          ,{250,50},{350,50},{0,100},{100,100},{200,100},{300,100}
          ,{50,150},{150,150},{250,150},{350,150},{0,200},{100,200}
          ,{200,200},{300,200},{50,250},{150,250},{250,250},{350,250},
          {0,300},{100,300},{200,300},{300,300},{50,350},{150,350},
          {250,350},{350,350} };
int
arrevn[33][2]={{50,0},{150,0},{250,0},{350,0},{0,50},{100,50},{200,50},
            {300,50},{50,100},{150,100},{250,100},{350,100},{0,150},
            {100,150},{200,150},{300,150},{50,200},{150,200},{250,200},
            {350,200},{0,250},{100,250},{200,250},{300,250},{50,300},
            {150,300},{250,300},{350,300},{0,350},{100,350},{200,350},
            {300,350}};


clrscr();
initgraph(&gd,&gm,"");
for(i=0;i<=400;i=i+50)  //to draw vertical lines of the chess board.
{
line(i,0,i,400);
}
for(j=0;j<=400;j=j+50)  //to draw the horizontal lines of the chess
board.
{
line(0,j,400,j);
}
blk(420,0);
blk(420,250);
line(0,430,0,460);   //to draw the display at the bottom
line(0,430,400,430);
line(0,460,400,460);
line(400,430,400,460);
settextstyle(7,HORIZ_DIR,3);
setfillpattern(&pattern,GREEN);
for(b=0;b<=31;b++)
{
bar(arrodd[b][0],arrodd[b][1],arrodd[b][0]+50,arrodd[b][1]+50);
rectangle(arrodd[b][0],arrodd[b][1],arrodd[b][0]+50,arrodd[b][1]+50);
}
setfillpattern(&pattern,DARKGRAY);
for(m=0;m<=31;m++)
{
bar(arrevn[m][0],arrevn[m][1],arrevn[m][0]+50,arrevn[m][1]+50);
rectangle(arrevn[m][0],arrevn[m][1],arrevn[m][0]+50,arrevn[m][1]+50);
}
}
 void blk(int q,int r)
{
int y,z;
for(y=q;y<=(q+200);y=y+50)
{ line(y,r,y,r+200);}
for(z=r;z<=(r+200);z=z+50)
{ line(q,z,q+200,z);}
}



//Source file//
#include<akhchs.c>      //we used akhchs.c as header file
#include<stdio.h>
#include<conio.h>
#include<dos.h>
char pos[8][8],color[8][8];
void assign(char*,char*);
struct block{                //structure for every block
         int curx,cury;
         char clr,blkcolor;
        };
union REGS i,o;                     //for hardware interaction
char getblkcolor(int,int,int,int,char); //functions prototype
char chkpawnmov(struct block* selected,int x3,int y3);
char chkrookmov(struct block* selected,int x3,int y3);
char chkknightmov(struct block* selected,int x3,int y3);
char chkbishopmov(struct block* selected,int x3,int y3);
char chkqueenmov(struct block* selected,int x3,int y3);
char chkkingmov(struct block* selected,int x3,int y3);
void checkpwn(int,int);
void main()
{
int i1,j1,button,x,y,x1,y1,x2,y2,x3,y3,ch,i=0,j=0,z=1,turn=0;
struct block
*selected,pw[8],pb[8],rookw[2],rookb[2],bishopw[2],bishopb[2];
struct block kingw,kingb,queenw,queenb,knightw[2],knightb[2];
char id,nwblkclr,move='i';
assign(pos,color);
clrscr();
display();                            //for showing chess board
design();
setspare();               //for drawing rook etc.
setposw(pw);                        //sets position of black and
setposb(pb);                        //white pawns with color
setposrw(rookw,bishopw,knightw,&kingw,&queenw);//sets position of
whites
setposrb(rookb,bishopb,knightb,&kingb,&queenb);//sete position of
blacks
//restrictmouseptr(0,0,400,400);     //restricts pointer of mouse in
the
area specified there.
showmouseptr();
while(z)
{
i=i+1;
setcolor(WHITE);
if(turn%2==0)    //means white's turn
 outtextxy(100,430,"white's turn");
else if(turn%2!=0)        //means black's turn
 outtextxy(100,430,"black's turn");
while(i)
    {
     if(kbhit())
      {
      ch=getch();
      if(ch=='
')                //escape at pressing enter.
       exit(0);
      }
     getmousepos(&button,&x,&y);  //gets click position of mouse
     if((button== 001))
     {
       sound(1000);
       i=i-1;
       delay(50);
       nosound();
       delay(500);
     }
    }
     x1=relposx(x)/50;
     y1=relposy(y)/50;
     gotoxy(6,28);
     if(x1==pw[0].curx && y1==pw[0].cury )
     {  selected=&pw[0];    id='p'; }
     else if(x1==pw[1].curx && y1==pw[1].cury )
     {  selected=&pw[1];    id='p'; }
     else if(x1==pw[2].curx && y1==pw[2].cury )
     {  selected=&pw[2];    id='p';  }
     else if(x1==pw[3].curx && y1==pw[3].cury )
     {  selected=&pw[3];    id='p';  }
     else if(x1==pw[4].curx && y1==pw[4].cury )
     {  selected=&pw[4];    id='p';  }
     else if(x1==pw[5].curx && y1==pw[5].cury )
     {  selected=&pw[5];    id='p';  }
     else if(x1==pw[6].curx && y1==pw[6].cury )
     {  selected=&pw[6];    id='p';  }
     else if(x1==pw[7].curx && y1==pw[7].cury )
     {  selected=&pw[7];    id='p';  }
     else if(x1==pb[0].curx && y1==pb[0].cury )
     {  selected=&pb[0];    id='p';  }
     else if(x1==pb[1].curx && y1==pb[1].cury )
     {  selected=&pb[1];    id='p';  }
     else if(x1==pb[2].curx && y1==pb[2].cury )
     {  selected=&pb[2];    id='p';  }
     else if(x1==pb[3].curx && y1==pb[3].cury )
     {  selected=&pb[3];    id='p';  }
     else if(x1==pb[4].curx && y1==pb[4].cury )
     {  selected=&pb[4];    id='p';  }
     else if(x1==pb[5].curx && y1==pb[5].cury )
     {  selected=&pb[5];    id='p';  }
     else if(x1==pb[6].curx && y1==pb[6].cury )
     {  selected=&pb[6];    id='p';  }
     else if(x1==pb[7].curx && y1==pb[7].cury )
     {  selected=&pb[7];    id='p';  }
     else if(x1==rookw[0].curx && y1==rookw[0].cury)
     {  selected=&rookw[0];    id='r';  }
     else if(x1==rookw[1].curx && y1==rookw[1].cury)
     {  selected=&rookw[1];    id='r';  }
     else if(x1==rookb[0].curx && y1==rookb[0].cury)
     {  selected=&rookb[0];    id='r';  }
     else if(x1==rookb[1].curx && y1==rookb[1].cury)
     {  selected=&rookb[1];    id='r';  }
     else if(x1==bishopw[0].curx && y1==bishopw[0].cury)
     {  selected=&bishopw[0];id='b'; }
     else if(x1==bishopw[1].curx && y1==bishopw[1].cury)
     {  selected=&bishopw[1];id='b'; }
     else if(x1==bishopb[0].curx && y1==bishopb[0].cury)
     {  selected=&bishopb[0];id='b'; }
     else if(x1==bishopb[1].curx && y1==bishopb[1].cury)
     {  selected=&bishopb[1];id='b'; }
     else if(x1==kingw.curx && y1==kingw.cury)
     {  selected=&kingw;    id='g';  }
     else if(x1==queenw.curx && y1==queenw.cury)
     {  selected=&queenw;    id='q';  }
     else if(x1==kingb.curx && y1==kingb.cury)
     {  selected=&kingb;    id='g';  }
     else if(x1==queenb.curx && y1==queenb.cury)
     {  selected=&queenb;    id='q';  }
     else if(x1==knightw[0].curx && y1==knightw[0].cury)
     {  selected=&knightw[0];id='k'; }
     else if(x1==knightw[1].curx && y1==knightw[1].cury)
     {  selected=&knightw[1];id='k'; }
     else if(x1==knightb[0].curx && y1==knightb[0].cury)
     {  selected=&knightb[0];id='k'; }
     else if(x1==knightb[1].curx && y1==knightb[1].cury)
     {  selected=&knightb[1];id='k'; }
     if((turn%2==0 && selected->clr=='b')||(turn%2!=0 &&
selected->clr=='w'))
     exit();
     turn=turn+1;
    j=j+1;
    while(j)
    {
     if(kbhit())
      {
      ch=getch();
      if(ch=='
')                //escape at pressing enter.
       exit(0);
      }
     getmousepos(&button,&x2,&y2);  //gets click position of mouse
     if((button== 001))
     {
     sound(500);
     j=j-1;
     delay(100);
     nosound();
     delay(500);
     }
   }
   x3=relposx(x2)/50;    //gives standard x coordinate
   y3=relposy(y2)/50;    //gives standard y coordinate
   nwblkclr=getblkcolor(x1,y1,x3,y3,selected->blkcolor);//get
destination
block's color;
   gotoxy(6,28);
   bottom();  //clears bottom display
     if(id=='p')       //wheteher pawn?
     {
      move= chkpawnmov(selected,x3,y3);
       if(move=='v')
       {
       draw(x3,y3,selected,nwblkclr,'p');
       checkpwn(x3,y3);
       }
      }
    else if(id=='r')  //whether rook?
     {
       move=chkrookmov(selected,x3,y3);
       if(move=='v' )
       {
          draw(x3,y3,selected,nwblkclr,'r');
       }
     }
    else if(id=='k') //whether knight?
    {
      move= chkknightmov(selected,x3,y3);
      if(move=='v' )
      {
      draw(x3,y3,selected,nwblkclr,'k');
      }

    }
    else if(id=='b')  //whether bishop?
    {
      move=chkbishopmov(selected,x3,y3);
       if(move=='v')
       {
       draw(x3,y3,selected,nwblkclr,'b');
       }
    }
    else if(id=='q')  //whether queen?
    {
      move=chkqueenmov(selected,x3,y3);
      if(move=='v')
      draw(x3,y3,selected,nwblkclr,'q');
     }
     else if(id=='g')  //whether king?
    {
      move=chkkingmov(selected,x3,y3);
      if(move=='v')
      draw(x3,y3,selected,nwblkclr,'g');
     }
      if(move=='i') turn=turn-1;
    }
  getch();
}

getmousepos(int *button,int* x,int* y) //gets mouse position.
{
 i.x.ax=3;
 int86(0x33,&i,&o);
 *button=o.x.bx;
 *x=o.x.cx;
 *y=o.x.dx;
 return;
}

showmouseptr()                //shows pointer in graphics mode.
{
 i.x.ax=1;
 int86(0x33,&i,&o);
 return;
}

void hidemouseptr()            //hides pointer
{
i.x.ax=0;
int86(0x33,&i,&o);
return;
}
restrictmouseptr(int x1,int y1,int x2,int y2)      //restrict pointer
 {
 i.x.ax=7;
 i.x.cx=x1;
 i.x.dx=x2;
 int86(0x33,&i,&o);
 i.x.ax=8;
 i.x.cx=y1;
 i.x.dx=y2;
 int86(0x33,&i,&o);
 return;
}
setposw(struct block* pawnw)    //sete each white pawn.
{ int count,togl;
    for(count=0,togl=0;count<=7;count++,togl++)
    {
     pawnw->curx=count;
     pawnw->cury=6;
     pawnw->clr='b';
     if(togl%2==0)
     pawnw->blkcolor='g';
     else if(togl%2==1)
     pawnw->blkcolor='m';
     pawnw++;
    }
 return;
}
setposb(struct block* pawnb)    //sets each black pawn.
{
 int count,togl;
    for(count=0,togl=0;count<=7;count++,togl++)
    {
    pawnb->curx=count;
    pawnb->cury=1;
    pawnb->clr='w';
    if(togl%2==0)
    pawnb->blkcolor='m';
    else if(togl%2==1)
    pawnb->blkcolor='g';
    pawnb++;
       }
  return;
}
char chkpawnmov(struct block* selected,int x3,int y3)
{  char mov,id,c;        //checks each pawn (black and white) move.
  id=pos[x3][y3];   //anybody?
  c=color[x3][y3];    //color?
  if(selected->clr=='w')    //white pawn?
  {
     if(x3==selected->curx && y3==selected->cury+1 )            //move 1
     {     if(id=='n')           //id is none when no body is there
         mov='v';
     }
     else if( (x3==selected->curx+1 || x3==selected->curx-1) &&
y3==selected->cury+1)
     {
         if(id!='n' && c=='b')               //black present?
         {
         mov='v';
         send(id,c);
         }
     }
  }
  else if(selected->clr=='b')
 {
     if(x3==selected->curx  &&  y3==selected->cury-1)    //black and white
both
not there?
     {         if(id=='n')
            mov='v';
     }
     else if((x3==selected->curx-1 || x3==selected->curx+1) &&
y3==selected->cury-1)
     {       if(id!='n' && c=='w' )        //white there
           {
           mov='v';        //valid move
           send(id,c);
           }
     }
 }
 else
 {    //no action at invalid move.
     mov='i';
 }
 return(mov);
}
setposrw(struct block* rookw,struct block* bishopw,struct block*
knightw,struct block* kingw,struct block* queenw)
{            //it sets the white rook,knight,bishop etc.
 int i;
 rookw->curx=rookw->cury=7;
 rookw->clr='w';
 rookw->blkcolor='m';
 rookw++;
 rookw->curx=7;rookw->cury=7;
 rookw->clr='w';
 rookw->blkcolor='g';
 bishopw->curx=2;
 bishopw->cury=7;
 bishopw->clr='w';
 bishopw->blkcolor='m';
 bishopw++;
 bishopw->curx=5;
 bishopw->cury=7;
 bishopw->clr='w';
 bishopw->blkcolor='g';
 knightw->curx=1;
 knightw->cury=7;
 knightw->clr='w';
 knightw->blkcolor='g';
 knightw++;
 knightw->curx=6;
 knightw->cury=7;
 knightw->clr='w';
 knightw->blkcolor='m';
 kingw->curx=3;kingw->cury=7;
 kingw->clr='w';kingw->blkcolor='m';
 queenw->curx=4;queenw->cury=7;
 queenw->clr='w';queenw->blkcolor='g';
 return;
}
setposrb(struct block* rookb,struct block* bishopb,struct block*
knightb,struct block* kingb,struct block* queenb)
{        //it sets the current coords of black rook,bishop,knight etc.
 int i;
 rookb->curx=0;rookb->cury=0;
 rookb->clr='b';
 rookb->blkcolor='g';
 rookb++;
 rookb->curx=7;rookb->cury=0;
 rookb->clr='b';
 rookb->blkcolor='m';
 bishopb->curx=2;
 bishopb->cury=0;
 bishopb->clr='b';
 bishopb->blkcolor='g';
 bishopb++;
 bishopb->curx=5;
 bishopb->cury=0;
 bishopb->clr='b';
 bishopb->blkcolor='m';
 knightb->curx=1;
 knightb->cury=0;
 knightb->clr='b';
 knightb->blkcolor='m';
 knightb++;
 knightb->curx=6;
 knightb->cury=0;
 knightb->clr='b';
 knightb->blkcolor='g';
 kingb->curx=3;kingb->cury=0;
 kingb->clr='b';kingb->blkcolor='m';
 queenb->curx=4;queenb->cury=0;
 queenb->clr='b';queenb->blkcolor='g';
 return;
}
draw(int x3,int y3,struct block* selected,char nwblkclr,char id1)
{
  int nx3,ny3,ncx,ncy;
  nx3=x3*50; ny3=y3*50; ncx=(selected->curx)*50;
ncy=(selected->cury)*50;
 if(nwblkclr=='g')       //CLEAR NEW POSITION
 setfillpattern(pattern,GREEN);
 else if(nwblkclr=='m')
 setfillpattern(pattern,MAGENTA);
 hidemouseptr();       //necessary to avoid the effect of mouse pointer.
 bar(nx3,ny3,nx3+50,ny3+50);
 setcolor(WHITE);
 rectangle(nx3,ny3,nx3+50,ny3+50);
 if(selected->blkcolor=='g')           //CLEAR PREVIOUS POSITION
 setfillpattern(pattern,GREEN);
 else if(selected->blkcolor=='m')
 setfillpattern(pattern,MAGENTA);   //clear the previous pos.
 bar(ncx,ncy,ncx+50,ncy+50);
 setcolor(WHITE);
 rectangle(ncx,ncy,ncx+50,ncy+50);
 if(id1=='p')      //if pawn was selected then draw the pawn at new
position.
 {     if(selected->clr=='w')
     pawndraw(nx3,ny3,0);   // 0 for white.
     else if(selected->clr=='b')
     pawndraw(nx3,ny3,1);

 }
else if(id1=='r')    //if rook was selected
 {     if(selected->clr=='w')
     rookdraw(nx3,ny3,0);   // 0 for white.
    else if(selected->clr=='b')
    rookdraw(nx3,ny3,1);
 }
 else if(id1=='k')    //if knight was selected
 {      if(selected->clr=='w')
    drawknite(nx3,ny3,0);   // 0 for white.
    else if(selected->clr=='b')
    drawknite(nx3,ny3,1);
 }
 else if(id1=='b')    //if bishop was selected
 {      if(selected->clr=='w')
    drawbishop(nx3,ny3,0);   // 0 for white.
    else if(selected->clr=='b')
    drawbishop(nx3,ny3,1);
 }
 else if(id1=='g')
 {      if(selected->clr=='w')
    drawking(nx3,ny3,0);   // 0 for white.
    else if(selected->clr=='b')
    drawking(nx3,ny3,1);
 }
 else if(id1=='q')
 {      if(selected->clr=='w')
    drawqueen(nx3,ny3,0);   // 0 for white.
    else if(selected->clr=='b')
    drawqueen(nx3,ny3,1);
 }
showmouseptr();
pos[selected->curx][selected->cury]='n';
color[selected->curx][selected->cury]='n';        //welcome back  mr.
pointer.
selected->curx=x3;
selected->cury=y3;
selected->blkcolor=nwblkclr;
pos[x3][y3]=id1;
color[x3][y3]=selected->clr;
return;
}
char chkrookmov(struct block* selected,int x3,int y3)
{                //checks rook move for black and white as both have
same
moves.
 int i;
 char id,c,mov='v';
 if( (x3==selected->curx) || (y3==selected->cury) )
 {
    if(x3>selected->curx && y3==selected->cury)
    {
        for(i=selected->curx+1;i<x3;i++)
        {
             id=pos[i][y3];
//             c=color[i][y3];
             if(id!='n') //if black or white present move is invalid
             {
              mov='i';
             }
        }
    }
       else if(x3<selected->curx && y3==selected->cury)
    {
        for(i=selected->curx-1;i>x3;i--)
        {
             id=pos[i][y3];
//             c=color[i][y3];
             if(id!='n') //if black or white
             {
              mov='i';
             }
        }
    }

       else if(x3==selected->curx && y3>selected->cury)
    {
        for(i=selected->cury+1;i<y3;i++)
        {
             id=pos[x3][i];
  //             c=color[x3][i];
             if(id!='n') //if black or white
             {
              mov='i';
             }
        }
    }
       else if(x3==selected->curx && y3<selected->cury)
    {
        for(i=selected->cury-1;i>y3;i--)
        {
             id=pos[x3][i];
    //             c=color[x3][i];
             if(id!='n') //if black or white
             {
              mov='i';
             }
        }
    }
   if(mov=='v')
   {
   id=pos[x3][y3];
   c=color[x3][y3];
   if(id!='n' && c=='b' && selected->clr=='w')           //means black
at
x3,y3
   {
      mov='v';
      send(id,c);
   }
   else if(id!='n' && c=='w' && selected->clr=='b')      //means white
there
   {
      mov='v';
      send(id,c);
   }
   else if(id=='n')//none of the white or black even at x3 & y3?
     mov='v';
   else
     mov='i';
   }
   }
   else mov='i';

return(mov);
}
char chkknightmov(struct block* selected,int x3,int y3)
{
 //knight's moves are not affected if some entity lies in the way.
 //it just jumps over them.Atmost only eight moves are possible.
 int i,posk[8][2];
 char id,c,mov='i';
 posk[0][0]=selected->curx+1;
 posk[0][1]=selected->cury-2;
 posk[1][0]=selected->curx-1;
 posk[1][1]=selected->cury-2;
 posk[2][0]=selected->curx+1;
 posk[2][1]=selected->cury+2;
 posk[3][0]=selected->curx-1;
 posk[3][1]=selected->cury+2;
 posk[4][0]=selected->curx+2;
 posk[4][1]=selected->cury-1;
 posk[5][0]=selected->curx+2;
 posk[5][1]=selected->cury+1;
 posk[6][0]=selected->curx-2;
 posk[6][1]=selected->cury+1;
 posk[7][0]=selected->curx-2;
 posk[7][1]=selected->cury-1;
 for(i=0;i<=7;i++)
 {
  if(x3==posk[i][0] && y3==posk[i][1])
  {
   id=pos[x3][y3];
   c=color[x3][y3];
       if(id!='n'&& c=='b' && selected->clr=='w')
       {
        mov='v';             //means black is there.
        send(id,c);
       }
       else if(id!='n'&&c=='w' && selected->clr=='b')
       {
        mov='v';        //means white is there.
        send(id,c);
       }
       else if(id=='n')
        mov='v';        //means it is blank.
  }
 }
  return(mov);
}
char chkbishopmov(struct block* selected,int x3,int y3)
{
 int m,n,m1,n1,i,j;
 char mov,id,c;
 m=x3-selected->curx;
 n=y3-selected->cury;
 if(abs(m)==abs(n))
 {  if(m>0 && n<0)//move 1
    {    for(i=selected->curx+1,j=selected->cury-1;(i<x3 && j>y3);i=i++,j--)
        {
             id=pos[i][j];
//             c=color[i][j];
             if(id!='n')
             mov='i';
        }
    }
    if(m>0 && n>0)//move 2
    {    for(i=selected->curx+1,j=selected->cury+1;(i<x3 && j<y3);i++,j++)
        {
             id=pos[i][j];
//             c=color[i][j];
             if(id!='n')
             mov='i';
        }
    }
    if(m<0 && n<0)//move 3
    {    for(i=selected->curx-1,j=selected->cury-1;(i!=x3 && j!=y3);i--,j--)
        {
             id=pos[i][j];
//             c=color[i][j];
             if(id!='n')
             mov='i';
        }
    }
    if(m<0 && n>0)//move 4
    {     for(i=selected->curx-1,j=selected->cury+1;(i>x3 && j<y3);i--,j++)
        {
             id=pos[i][j];
//             c=color[i][j];
             if(id!='n')
             mov='i';
        }
    }
    if(mov!='i')        //..that no body is in the way,now at x3 y3?
    {
    id=pos[x3][y3];
    c=color[x3][y3];
    if(id!='n'&& c=='b')           //means black at x3,y3
    {
        if(selected->clr=='w')
        {
          mov='v';
          send(id,c);
        }
        else
          mov='i';
    }
    else if(id!='n'&& c=='w')      //means white there
    {
        if(selected->clr=='b')
        {
          mov='v';
          send(id,c);
        }
        else
        { mov='i';}

    }
    else if(id=='n')//none of the white or black even at x3 & y3?
    mov='v';
    }
 }        //means not at the x cross.
 else
 {
  mov='i';
 }
 return(mov);
}
char chkqueenmov(struct block* selected,int x3,int y3)
{
 char mov1,mov2,mov3='i',id,c;
 mov1=chkrookmov(selected,x3,y3);
 mov2=chkbishopmov(selected,x3,y3);
 if(mov1=='v' || mov2=='v')              //move is valid and color is
checked already.
 {
 mov3='v';
 }
 return(mov3);
}
char chkkingmov(struct block* selected,int x3,int y3)
{
 char id,c,mov='i';
 id=pos[x3][y3];
 c=pos[x3][y3];
 if(x3==selected->curx+1 && y3==selected->cury-1)    //move 1
 {
    if(id=='n')
    mov='v';
    else if(selected->clr=='w' && id!='n' && c=='b')//means black there.
    {
    mov='v';
    send(id,c);
    }
    else if(selected->clr=='b' && id!='n' && c=='w')//means white there.
    {
    mov='v';
    send(id,c);
    }
 }
 else if(x3==selected->curx-1 && y3==selected->cury-1)  //move 2
 {
    if(id=='n')
    mov='v';
    else if(selected->clr=='w' && id!='n' && c=='b')//means black there.
    {
    mov='v';
    send(id,c);
    }
    else if(selected->clr=='b' && id!='n' && c=='w')//means white there.
    {
    mov='v';
    send(id,c);
    }
 }
 else if(x3==selected->curx-1 && y3==selected->cury+1)  //move 3
 {
    if(id=='n')
    mov='v';
    else if(selected->clr=='w' && id!='n' && c=='b')//means black there.
    {
    mov='v';
    send(id,c);
    }
    else if(selected->clr=='b' && id!='n' && c=='w')    //means white there.
    {
    mov='v';
    send(id,c);
    }
 }
 else if(x3==selected->curx+1 && y3==selected->cury+1)  //move 4
 {
    if(id=='n' )
    mov='v';
    else if(selected->clr=='w' && id!='n' && c=='b')//means black there.
    {
    mov='v';
    send(id,c);
    }
    else if(selected->clr=='b' && id!='n' && c=='w')//means white there.
    {
    mov='v';
    send(id,c);
    }
 }
 else if(x3==selected->curx+1 && y3==selected->cury)     //move 5
 {
    if(id=='n')
    mov='v';
    else if(selected->clr=='w' && id!='n' && c=='b')//means black there.
    {
    mov='v';
    send(id,c);
    }
    else if(selected->clr=='b' && id!='n' && c=='w')    //means white there.
    {
    mov='v';
    send(id,c);
    }
 }
 else if(x3==selected->curx && y3==selected->cury-1)     //move 6
 {
    if(id=='n')
    mov='v';
    else if(selected->clr=='w' && id!='n' && c=='b')//means black there.
    {
    mov='v';
    send(id,c);
    }
    else if(selected->clr=='b' && id!='n' && c=='w')//means white there.
    {
    mov='v';
    send(id,c);
    }
 }
 else if(x3==selected->curx-1 && y3==selected->cury)     //move 7
 {
    if(id=='n')
    mov='v';
    else if(selected->clr=='w' && id!='n' && c=='b')//means black there.
    {
    mov='v';
    send(id,c);
    }
    else if(selected->clr=='b' && id!='n' && c=='w')//means white there.
    {
    mov='v';
    send(id,c);
    }
 }
 else if(x3==selected->curx && y3==selected->cury+1)     //move 8
 {
    if(id=='n')
    mov='v';
    else if(selected->clr=='w' && id!='n' && c=='b')//means black there.
    {
    mov='v';
    send(id,c);
    }
    else if(selected->clr=='b' && id!='n' && c=='w')//means white there.
    {
    mov='v';
    send(id,c);
    }
 }
 else    //means move is not valid
 { mov='i';}
 return(mov);
}
void assign(char* post,char* col)
{ int i;
  char
val1[64]={"rpnnnnprkpnnnnpkbpnnnnpbgpnnnnpqqpnnnnpgbpnnnnpbkpnnnnpkrpnnnnpr"};
  char
val2[64]={"wwnnnnbbwwnnnnbbwwnnnnbbwwnnnnbbwwnnnnbbwwnnnnbbwwnnnnbbwwnnnnbb"};
  for(i=0;i<=63;i++,post++,col++)
  {  *post=val1[i]; *col=val2[i]; }
}
void checkpwn(int x3,int y3)
{
 char a;
 a=color[x3][y3];//whether pawn is white or black?
 bottom();
 setcolor(WHITE);
 if(a=='w' && (x3>=0 && x3<=7) && y3==7)
 {
  outtextxy(100,430,"well done white..press w");
  getch();    bottom();
 }
 else if(a=='b' && (x3>=0 && x3<=7) && y3==0)
 {
 outtextxy(100,430,"well done black..press b");
 getch();     bottom();
 }
 return;
}

No comments:

Post a Comment