Sie sind auf Seite 1von 10

/*

Snake And Ladder Developed in Turbo C 3.0 (Game)


Copyright (c) 2004 Chetan.V . All rights reserved.
*/
#include<graphics.h>
#include<stdlib.h>
#include<stdio.h>
#include<conio.h>
#include<dos.h>
#define ESC_KEY 27
void display(int pawn[],int val)
{
setcolor(val);
setfillstyle(1,val);
drawpoly(4,pawn);
fillpoly(4,pawn);
line(pawn[6],pawn[7],pawn[0],pawn[1]);
}
void check1(int pawn[],int val)
{
switch(val)
{
case 1:
pawn[0]=590;
pawn[2]=600;
pawn[4]=600;
pawn[6]=590;
break;
case 2:
pawn[0]=620;
pawn[2]=630;
pawn[4]=630;
pawn[6]=620;
break;
}
}
void check2(int pawn[],int val)
{
switch(val)
{
case 1:
pawn[0]=10;
pawn[2]=20;
pawn[4]=20;
pawn[6]=10;
break;
case 2:

pawn[0]=40;
pawn[2]=50;
pawn[4]=50;
pawn[6]=40;
break;
}
}
void Snake()
{
/*Snake 3*/
arc(130, 370,110,190,50);
arc(130, 380,180,270,50);
arc(130, 450,200,90,20);
/*Snake 2*/
arc(528, 180,90,260,50);
arc(510, 280,270,80,50);
arc(500, 390,80,185,60);
/*Snake 1*/
arc(108, 80,260,90,50);
arc(90, 180,80,260,50);
arc(75, 270,0,80,40);
}
void disp_Struct(int pawn1[],int pawn2[],char *a[],int val)
{
int i,j,k,count=1,l;
char msg[20];
setcolor(11);
setbkcolor(1);
for(i=0;i<=640;i+=64)
line(i,0,i,480);
for(j=0;j<=480;j+=48)
line(0,j,640,j);
k=456;j=0;
while(k>=24)
{
while(j<=100)
{
if(count%2!=0)
{
for(i=32,l=j;i<=608,l<=j+10;i+=64,l++)
{
moveto(i,k);
outtext(a[l]);
}
j+=10;
}
else
{
for(i=608,l=j;i>=32,l<=j+10;i-=64,l++)
{
moveto(i,k);

outtext(a[l]);
}
j+=10;
}
k-=48;
count++;
}
}
//printf("%d",val);
rectangle(0,0,128,15);
sprintf(msg,"Dice value : %d",val);
outtextxy(5,5,msg);
display(pawn1,6);
display(pawn2,14);
setlinestyle(3,2,3);
setcolor(14);
/*Ladder 1*/
line(234,350,406,226);
line(220,345,392,221);
/*Ladder 2*/
line(460,60,540,28);
line(485,60,565,28);
/*Ladder 3*/
line(210,34,410,160);
line(235,32,435,158);
setcolor(4);
setlinestyle(2,1,4);
Snake();
setlinestyle(0,0,0);
}
void Init_Screen()
{
setbkcolor(0);
setcolor(4);
settextstyle(GOTHIC_FONT,0,6);
outtextxy(35,22,"SNAKE AND LADDER");
settextstyle(0,0,1);
outtextxy(140,240,"This game has been created by Chetan.V .");
outtextxy(140,260,"An adaptation of the age old game of snakes and ladders.")
;
outtextxy(160,460,"Press any key to continue.......");
getch();
cleardevice();
settextstyle(GOTHIC_FONT,0,5);
outtextxy(160,50,"CONTROLS");

outtextxy(180,240,"SETUP");
settextstyle(1,0,1);
outtextxy(120,140,"Roll the Dice ........... <Enter>");
outtextxy(120,180,"Quit the Game ........... <Esc>");
outtextxy(120,320,"Brown Pawn .......
outtextxy(120,360,"Yellow Pawn .......

Player1");
Computer");

settextstyle(0,0,1);
outtextxy(140,460,"Press any key to start the game.......");
}
void init_Disp(int pawn[],int pawn2[])
{
pawn[0]=10;pawn[1]=458;
pawn[2]=20;pawn[3]=458;
pawn[4]=20;pawn[5]=448;
pawn[6]=10;pawn[7]=448;
pawn2[0]=40;pawn2[1]=458;
pawn2[2]=50;pawn2[3]=458;
pawn2[4]=50;pawn2[5]=448;
pawn2[6]=40;pawn2[7]=448;
}
void Ladder1_func(int pawn[],int val)
{
int i,j;
for(j=1;j<=7;j+=2)
pawn[j]-=144;
check1(pawn,val);
for(i=0;i<7;i+=2)
pawn[i]-=192;
}
void Ladder2_func(int pawn[],int val)
{
int i,j;
for(j=1;j<=7;j+=2)
pawn[j]-=144;
check2(pawn,val);
for(i=0;i<7;i+=2)
pawn[i]+=192;
}
void Ladder3_func(int pawn[],int val)
{
int i,j;
for(j=1;j<=7;j+=2)
pawn[j]-=48;
check1(pawn,val);
for(i=0;i<7;i+=2)
pawn[i]-=64;

}
void Snake1_func(int pawn[])
{
int i,j;
for(j=1;j<=7;j+=2)
pawn[j]+=240;
}
void Snake2_func(int pawn[],int val)
{
int i,j;
for(j=1;j<=7;j+=2)
pawn[j]+=288;
check1(pawn,val);
for(i=0;i<7;i+=2)
pawn[i]-=192;
}
void Snake3_func(int pawn[])
{
int i,j;
for(j=1;j<=7;j+=2)
pawn[j]+=144;
}
void Ladder_Snake_func(int *val,int pawn[],int ct)
{
switch(*val)
{
case 24:
Ladder1_func(pawn,ct);
*val=54;
break;
case 67:
Ladder2_func(pawn,ct);
*val=97;
break;
case 88:
Ladder3_func(pawn,ct);
*val=92;
break;
case 99:
Snake1_func(pawn);
*val=40;
break;
case 72:
Snake2_func(pawn,ct);
*val=14;
break;
case 39:
Snake3_func(pawn);
*val=2;
break;
}

}
void Winner_screen(int win)
{
cleardevice();
setbkcolor(0);
setcolor(11);
settextstyle(GOTHIC_FONT,0,4);
if(win==1)
{
outtextxy(160,150,"WINNER IS PLAYER1");
outtextxy(150,185,"CONGRATULATIONS............");
}
else
{
outtextxy(160,150,"WINNER IS PLAYER2");
outtextxy(150,185,"CONGRATULATIONS............");
}
}
int Check_for_100(int pos,int val)
{
if((pos+val)==100)
return 1;
if((pos+val)>100)
return 0;
else
return val;
}
void main()
{
/* request auto detection */
int gdriver = DETECT, gmode, errorcode;
int pawn[8],pawn2[8];
int i,j,k,val,cj;
int ch1,ch,count;
int cg1,cg,count2;
int fg,fk,win;
char *a[]= {"1","2","3","4","5","6","7","8","9","10",
"11","12","13","14","15","16","17","18","19","20",
"21","22","23","24","25","26","27","28","29","30",
"31","32","33","34","35","36","37","38","39","40",
"41","42","43","44","45","46","47","48","49","50",
"51","52","53","54","55","56","57","58","59","60",
"61","62","63","64","65","66","67","68","69","70",
"71","72","73","74","75","76","77","78","79","80",
"81","82","83","84","85","86","87","88","89","90",
"91","92","93","94","95","96","97","98","99","100"};
clrscr();
/* initialize graphics and local variables */

initgraph(&gdriver, &gmode, "");


/* read result of initialization */
errorcode = graphresult();
/* an error occurred */
if (errorcode != grOk)
{
printf("Graphics error: %s\n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1);
/* terminate with an error code */
}
Init_Screen();
getch();
cleardevice();
setbkcolor(0);
init_Disp(pawn,pawn2);
disp_Struct(pawn,pawn2,a,0);
ch=ch1=1;
cg=cg1=1;
k=1;
while(1)
{
delay(800);
if(k%2)
{
cj=getch();
if(cj==ESC_KEY)
exit(1);
randomize();
/*val=rand()%7;*/
val=random(7);
if(!val)
val++;
if(ch1>=94)
{
fg=Check_for_100(ch1,val);
if(fg==1)
{
Winner_screen(1);
getch();
closegraph();
exit(1);
}
else
val=fg;
}
ch+=val;
ch1+=val;
count=ch1/10;

if(ch<10&&(count%2==0))
for(i=0;i<7;i+=2)
pawn[i]+=val*64;
if(ch<10&&(count%2==1))
for(i=0;i<7;i+=2)
pawn[i]-=val*64;
if(ch==10&&(count%2==0))
for(i=0;i<7;i+=2)
pawn[i]-=val*64;
if(ch==10&&(count%2==1))
for(i=0;i<7;i+=2)
pawn[i]+=val*64;
if(ch>10&&(count%2==0))
{
ch=ch%10;
check2(pawn,1);
for(j=1;j<=7;j+=2)
pawn[j]-=48;
for(i=0;i<7;i+=2)
pawn[i]+=(ch-1)*64;
}
if(ch>10&&(count%2==1))
{
ch=ch%10;
check1(pawn,1);
for(j=1;j<=7;j+=2)
pawn[j]-=48;
for(i=0;i<7;i+=2)
pawn[i]-=(ch-1)*64;
}
}
else
{
randomize();
val=rand()%7;
if(!val)
val++;
if(cg1>=94)
{
fk=Check_for_100(cg1,val);
if(fk==1)
{
Winner_screen(2);
getch();
closegraph();
exit(1);
}
else
val=fk;
}

cg+=val;
cg1+=val;
count2=cg1/10;
if(cg<10&&(count2%2==0))
for(i=0;i<7;i+=2)
pawn2[i]+=val*64;
if(cg<10&&(count2%2==1))
for(i=0;i<7;i+=2)
pawn2[i]-=val*64;
if(cg==10&&(count2%2==0))
for(i=0;i<7;i+=2)
pawn2[i]-=val*64;
if(cg==10&&(count2%2==1))
for(i=0;i<7;i+=2)
pawn2[i]+=val*64;
if(cg>10&&(count2%2==0))
{
cg=cg%10;
check2(pawn2,2);
for(j=1;j<=7;j+=2)
pawn2[j]-=48;
for(i=0;i<7;i+=2)
pawn2[i]+=(cg-1)*64;
}
if(cg>10&&(count2%2==1))
{
cg=cg%10;
check1(pawn2,2);
for(j=1;j<=7;j+=2)
pawn2[j]-=48;
for(i=0;i<7;i+=2)
pawn2[i]-=(cg-1)*64;
}
}
cleardevice();
disp_Struct(pawn,pawn2,a,val);
if(ch1==24||ch1==67||ch1==88||ch1==99||ch1==72||ch1==39)
{
Ladder_Snake_func(&ch1,pawn,1);
ch=ch1%10;
cleardevice();
disp_Struct(pawn,pawn2,a,val);
}
else if(cg1==24||cg1==67||cg1==88||cg1==99||cg1==72||cg1==39)
{
Ladder_Snake_func(&cg1,pawn2,2);
cg=cg1%10;
cleardevice();
disp_Struct(pawn,pawn2,a,val);

}
k++;
}
getch();
closegraph();
}

Das könnte Ihnen auch gefallen