Computer Science Pro
Computer Science Pro
Topic:
The Snake & Ladder Game
Done by
Krishnaprasad K.A
S. Santhosh Kumar
Bonafide Certificate
This is to certify that
The Snake and Ladder Game
is a bonafide work of
Krishnaprasad K.A.
&
S. Santhosh Kumar
of Class XII,
KendriyaVidyalaya No.2, Kalpakkam
Date:
Principal:
Certificate of Authenticity
This is to certify that
Krishnaprasad K.A.
&
S. Santhosh Kumar
of Class XII,
KendriyaVidyalaya No. 2, Kalpakkam
have completed the project
The Snake & Ladder Game
and submitted for partial fulfilment of Computer
Science Practical Examination held in the
Computer Lab of
KendriyaVidyalaya No.
2, Kalpakkam
Acknowledgement
We would like to thank Mrs. T. Mrinalini,
Principal, KendriyaVidyalaya no. 2, Kalpakkam
for providing all the necessary facilities for
completing the project on time.
We would also like to thank Mrs. Hema, PGT,
Computer Science for her keen interest and
encouragement throughout the work. We wish
to place a record of my profound feeling of
gratitude for her valuable guidance and
support.
Krishnaprasad K.A.
S. Santhosh Kumar
Class XII
This program is based on Snake and ladder game between the CPU and the
User, where CPU is player 2 and User is player 1. The functions of the
functions used in the program have been listed below:
Program Code:
#include<stdio.h>
#include<graphics.h>
#include<conio.h>
#include<malloc.h>
#include<stdlib.h>
#include<dos.h>
#include<iostream.h>
/* YOU HAVE TO PRESS ENTER TO PLAY YOUR TURN*/
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;
unsignedint size;
void ladder1()
{
intm,n;
for(m=0;m<=250;m+=250)
for(n=0;n<=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()
{
intp,q=0;
for(p=0;p<=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()
{
intx,y=0,h=2;
for(x=0;x<=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
outtextxy(50,353,"20
outtextxy(50,313,"21
outtextxy(50,273,"40
outtextxy(50,233,"41
outtextxy(50,193,"60
outtextxy(50,153,"61
outtextxy(50,113,"80
2
4 5 6 7 8
10");
19 18
16 15 1 13
11");
22
25 26
29 30");
39 38 37 36 35 34 33 32 31");
43 44 45
47 48
50");
58 57 56 55
53 52
");
62 63 64
66 67 68 69
");
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 & 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 (inti=0; i<50; i++)
{ n=random(6); sound(octave[n]*4); delay(150); nosound(); }
}
voiddispdice()
{
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);
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);
elsegoto again;
setcolor(YELLOW);
if (cnt1==96 && dice>=4){delay(1000); goto invalid1; user=1; }
else if (cnt1==97 && dice>=3){delay(1000); goto invalid1; user=1; }
else if (cnt1==98 && dice>=2){delay(1000); goto invalid1; user=1; }
else if (cnt1==99 && dice>=1){delay(1000); goto invalid1; user=1;}
for (i=1; i<=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>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<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)
//
//
//
//
//
//
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;
putimage(500, 130, back, COPY_PUT);
//
//
invalid1:
}
else
{
{
//
//
//
//
}
else
{
//
//
//
//
ch2:
//
//
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;
putimage(500, 130, back, COPY_PUT);
delay(1000);
invalid2:
}
}
over: }
void main()
{
intgd=DETECT, gm;
initgraph(&gd, &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(inti=0;i<=360;i+=40)
for(int j=0;j<=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>=99)
else if (cnt2>=99)
getch();
}
Output Screenshots
Player 1s turn
Player 2s Turn
s
Player 1..wins...
Bibliography:
Reference:
Computer Science Textbook by Sumita Arora.
Introduction to C++ programming and Graphics by Constantine Pozrikidis
Cprogramming.com
Cplusplus.com