The Classic Game of Snake & Ladder


//http://engrngprojects.blogspot.com/




#include<stdio.h>
#include<graphics.h>
#include<conio.h></conio.h></graphics.h></stdio.h>
<!--more-->
#include<malloc.h>
#include<stdlib.h>
#include<dos.h>
#include<iostream.h>

int k=1, i, user=0, dice=0, x1=50, y1=410, x2=70, y2=410, dir1=0,
dir2=0,
ch;
int cnt1=1, cnt2=1;
void *obj1, *obj2, *o1, *o2, *dot, *back, *turn, *ready;
unsigned int size;

void ladder1()
{
int m,n;
for(m=0;m&lt;=250;m+=250)  for(n=0;n&lt;=m;n+=250)  {   setcolor(DARKGRAY);   line(53+m,57+n,55+m,55+n);   line(53+m,57+n,133+m,137+n);   line(55+m,55+n,135+m,135+n);   line(133+m,137+n,135+m,135+n);   setfillstyle(SOLID_FILL, YELLOW);   floodfill(55+m,58+n,DARKGRAY);   line(68+m,42+n,70+m,40+n);   line(68+m,42+n,148+m,122+n);   line(70+m,40+n,150+m,120+n);   line(148+m,122+n,150+m,120+n);   floodfill(70+m,43+n,DARKGRAY);   line(65+m,65+n,78+m,52+n);   line(68+m,68+n,81+m,55+n);   floodfill(79+m,54+n,DARKGRAY);   line(75+m,75+n,88+m,62+n);   line(78+m,78+n,91+m,65+n);   floodfill(89+m,64+n,DARKGRAY);   line(85+m,85+n,98+m,72+n);   line(88+m,88+n,101+m,75+n);   floodfill(99+m,74+n,DARKGRAY);   line(95+m,95+n,108+m,82+n);   line(98+m,98+n,111+m,85+n);   floodfill(109+m,84+n,DARKGRAY);   line(105+m,105+n,118+m,92+n);   line(108+m,108+n,121+m,95+n);   floodfill(119+m,94+n,DARKGRAY);   line(115+m,115+n,128+m,102+n);   line(118+m,118+n,131+m,105+n);   floodfill(129+m,104+n,DARKGRAY);   line(125+m,125+n,138+m,112+n);   line(128+m,128+n,141+m,115+n);   floodfill(139+m,114+n,DARKGRAY);  } }  void ladder2() {  int p,q=0;  for(p=0;p&lt;=180;p+=155)  {   line(100+p,330-q,140+p,290-q);   line(100+p,330-q,102+p,332-q);   line(102+p,332-q,142+p,292-q);   line(142+p,292-q,140+p,290-q);   floodfill(141+p,292-q,8);   line(115+p,345-q,155+p,305-q);   line(115+p,345-q,117+p,347-q);   line(117+p,347-q,157+p,307-q);   line(157+p,307-q,155+p,305-q);   floodfill(155+p,307-q,8);   line(112+p,322-q,125+p,335-q);   line(114+p,320-q,127+p,333-q);   floodfill(125+p,334-q,8);   line(122+p,312-q,135+p,325-q);   line(124+p,310-q,137+p,323-q);   floodfill(135+p,324-q,8);   line(132+p,302-q,145+p,315-q);   line(134+p,300-q,147+p,313-q);   floodfill(145+p,314-q,8);   q+=95;  } }  void snake1() {  int x,y=0,h=2;  for(x=0;x&lt;=200;x+=125)  {   arc(120+x,110+y,10,85,60);   arc(258+x,85+y,190,240,80);   arc(112+x,118+y,10,80,60);   arc(250+x,93+y,190,290,80);   arc(275+x,100+y,250,270,70);   line(250+x,170+y,250+x,165+y);   line(250+x,165+y,230+x,160+y);   line(230+x,160+y,218+x,155+y);   line(130+x,50+y,115+x,47+y);   line(121+x,59+y,106+x,52+y);   line(106+x,52+y,114+x,48+y);   circle(114+x,52+y,1);   setfillstyle(1,h);   floodfill(116+x,52+y,8);   y+=230; h+=8;  } }  void snake2() {  arc(130,220,150,180,40);  arc(130,220,180,253,40);  arc(105,328,273,80,70);  arc(143,220,150,180,40);  arc(143,215,180,230,40);  arc(112,328,265,50,75);  arc(80,354,45,72,115);  line(102,400,104,402);  line(102,400,107,399);  line(95,200,110,185);  line(110,185,109,200);  line(110,185,111,182);  circle(104,198,1);  setfillstyle(1,12);  floodfill(103,199,8); }  void snake3() {  arc(255,118,320,0,170);  arc(265,118,305,0,170);  line(384,229,361,260);  line(425,120,429,105);  line(428,105,435,120);  line(428,105,429,100);  circle(430,115,1);  setfillstyle(1,6);  floodfill(430,117,8); }  void numbering() {  outtextxy(50,393,"1    2         4    5    6    7    8         10");  outtextxy(50,353,"20   19   18        16   15   1    13        11");  outtextxy(50,313,"21   22             25   26             29   30");  outtextxy(50,273,"40   39   38   37   36   35   34   33   32   31");  outtextxy(50,233,"41        43   44   45        47   48        50");  outtextxy(50,193,"60        58   57   56   55        53   52     ");  outtextxy(50,153,"61   62   63   64        66   67   68   69     ");  outtextxy(50,113,"80   79             76   75   74   73        71");  outtextxy(50,73, "81        83   84   85   86   87        89   90");  outtextxy(50,33, "100  99   98   97   96   95   94   93   92   91");  setcolor(15); // outtextxy(480,40,"Lakshmi Narayana's");  outtextxy(465,50,"The Classic Game of");  settextstyle(GOTHIC_FONT, HORIZ_DIR, 2);  setcolor(LIGHTRED);  outtextxy(470,60,"Snake &amp; Ladder");  setcolor(WHITE);  settextstyle(DEFAULT_FONT, HORIZ_DIR, 1); }  void status() {  setcolor(YELLOW);  outtextxy(480, 95, "Dice output...");  setlinestyle(SOLID_LINE, 1, 3);  rectangle(480, 110, 600, 230);  outtextxy(480, 260, "Turn...");  rectangle(480, 275, 600, 300); }  void welcome() {  float octave[]={130.81, 146.83, 164.81, 174.61, 196, 220, 246.94}, n;  for (int i=0; i&lt;50; i++)  { n=random(6); sound(octave[n]*4); delay(150); nosound(); } }    void dispdice() {  switch (dice)  {   case 1: putimage(535, 165, dot, COPY_PUT); break;   case 2: putimage(515, 145, dot, COPY_PUT);    putimage(555, 185, dot, COPY_PUT); break;   case 3: putimage(515, 145, dot, COPY_PUT);    putimage(535, 165, dot, COPY_PUT);    putimage(555, 185, dot, COPY_PUT); break;   case 4: putimage(515, 145, dot, COPY_PUT);    putimage(555, 145, dot, COPY_PUT);    putimage(515, 185, dot, COPY_PUT);    putimage(555, 185, dot, COPY_PUT); break;   case 5: putimage(515, 145, dot, COPY_PUT);    putimage(555, 145, dot, COPY_PUT);    putimage(535, 165, dot, COPY_PUT);    putimage(515, 185, dot, COPY_PUT);    putimage(555, 185, dot, COPY_PUT); break;   case 6: putimage(515, 145, dot, COPY_PUT);    putimage(515, 165, dot, COPY_PUT);    putimage(515, 185, dot, COPY_PUT);    putimage(555, 145, dot, COPY_PUT);    putimage(555, 165, dot, COPY_PUT);    putimage(555, 185, dot, COPY_PUT); break;  } }  void getdice() { dice=random(6); dice++; dispdice(); }  void play() {  getimage(50, 410, 60, 420, o1);  getimage(70, 410, 80, 420, o2);  putimage(50, 410, obj1, COPY_PUT);  putimage(70, 410, obj2, COPY_PUT);  while (1)  {   if (user==0)   {    putimage(487, 282, turn, COPY_PUT);    setcolor(GREEN);    outtextxy(480, 285, "    Player 1"); again:   ch=getch();    if (ch==13) getdice();    else if (ch==27) exit(1);    else goto again;    setcolor(YELLOW);    if (cnt1==96 &amp;&amp; dice&gt;=4)  { delay(1000); goto invalid1; user=1; }
else if (cnt1==97 &amp;&amp; dice&gt;=3)  { delay(1000); goto invalid1; user=1;
}
else if (cnt1==98 &amp;&amp; dice&gt;=2) { delay(1000); goto invalid1; user=1;
}
else if (cnt1==99 &amp;&amp; dice&gt;=1) { delay(1000); goto invalid1; user=1;
}
for (i=1; i&lt;=dice; i++, cnt1++)    {     putimage(x1, y1, o1, COPY_PUT);     if (dir1==0)     { //     size=imagesize(x1, y1, x1+10, y1+10); //     o1=malloc(size);      getimage(x1, y1, x1+10, y1+10, o1);      x1+=40;      if (x1&gt;410) x1-=40, y1-=40, dir1=1;
//     size=imagesize(x1, y1, x1+10, y1+10);
//     o1=malloc(size);
getimage(x1, y1, x1+10, y1+10, o1);
putimage(x1, y1, obj1, COPY_PUT);
delay(1000); goto ch1;
}
else
{
size=imagesize(x1, y1, x1+10, y1+10);
//     o1=malloc(size);
getimage(x1, y1, x1+10, y1+10, o1);
x1-=40;
if (x1&lt;50) x1+=40, y1-=40, dir1=0; //     size=imagesize(x1, y1, x1+10, y1+10); //     o1=malloc(size);      getimage(x1, y1, x1+10, y1+10, o1);      putimage(x1, y1, obj1, COPY_PUT);      delay(1000); goto ch1;     } ch1:    if (cnt1==99) goto over;    }    if (cnt1==12 || cnt1==72 || cnt1==78)    {     putimage(x1, y1, o1, COPY_PUT);     x1-=80; y1-=80; //    size=imagesize(x1, y1, x1+10, y1+10); //    o1=malloc(size);     getimage(x1, y1, x1+10, y1+10, o1);     putimage(x1, y1, obj1, COPY_PUT);     if (cnt1==12)  cnt1=34;     else if (cnt1==72)      cnt1=94;     else if (cnt1==78) { cnt1=100; goto over; }    }    else if (cnt1==22 || cnt1==46)    {     putimage(x1, y1, o1, COPY_PUT);     x1+=40; y1-=40; //    size=imagesize(x1, y1, x1+10, y1+10); //    o1=malloc(size);     getimage(x1, y1, x1+10, y1+10, o1);     putimage(x1, y1, obj1, COPY_PUT);     if (cnt1==22)  cnt1=38;     else if (cnt1==46) cnt1=54;     dir1=1;    }    else if (cnt1==36 || cnt1==99)    {     putimage(x1, y1, o1, COPY_PUT);     x1+=160; y1+=120; //    size=imagesize(x1, y1, x1+10, y1+10); //    o1=malloc(size);     getimage(x1, y1, x1+10, y1+10, o1);     putimage(x1, y1, obj1, COPY_PUT);     if (cnt1==36)  cnt1=9;     else if (cnt1==99) cnt1=66;     dir1=0;    }    else if (cnt1==62)    {     putimage(x1, y1, o1, COPY_PUT);     y1+=240; //    size=imagesize(x1, y1, x1+10, y1+10); //    o1=malloc(size);     getimage(x1, y1, x1+10, y1+10, o1);     putimage(x1, y1, obj1, COPY_PUT);     cnt1=2;    }    else if (cnt1==90)    {     putimage(x1, y1, o1, COPY_PUT);     x1-=80; y1+=160; //    size=imagesize(x1, y1, x1+10, y1+10); //    o1=malloc(size);     getimage(x1, y1, x1+10, y1+10, o1);     putimage(x1, y1, obj1, COPY_PUT);     cnt1=48;    }    if (dice==5 || dice==6) user=0; else user=1; invalid1:  putimage(500, 130, back, COPY_PUT);   }   else   {    putimage(487, 282, turn, COPY_PUT);    setcolor(BROWN);    outtextxy(480, 285, "    Player 2");    setcolor(YELLOW); again2:   ch=getch();    if (ch==13) getdice();    else if (ch==27) exit(1);    else goto again2;    if (cnt2==96 &amp;&amp; dice!=4)  { delay(1000); goto invalid2; user=0; }    else if (cnt2==97 &amp;&amp; dice!=3)  { delay(1000); goto invalid2; user=0;  }    else if (cnt2==98 &amp;&amp; dice!=2) { delay(1000); goto invalid2; user=0;  }    else if (cnt2==99 &amp;&amp; dice!=1) { delay(1000); goto invalid2; user=0;  }    for (i=1; i&lt;=dice; i++, cnt2++)    {     putimage(x2, y2, o2, COPY_PUT);     if (dir2==0)     { //     size=imagesize(x2, y2, x2+10, y2+10); //     o2=malloc(size);      getimage(x2, y2, x2+10, y2+10, o2);      x2+=40;      if (x2&gt;440) x2-=40, y2-=40, dir2=1;
//     size=imagesize(x2, y2, x2+10, y2+10);
//     o2=malloc(size);
getimage(x2, y2, x2+10, y2+10, o2);
putimage(x2, y2, obj2, COPY_PUT);
delay(1000); goto ch2;
}
else
{
//     size=imagesize(x2, y2, x2+10, y2+10);
//     o2=malloc(size);
getimage(x2, y2, x2+10, y2+10, o2);
x2-=40;
if (x2&lt;50) x2+=40, y2-=40, dir2=0; //     size=imagesize(x2, y2, x2+10, y2+10); //     o2=malloc(size);      getimage(x2, y2, x2+10, y2+10, o2);      putimage(x2, y2, obj2, COPY_PUT);      delay(1000); goto ch2;     } ch2:    if (cnt2==99) goto over;    }    if (cnt2==12 || cnt2==72 || cnt2==78)    {     putimage(x2, y2, o2, COPY_PUT);     x2-=80; y2-=80; //    size=imagesize(x2, y2, x2+10, y2+10); //    o2=malloc(size);     getimage(x2, y2, x2+10, y2+10, o2);     putimage(x2, y2, obj2, COPY_PUT);     if (cnt2==12)  cnt2=34;     else if (cnt2==72)      cnt2=94;     else if (cnt2==78) { cnt2=100; goto over; }    }    else if (cnt2==22 || cnt2==46)    {     putimage(x2, y2, o2, COPY_PUT);     x2+=40; y2-=40; //    size=imagesize(x2, y2, x2+10, y2+10); //    o2=malloc(size);     getimage(x2, y2, x2+10, y2+10, o2);     putimage(x2, y2, obj2, COPY_PUT);     if (cnt2==22)  cnt2=38;     else if (cnt2==46) cnt2=54;     dir2=1;    }    else if (cnt2==36 || cnt2==99)    {     putimage(x2, y2, o2, COPY_PUT);     x2+=160; y2+=120;  //    size=imagesize(x2, y2, x2+10, y2+10);  //    o2=malloc(size);     getimage(x2, y2, x2+10, y2+10, o2);     putimage(x2, y2, obj2, COPY_PUT);     if (cnt2==36)  cnt2=9;     else if (cnt2==99) cnt2=66;     dir2=0;    }    else if (cnt2==62)    {     putimage(x2, y2, o2, COPY_PUT);     y2+=240; //    size=imagesize(x2, y2, x2+10, y2+10); //    o2=malloc(size);     getimage(x2, y2, x2+10, y2+10, o2);     putimage(x2, y2, obj2, COPY_PUT);     cnt2=2;    }    else if (cnt2==90)    {     putimage(x2, y2, o2, COPY_PUT);     x2-=80; y2+=160; //    size=imagesize(x2, y2, x2+10, y2+10); //    o2=malloc(size);     getimage(x2, y2, x2+10, y2+10, o2);     putimage(x2, y2, obj2, COPY_PUT);     cnt2=48;    }    if (dice==5 || dice==6) user=1; else user=0; invalid2:  putimage(500, 130, back, COPY_PUT);    delay(1000);   }  } over: }  void main() {  int gd=DETECT, gm;  initgraph(&amp;gd, &amp;gm, "d:\tc\bgi");  randomize();   size=imagesize(487, 282, 593, 293);  turn=malloc(size);  getimage(487, 282, 593, 293, turn);   rectangle(100, 100, 110, 110);  setfillstyle(1, 2);  floodfill(102, 102, 15);  size=imagesize(100, 100, 110, 110);  obj1=malloc(size);  getimage(100, 100, 110, 110, obj1);  cleardevice();   rectangle(100, 100, 110, 110);  setfillstyle(1, 6);  floodfill(102, 102, 15);  size=imagesize(100, 100, 110, 110);  obj2=malloc(size);  getimage(100, 100, 110, 110, obj2);  cleardevice();   o1=malloc(size); o2=malloc(size);   setcolor(WHITE);  setfillstyle(SOLID_FILL, 15);  rectangle(500, 130, 580, 210);  floodfill(510, 140, 15);   size=imagesize(500, 130, 580, 210);  back=malloc(size);  getimage(500, 130, 580, 210, back);  setcolor(0);  setfillstyle(1, 0);  rectangle(535, 165, 545, 175);  floodfill(540, 170, 0);  size=imagesize(535, 165, 545, 175);  dot=malloc(size);  getimage(535, 165, 545, 175, dot);  cleardevice();   setcolor(WHITE);  setfillstyle(SOLID_FILL, 15);  rectangle(500, 130, 580, 210);  floodfill(510, 140, 15);   for(int i=0;i&lt;=360;i+=40)   for(int j=0;j&lt;=360;j+=40)   {    setfillstyle(SOLID_FILL, k);    bar(50+j,30+i,90+j,70+i);    k+=2;   }  ladder1(); ladder2();  snake1();       snake2(); snake3();  numbering(); status();   welcome(); play();  if (cnt1&gt;=99)  outtextxy(480, 330, "PLAYER 1 WINS!");
else if (cnt2&gt;=99)     outtextxy(480, 330, "PLAYER 2 WINS!");
getch();
}


</iostream.h></dos.h></stdlib.h></malloc.h></div>

No comments:

Post a Comment

 
;