*/
Know a good article or link that we're missing? Submit it!
*/

View derr\GAME.CPP

Chess in c programming using graphics v1.0

Submitted By: redrickorange
Rating: starstarstarstar (Rate It)


/*Project Name:-Chess Mania                                  */
#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <ctype.h>
#include<dos.h>

struct game{
int cp[8][8][2];
int kingp[3][3];
int onep[8][8],turn;
int twop[8][8];
int checked,checkmate;
};

game n;
int p[4],goon=1,c=1;
int po[8][2];

void ffp(int x,int y)
{
floodfill(25+x,30+y,15);
floodfill(25+x,37+y,15);
floodfill(25+x,44+y,15);     }

void ffk(int x,int y)
{
   floodfill(25+x,40+y,15);
   floodfill(25+x,3+y,15);   }

void ffc(int x,int y)
{  floodfill(25+x,25+y,15)}

void ffcam(int x,int y)
{
floodfill(25+x,13+y,15);
floodfill(25+x,20+y,15);
floodfill(23+x,28+y,15);
floodfill(25+x,40+y,15);
floodfill(25+x,47+y,15);    }

void ffq(int x,int y)
{
 floodfill(25+x,7+y,15);
 floodfill(25+x,12+y,15);
 floodfill(25+x,22+y,15);
 floodfill(25+x,24+y,15);
 floodfill(25+x,30+y,15);   }

void ffh(int x,int y)
{  floodfill(25+x,45+y,15);
}

void drawpawn(int x,int y)
{
circle(25+x,30+y,5);
line(15+x,35+y,35+x,35+y);
line(15+x,35+y,15+x,38+y);
line(35+x,35+y,35+x,38+y);
line(15+x,38+y,35+x,38+y);
arc(25+x,50+y,0,180,12);
line(13+x,50+y,37+x,50+y)}

void drawking(int x,int y)
{
   line(25+x,0+y,22+x,2+y);
   line(25+x,0+y,28+x,2+y);
   line(22+x,2+y,25+x,5+y);
   line(28+x,2+y,25+x,5+y);
   line(25+x,5+y,15+x,9+y);
   line(25+x,5+y,35+x,9+y);
   line(15+x,9+y,21+x,15+y);
   line(35+x,9+y,29+x,15+y);
   line(21+x,15+y,15+x,18+y);
   line(29+x,15+y,35+x,18+y);
   line(15+x,18+y,15+x,20+y);
   line(35+x,18+y,35+x,20+y);
   line(15+x,20+y,20+x,20+y);
   line(35+x,20+y,30+x,20+y);
   line(20+x,20+y,18+x,40+y);
   line(30+x,20+y,32+x,40+y);
   line(18+x,40+y,10+x,45+y);
   line(32+x,40+y,40+x,45+y);
   line(10+x,45+y,13+x,48+y);
   line(40+x,45+y,37+x,48+y);
   line(13+x,48+y,10+x,50+y);
   line(37+x,48+y,40+x,50+y);
   line(10+x,50+y,40+x,50+y); }

void drawcastle(int x,int y)
{
line(15+x,50+y,35+x,50+y);
line(15+x,50+y,15+x,47+y);
line(35+x,50+y,35+x,47+y);
line(15+x,47+y,18+x,47+y);
line(35+x,47+y,32+x,47+y);
line(18+x,47+y,20+x,27+y);
line(32+x,47+y,30+x,27+y);
line(20+x,27+y,15+x,27+y);
line(30+x,27+y,35+x,27+y);
line(15+x,27+y,15+x,20+y);
line(35+x,27+y,35+x,20+y);
line(15+x,20+y,20+x,20+y);
line(35+x,20+y,30+x,20+y);
line(20+x,20+y,20+x,25+y);
line(30+x,20+y,30+x,25+y);
line(20+x,25+y,23+x,25+y);
line(30+x,25+y,27+x,25+y);
line(23+x,25+y,23+x,20+y);
line(27+x,25+y,27+x,20+y);
line(23+x,20+y,27+x,20+y);   }

void drawhorse(int x,int y)
{
line(13+x,50+y,37+x,50+y);
line(13+x,50+y,22+x,34+y);
line(37+x,50+y,32+x,26+y);
line(22+x,35+y,8+x,31+y);
line(32+x,26+y,36+x,23+y);
line(36+x,23+y,31+x,20+y);
line(31+x,20+y,28+x,15+y);
line(28+x,15+y,25+x,20+y);
line(25+x,20+y,22+x,15+y);
line(22+x,15+y,19+x,20+y);
line(19+x,20+y,8+x,27+y);
line(8+x,27+y,15+x,29+y);
line(15+x,29+y,8+x,31+y);
circle(25+x,25+y,1);        }

void drawcamel(int x,int y)
{
circle(25+x,13+y,2);
line(24+x,14+y,18+x,20+y);
line(26+x,14+y,32+x,20+y);
line(18+x,20+y,22+x,27+y);
line(32+x,20+y,28+x,27+y);
line(22+x,27+y,28+x,27+y);
line(22+x,27+y,22+x,30+y);
line(28+x,27+y,28+x,30+y);
line(22+x,30+y,28+x,30+y);
line(22+x,30+y,15+x,45+y);
line(28+x,30+y,35+x,45+y);
line(15+x,45+y,35+x,45+y);
line(15+x,45+y,15+x,50+y);
line(35+x,45+y,35+x,50+y);
line(15+x,50+y,35+x,50+y)}

void drawqueen(int x,int y)
{
 line(10+x,50+y,40+x,50+y);
 line(10+x,50+y,10+x,45+y);
 line(40+x,50+y,40+x,45+y);
 line(10+x,45+y,15+x,45+y);
 line(40+x,45+y,35+x,45+y);
 line(15+x,45+y,20+x,40+y);
 line(35+x,45+y,30+x,40+y);
 line(20+x,40+y,20+x,25+y);
 line(30+x,40+y,30+x,25+y);
 line(15+x,25+y,35+x,25+y);
 line(15+x,25+y,15+x,23+y);
 line(35+x,25+y,35+x,23+y);
 line(15+x,23+y,35+x,23+y);
 line(15+x,23+y,20+x,20+y);
 line(35+x,23+y,30+x,20+y);
 line(20+x,20+y,30+x,20+y);
 line(20+x,20+y,20+x,15+y);
 line(30+x,20+y,30+x,15+y);
 line(20+x,15+y,15+x,13+y);
 line(30+x,15+y,35+x,13+y);
 line(15+x,13+y,15+x,10+y);
 line(35+x,13+y,35+x,10+y);
 line(15+x,10+y,20+x,13+y);
 line(35+x,10+y,30+x,13+y);
 line(20+x,13+y,24+x,8+y);
 line(30+x,13+y,26+x,8+y);
 circle(25+x,7+y,2);        }

void drawcoin(int x,int y,int i,int j,int f)
{
         if(n.cp[i][j][1]==1)
            { drawpawn(x,y);
                if(f)
                  ffp(x,y)}
         if(n.cp[i][j][1]==2)
            { drawcastle(x,y);
              if(f)
                 ffc(x,y);
                 }
         if(n.cp[i][j][1]==3)
           { drawhorse(x,y);
                if(f)
                ffh(x,y)}
         if(n.cp[i][j][1]==4)
           { drawcamel(x,y);
             if(f)
              ffcam(x,y);}
         if(n.cp[i][j][1]==5)
          {  drawqueen(x,y);
             if(f)
               ffq(x,y); }
         if(n.cp[i][j][1]==6)
          {  drawking(x,y);
            if(f)
              ffk(x,y); }
}

void setcoins()
{
int i,j,c,x,y;
for(i=0;i<8;i++)
  for(j=0;j<8;j++)
    {    x=169+j*50;
         y=39+i*50;
    if(n.cp[i][j][0]==15&&(i+j)%2==0)//white coin and white background
      { setcolor(0);
        floodfill(x+25,y+25,15);
        drawcoin(x,y,i,j,0);
    }
    if(n.cp[i][j][0]==15&&(i+j)%2!=0)  //white coin and black background
    {  setcolor(15);
       drawcoin(x,y,i,j,1);
    }
    if(n.cp[i][j][0]==0&&(i+j)%2!=0) // black coin and black background
    {  setcolor(15);
       drawcoin(x,y,i,j,0);
    }
    if(n.cp[i][j][0]==0&&(i+j)%2==0) // black coin and white background
    {  setcolor(15);
       drawcoin(x,y,i,j,0);
       floodfill(x+5,y+5,15);
       floodfill(x+45,y+5,15);
    }
    if(n.cp[i][j][0]==-1&&(i+j)%2==0)
    { setcolor(15);
      floodfill(x+25,y+25,15);
    }
    }
}

void drawboard()
{  int i,j;
   int xmin=169,xmax=569,ymin=39,ymax=439;
   int gdriver = DETECT, gmode, errorcode;
   initgraph(&gdriver, &gmode, "\\tc\\bgi\\");
   errorcode = graphresult();
   if (errorcode != grOk)
   {
      printf("Graphics error: %s\n", grapherrormsg(errorcode));
      printf("Press any key to halt:");
      getch();
      exit(1);
   }

     for(i=ymin;i<=ymax;i+=50)
          line(xmin,i,xmax,i);
     for(i=xmin;i<=xmax;i+=50)
          line(i,ymin,i,ymax);
  outtextxy(589,64,"eight");
   outtextxy(589,114,"seven");
    outtextxy(589,164,"six");
     outtextxy(589,214,"five");
      outtextxy(589,264,"four");
       outtextxy(589,314,"three");
          outtextxy(589,364,"two");
           outtextxy(589,414,"one");
           outtextxy(544,449,"H");
        outtextxy(494,449,"G");
       outtextxy(444,449,"F");
    outtextxy(394,449,"E");
   outtextxy(344,449,"D");
  outtextxy(294,449,"C");
 outtextxy(244,449,"B");
outtextxy(194,449,"A");
 setcoins();
 if(n.turn==1)
   c=8;
  else
   c=1;
  setfillstyle(CLOSE_DOT_FILL,c);
    floodfill(50,50,15);

}

void givevalue()
{
int i,j;
for(i=0;i<8;i++)          //making all null
  for(j=0;j<8;j++)
      n.cp[j][i][0]=-1;
for(i=0;i<8;i++)           //giving color to coins
  for(j=0;j<2;j++)
     n.cp[j][i][0]=0;

for(i=0;i<8;i++)
  for(j=6;j<8;j++)
     n.cp[j][i][0]=15;
for(i=0;i<8;i++)         // placing the coins on the board
  for(j=0;j<8;j++)         //starting positons
    { n.cp[j][i][1]=-1;
      if(j==1||j==6)
        n.cp[j][i][1]=1;
      if((j==0||j==7)&&(i==0||i==7))
         n.cp[j][i][1]=2;
      if((j==0||j==7)&&(i==1||i==6))
         n.cp[j][i][1]=3;
      if((j==0||j==7)&&(i==2||i==5))
         n.cp[j][i][1]=4;
      if((j==0||j==7)&&i==3)
         n.cp[j][i][1]=5;
      if((j==0||j==7)&&i==4)
         n.cp[j][i][1]=6;
    }
}
void open()
{
        FILE *fp;
        fp=fopen("save.txt","r");
         printf("\n\n\t\t\t");
        if(fp==NULL)
         cprintf("Cannot open file");
        else
        { fread(&n,sizeof(n),1,fp);
          drawboard();
        }
}

void leaf(int f)
{
 int gdriver = DETECT, gmode, errorcode,i;
 initgraph(&gdriver, &gmode, "\\tc\\bgi\\");
    arc(370,540,120,160,330);
    arc(260,540,20,60,330);
//first leaf
    line(80,385,90,315);
    line(90,315,95,330);
    line(95,330,120,275);
    line(120,275,120,293);
    line(120,293,155,250);
    line(155,250,150,270);
    line(150,270,187,233);
    line(187,233,183,250);
    line(183,250,251,226);
    line(251,226,196,277);
    line(196,277,208,280);
    line(208,280,164,301);
    line(164,301,177,305);
    line(177,305,135,330);
    line(135,330,148,331);
    line(148,331,113,356);
    line(113,356,126,356);
    line(126,356,80,383);
//right leaf
                       line(550,380,500,360);
                       line(500,360,515,357);
                       line(515,357,470,333);
                       line(470,333,483,332);
                       line(483,332,440,304);
                       line(440,304,454,304);
                         line(454,304,414,277);
                       line(414,277,432,279);
                       line(432,279,372,225);
                       line(372,225,445,245);
                       line(445,245,438,230);
                       line(438,230,478,266);
                       line(478,266,473,250);
                       line(473,250,511,298);
                       line(511,298,508,283);
                       line(508,283,535,331);
                       line(535,331,535,315);
                       line(535,315,550,380);
                        setfillstyle(3,2);
                         floodfill(440,250,15);
                    floodfill(90,350,15);
               //king
   int x=79,y=50,x1=3,y1=4;
   line((25+x)*x1,(0+y)*y1,(25+x)*x1,(50+y)*y1);
   line((25+x)*x1,(0+y)*y1,(22+x)*x1,(2+y)*y1);
   line((25+x)*x1,(0+y)*y1,(28+x)*x1,(2+y)*y1);
   line((22+x)*x1,(2+y)*y1,(25+x)*x1,(5+y)*y1);
   line((28+x)*x1,(2+y)*y1,(25+x)*x1,(5+y)*y1);
   line((25+x)*x1,(5+y)*y1,(15+x)*x1,(9+y)*y1);
   line((25+x)*x1,(5+y)*y1,(35+x)*x1,(9+y)*y1);
   line((15+x)*x1,(9+y)*y1,(21+x)*x1,(15+y)*y1);
   line((35+x)*x1,(9+y)*y1,(29+x)*x1,(15+y)*y1);
   line((21+x)*x1,(15+y)*y1,(15+x)*x1,(18+y)*y1);
   line((29+x)*x1,(15+y)*y1,(35+x)*x1,(18+y)*y1);
   line((15+x)*x1,(18+y)*y1,(15+x)*x1,(20+y)*y1);
   line((35+x)*x1,(18+y)*y1,(35+x)*x1,(20+y)*y1);
   line((15+x)*x1,(20+y)*y1,(20+x)*x1,(20+y)*y1);
   line((35+x)*x1,(20+y)*y1,(30+x)*x1,(20+y)*y1);
   line((20+x)*x1,(20+y)*y1,(18+x)*x1,(40+y)*y1);
   line((30+x)*x1,(20+y)*y1,(32+x)*x1,(40+y)*y1);
   line((18+x)*x1,(40+y)*y1,(10+x)*x1,(45+y)*y1);
   line((32+x)*x1,(40+y)*y1,(40+x)*x1,(45+y)*y1);
   line((10+x)*x1,(45+y)*y1,(13+x)*x1,(48+y)*y1);
   line((40+x)*x1,(45+y)*y1,(37+x)*x1,(48+y)*y1);
   line((13+x)*x1,(48+y)*y1,(10+x)*x1,(50+y)*y1);
   line((37+x)*x1,(48+y)*y1,(40+x)*x1,(50+y)*y1);
   line((10+x)*x1,(50+y)*y1,(40+x)*x1,(50+y)*y1);
        setfillstyle(1,15);
   floodfill((21+x)*x1,(40+y)*y1,15);
   floodfill((23+x)*x1,(3+y)*y1,15);
    setfillstyle(CLOSE_DOT_FILL,8);
    floodfill(50,50,15);
printf("\n====================================Creators====================================");
printf("\n                       DERRICK====================SHRUTI                        ");
if(f)
{
printf("\n                       THANK YOU FOR PLAYING CHESS MANIA                        ");
printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
printf("\n================================================================================");
}
else{
printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
printf("\n================================================================================");
}      delay(3500);
       closegraph();
       }

void openmenu()
{
  clrscr();
   textcolor(CYAN + BLINK);
   printf("\n\n\n\n\n \t\t\t");
  cprintf("Welcome_to_Chess_Mania");
      textcolor(CYAN );
   printf("\n\n\t\t\t");
  cprintf("   Hit Enter to play");
  printf("\n\n\t\t\t");
  cprintf("    Hit Esc to exit");
     int a;

 if(getch()==27)
   {exit(0);
      }
 else
  {  clrscr();
     printf("\n\n");
     printf("\n\n\t\t\t");
     cprintf("Start new game hit enter");
     printf("\n\n\t\t\t");
     cprintf(" Load saved game hit L");
     printf("\n\n\t\t\t");
     cprintf("    Hit Esc to exit");