GREYcells Ludo
int yourmovebox(){
messagebox();
cx=385;
settextstyle(GOTHIC_FONT,HORIZ_DIR,2);
setcolor(14);
outtextxy(cx,50,"Your move !");
signal();
return 1;}
int boxcursoron(){
setfillstyle(SOLID_FILL,12);
bar(boxcol+3,boxrow-3,boxcoll+2,boxroww-2);
setfillstyle(SOLID_FILL,9);
bar(boxcol+7,boxrow,boxcoll-2,boxroww-5);
cursoron=1;
return 1;}
int jingle(){
if (soundok==1){
sound(900);
delay(50);
sound(800);
delay(50);
sound(500);
delay(50);
sound(600);
delay(50);
sound(900);
delay(50);
sound(800);
delay(50);
sound(500);
delay(50);
sound(600);
delay(50);
nosound();
sound(700);
delay(50);
sound(800);
delay(50);
sound(900);
delay(50);
sound(600);
delay(50);
sound(800);
delay(50);
nosound();}
return 1;}
int dropdownmenu(){
settextstyle(DEFAULT_FONT,HORIZ_DIR,1);
settextjustify(1,1);
setfillstyle(SOLID_FILL,15);
bar(menucol,menurow+2,menucoll,menuroww);
setfillstyle(SOLID_FILL,0);
bar(menucol+1,menurow+3,menucoll-1,menuroww-1);
setfillstyle(SOLID_FILL,7);
bar(menucol+4,menurow+5,menucoll-3,menurow+20);
if (menu==0){bar(menucol+4,menurow+25,menucoll-3,menurow+41);}
setlinestyle(SOLID_LINE,1,2);
setcolor(15);
line(menucol+4,menurow+5,menucoll-3,menurow+5);
line(menucol+4,menurow+5,menucol+4,menurow+20);
if (menu==0){
line(menucol+4,menurow+25,menucoll-3,menurow+25);
line(menucol+4,menurow+25,menucol+4,menurow+41);}
setcolor(0);
line(menucol+4,menurow+20,menucoll-3,menurow+20);
line(menucoll-3,menurow+5,menucoll-3,menurow+20);
if (menu==0){
line(menucol+4,menurow+41,menucoll-3,menurow+41);
line(menucoll-3,menurow+25,menucoll-3,menurow+41);
/* line in between menu items */
setcolor(15);
line(menucol,menurow+22,menucoll,menurow+22);}
return 1;}
int threed_menu(){
setlinestyle(SOLID_LINE,1,1);
setcolor(15);
line(menucoll-6,menurow+8,menucoll-6,menurow+17);
line(menucol+7,menurow+17,menucoll-6,menurow+17);
setcolor(0);
line(menucol+7,menurow+7,menucoll-7,menurow+7);
line(menucol+7,menurow+7,menucol+7,menurow+17);
return 1;}
int twod_menu(){
setlinestyle(SOLID_LINE,1,1);
setcolor(7);
line(menucol+7,menurow+7,menucoll-7,menurow+7);
line(menucol+7,menurow+7,menucol+7,menurow+17);
setcolor(7);
line(menucoll-6,menurow+8,menucoll-6,menurow+17);
line(menucol+7,menurow+17,menucoll-6,menurow+17);
return 1;}
int threed_menuitem2(){
setlinestyle(SOLID_LINE,1,1);
setcolor(15);
line(menucol+7,menurow+27,menucoll-8,menurow+27);
line(menucol+7,menurow+27,menucol+7,menurow+39);
setlinestyle(SOLID_LINE,1,1);
setcolor(0);
line(menucoll-6,menurow+27,menucoll-6,menurow+39);
line(menucol+7,menurow+39,menucoll-6,menurow+39);
return 1;}
int twod_menuitem2(){
setlinestyle(SOLID_LINE,1,1);
setcolor(7);
line(menucol+7,menurow+27,menucoll-8,menurow+27);
line(menucol+7,menurow+27,menucol+7,menurow+39);
setlinestyle(SOLID_LINE,1,1);
setcolor(7);
line(menucoll-6,menurow+27,menucoll-6,menurow+39);
line(menucol+7,menurow+39,menucoll-6,menurow+39);
return 1;}
int savebox(){
size=imagesize(messageboxc,messageboxr,messageboxcc,messageboxrr);
sbox=malloc(size);
getimage(messageboxc,messageboxr,messageboxcc,messageboxrr,sbox);
return 1;}
int restorebox(){
putimage(messageboxc,messageboxr,sbox, COPY_PUT);
free(sbox);
return 1;}
int saveboxcursor(){
cursorsize=imagesize(boxcol,boxrow-3,boxcoll+2,boxroww);
cursorbox=malloc(cursorsize);
getimage(boxcol,boxrow-3,boxcoll+2,boxroww,cursorbox);
return 1;}
int restoreboxcursor(){
putimage(boxcol,boxrow-3,cursorbox, COPY_PUT);
free(cursorbox);
return 1;}
int errorscreen(){
setfillstyle(SOLID_FILL,9);
bar(messageboxc,messageboxr,messageboxcc,messageboxrr);
setfillstyle(SOLID_FILL,7);
bar(messageboxc+1,messageboxr+1,messageboxcc-1,messageboxr
+16);
setfillstyle(SOLID_FILL,0);
bar(messageboxc+2,messageboxr+2,messageboxc+45,messageboxr
+15);
setlinestyle(SOLID_LINE,1,1);
setcolor(15);
line(messageboxc+45,messageboxr,messageboxcc,messageboxr);
line(messageboxc+45,messageboxr,messageboxcc,messageboxr);
setfillstyle(SOLID_FILL,7);
bar(messageboxc+1,messageboxrr-16,messageboxcc-
65,messageboxrr-1);
setcolor(15);
line(messageboxc,messageboxrr-16,messageboxcc-
65,messageboxrr-16);
line(messageboxc,messageboxrr-16,messageboxc,messageboxrr-
15);
setfillstyle(SOLID_FILL,0);
bar(messageboxcc-63,messageboxrr-16,messageboxcc-
1,messageboxrr-1);
settextstyle(DEFAULT_FONT,HORIZ_DIR,1);
setcolor(15);
setusercharsize(1,3,1,1);
settextjustify(0,1);
outtextxy(midx,messageboxr+5,"GREYcells");
return 1;}
int fourcoins(){
/* coins */
coin=1;
ctr=0;
circrow=120;
circcol=25;
circcolll=circcol+21;
circcoll=circcol+13;
coincolor=8;
while (ctr<4){
drawcoin();
coin++;
circcol=circcol+35;
circcolll=circcol+21;
circcoll=circcol+13;
if (coin==7){
ctr++;
coincolor=11;
circcol=25;
circcolll=circcol+21;
circcoll=circcol+13;
circrow=220;}
if (coin==13){
ctr++;
coincolor=13;
circcol=25;
circcolll=circcol+21;
circcoll=circcol+13;
circrow=320;}
if (coin==19){
ctr++;
coincolor=6;
circcol=25;
circcolll=circcol+21;
circcoll=circcol+13;
circrow=420;}
if (coin==25){ctr++;}
if (coin>0 && coin<7){
if (circcol>115){
circcol=25;
circcolll=circcol+21;
circcoll=circcol+13;
circrow=circrow+30;}}
if (coin>6 && coin<13){
if (circcol>115){
circcol=25;
circcolll=circcol+21;
circcoll=circcol+13;
circrow=circrow+30;}}
if (coin>12 && coin<19){
circcol=25;
circcolll=circcol+21;
circcoll=circcol+13;
if (circcol>115){
circrow=circrow+30;}}
if (coin>18 && coin<25){
if (circcol>115){
circcol=25;
circcolll=circcol+21;
circcoll=circcol+13;
circrow=circrow+30;}}
}
ctr=0;
circrow=320;
circcol=25;
circcolll=circcol+21;
circcoll=circcol+13;
coincolor=13;
while (ctr<6){
drawcoin();
coin++;
circcol=circcol+35;
circcolll=circcol+21;
circcoll=circcol+13;
if (circcol>115){
circcol=25;
circcolll=circcol+21;
circcoll=circcol+13;
circrow=circrow+30;}
ctr++;
}
return 1;}
int whatcolorcoin(){
if (w==1){
coincolor=8;}
if (w==2){
coincolor=11;}
if (w==3){
coincolor=13;}
if (w==4){
coincolor=6;}
return (coincolor);}
int twocoins(){
coin=1;
ctr=0;
circrow=120;
circcol=25;
circcolll=circcol+21;
circcoll=circcol+13;
coincolor=8;
while (ctr<2){
drawcoin();
coin++;
circcol=circcol+35;
circcolll=circcol+21;
circcoll=circcol+13;
if (coin==7){
ctr++;
coincolor=11;
circcol=25;
circcolll=circcol+21;
circcoll=circcol+13;
circrow=220;}
if (coin>0 && coin<7){
if (circcol>115){
circcol=25;
circcolll=circcol+21;
circcoll=circcol+13;
circrow=circrow+30;}}
if (coin>6 && coin<13){
if (circcol>115){
circcol=25;
circcolll=circcol+21;
circcoll=circcol+13;
circrow=circrow+30;}}
if (coin==13){ctr++;}
}
return 1;}
int threecoins(){
coin=1;
ctr=0;
circrow=120;
circcol=25;
circcolll=circcol+21;
circcoll=circcol+13;
coincolor=8;
while (ctr<3){
drawcoin();
coin++;
circcol=circcol+35;
circcolll=circcol+21;
circcoll=circcol+13;
if (coin==7){
ctr++;
coinboxcolor=11;
circcol=25;
circcolll=circcol+21;
circcoll=circcol+13;
circrow=220;}
if (coin==13){
ctr++;
coincolor=13;
circcol=25;
circcolll=circcol+21;
circcoll=circcol+13;
circrow=320;}
if (coin>0 && coin<7){
if (circcol>115){
circcol=25;
circcolll=circcol+21;
circcoll=circcol+13;
circrow=circrow+30;}}
if (coin>6 && coin<13){
if (circcol>115){
circcol=25;
circcolll=circcol+21;
circcoll=circcol+13;
circrow=circrow+30;}}
if (coin>12 && coin<19){
circcol=25;
circcolll=circcol+21;
circcoll=circcol+13;
if (circcol>115){
circrow=circrow+30;}}
if (coin==19){ctr++;}
}
ctr=0;
circrow=320;
circcol=25;
circcolll=circcol+21;
circcoll=circcol+13;
coincolor=13;
while (ctr<6){
drawcoin();
coin++;
circcol=circcol+35;
circcolll=circcol+21;
circcoll=circcol+13;
if (circcol>115){
circcol=25;
circcolll=circcol+21;
circcoll=circcol+13;
circrow=circrow+30;}
ctr++;
}
return 1;}
int messagebox(){
messageboxc=375;
messageboxr=0;
messageboxcc=640;
messageboxrr=125;
midx=485;
errorscreen();
settextstyle(DEFAULT_FONT,HORIZ_DIR,1);
setcolor(12);
settextjustify(0,1);
outtextxy(messageboxc+5,messageboxr+9,"Alert");
if (player==1){
cx=385;
setcolor(14);
ct=1;
outtextxy(cx,25,"Player 1 !");}
if (player==2){
cx=385;
setcolor(14);
ct=2;
outtextxy(cx,25,"Player 2 !");}
if (player==3){
cx=385;
setcolor(14);
ct=3;
outtextxy(cx,25,"Player 3 !");}
if (player==4){
cx=385;
setcolor(14);
ct=4;
outtextxy(cx,25,"Player 4 !");}
return 1;}
int placecoin(){
if (player==1){
topbox=0;
leftbox=0;
bottombox=1;
rightbox=0;
if (vy==1 || vy==5){
startstatus=1;
if (player1coins<=6){
putcoininbox=1;
origcirccol=25;
origcircrow=120;
assessnumberofcoins();
coinstatus();}
coincolor=10;
drawcoin();
player1coins--;
if (player1coins<=0){player1coins=0;}
assessnumberofcoins();
}
coincolor=8;
boxcol=305;
boxrow=330;
boxcoll=boxcol+25;
boxroww=boxrow+20;
circcol=boxcol;
circrow=boxrow;
}
if (player==2){
topbox=1;
leftbox=0;
bottombox=0;
rightbox=0;
if (vy==1 || vy==5){
startstatus=2;
if (player2coins<=6){
origcirccol=25;
origcircrow=220;
putcoininbox=1;
assessnumberofcoins();
coinstatus();}
coincolor=9;
drawcoin();
player2coins--;
if (player2coins<=0){player2coins=0;}
assessnumberofcoins();
}
boxcol=305;
boxrow=205;
boxcoll=boxcol+25;
boxroww=boxrow+20;
coincolor=11;
circcol=boxcol;
circrow=boxrow;
}
if (player==3){
topbox=0;
leftbox=0;
bottombox=0;
rightbox=1;
if (vy==1 || vy==5){
startstatus=3;
if (player3coins<=6){
origcirccol=25;
origcircrow=320;
putcoininbox=1;
assessnumberofcoins();
coinstatus();}
coincolor=3;
drawcoin();
player3coins--;
if (player3coins<=0){player3coins=0;}
assessnumberofcoins();
}
boxcol=365;
boxrow=265;
boxcoll=boxcol+20;
boxroww=boxrow+20;
circcol=boxcol;
circrow=boxrow;
coincolor=13;
}
if (player==4){
topbox=0;
leftbox=1;
bottombox=0;
rightbox=0;
if (vy==1 || vy==5){
startstatus=4;
if (player4coins<=6){
origcirccol=25;
origcircrow=420;
putcoininbox=1;
assessnumberofcoins();
coinstatus();}
coincolor=14;
drawcoin();
player4coins--;
if (player4coins<=0){player4coins=0;}
assessnumberofcoins();
}
boxcol=250;
boxcoll=boxcol+20;
boxrow=265;
boxroww=boxrow+20;
circcol=boxcol;
circrow=boxrow;
coincolor=6;
}
updatebox();
startctr=cursorctr;
return 1;}
int firstbox(){
boxcoll=boxcol+25;
boxroww=boxrow+20;
return 1;}
int secondbox(){
boxcoll=boxcol+20;
boxroww=boxrow+25;
return 1;}
int cursound(){
if (soundok==1){
sound(200);
delay(50);
nosound();}
return 1;}
int sizecoin(){
if (bottombox==1 || topbox==1){
circcol=boxcol+4;
circcolll=circcol+21;
circcoll=circcol+13;
circrow=boxrow-5;}
if (leftbox==1 || rightbox==1 || leftbox==2 || bottombox==2 || topbox==2 ||
rightbox==2){
circcol=boxcol+3;
circcolll=boxcoll+2;
circcoll=circcol+12;
circrow=boxrow-5;}
return 1;}
int sendcoinbacktobox(){
sscanf(&box[cursorctr],"%d",&y);
sscanf(&whosecoininbox[cursorctr],"%d",&w);
i=y;
numberofcoinsinbox=0;
assessnumberofcoins();
while (numberofcoinsinbox0){score1=score1-10;}
col=50;
writescore();
origcircrow=120;
circrow=origcircrow;
coincolor=8;}
if (w==2){
if (score2>0){score2=score2-10;}
col=100;
writescore();
origcircrow=220;
circrow=origcircrow;
coincolor=11;}
if (w==3){
if (score3>0){score3=score3-10;}
col=150;
writescore();
origcircrow=320;
circrow=origcircrow;
coincolor=13;}
if (w==4){
if (score4>0){score4=score4-10;}
col=200;
writescore();
origcircrow=420;
circrow=origcircrow;
coincolor=6;}
numberofcoinsinbox++;
}
while (y>0){
if (coinsinbox==5){
circcol=origcirccol;
circrow=origcircrow;}
if (coinsinbox==4){
circcol=origcirccol+35;
circrow=origcircrow;}
if (coinsinbox==3){
circcol=origcirccol+70;
circrow=origcircrow;}
if (coinsinbox==2){
circcol=origcirccol;
circrow=origcircrow+30;}
if (coinsinbox==1){
circcol=origcirccol+35;
circrow=origcircrow+30;}
if (coinsinbox==0){
circcol=origcirccol+70;
circrow=origcircrow+30;}
circcolll=circcol+21;
circcoll=circcol+13;
drawcoin();
if (w==1){player1coins++;}
if (w==2){player2coins++;}
if (w==3){player3coins++;}
if (w==4){player4coins++;}
assessnumberofcoins();
y--;}
numberofcoinsinbox=i;
return (numberofcoinsinbox);}
int drawcoin(){
setfillstyle(SOLID_FILL,coincolor);
bar(circcol+8,circrow+5,circcoll,circrow+15);
bar(circcol,circrow+15,circcolll,circrow+20);
/* circcolll=circcol+21 circcoll=circcol+13*/
return 1;}
int coinstatus(){
if (coinsinbox==1){
circcol=origcirccol+70;
circcolll=circcol+21;
circcoll=circcol+13;
circrow=origcircrow+30;}
if (coinsinbox==2){
circcol=origcirccol+35;
circcolll=circcol+21;
circcoll=circcol+13;
circrow=origcircrow+30;}
if (coinsinbox==3){
circcol=origcirccol;
circcolll=circcol+21;
circcoll=circcol+13;
circrow=origcircrow+30;}
if (coinsinbox==4){
circcol=origcirccol+70;
circcolll=circcol+21;
circcoll=circcol+13;
circrow=origcircrow;}
if (coinsinbox==5){
circcol=origcirccol+35;
circcolll=circcol+21;
circcoll=circcol+13;
circrow=origcircrow;}
if (coinsinbox==6){
circcol=origcirccol;
circrow=origcircrow;
circcolll=circcol+21;
circcoll=circcol+13;}
return 1;}
int assessnumberofcoins(){
if (player==1){
coinsinbox=player1coins;}
if (player==2){
coinsinbox=player2coins;}
if (player==3){
coinsinbox=player3coins;}
if (player==4){
coinsinbox=player4coins;}
return 1;}
int signal(){
radius=7;
if (soundok==1){
sound(700);
delay(150);
nosound();}
setlinestyle(SOLID_LINE,1,1);
setcolor(4);
setfillstyle(SOLID_FILL,4);
circle(col,row,radius+1);
floodfill(col,row,4);
if (player==1){
col=50;}
if (player==2){
col=100;}
if (player==3){
col=150;}
if (player==4){
col=200;}
delay(500);
setcolor(2);
setlinestyle(SOLID_LINE,1,1);
setfillstyle(SOLID_FILL,2);
circle(col,row,radius+1);
floodfill(col,row,2);
if (soundok==1){
sound(900);
delay(150);
nosound();}
return 1;}
int playernobox(){
messageboxc=150;
messageboxr=173;
messageboxcc=500;
messageboxrr=300;
midx=300;
errorscreen();
settextstyle(DEFAULT_FONT,HORIZ_DIR,1);
setcolor(12);
settextjustify(0,1);
outtextxy(messageboxc+5,messageboxr+9,"Start");
setcolor(15);
outtextxy(165,225,"How many players ? -");
cx=165;
cx+=textwidth("How many players ? -");
cx=cx+10;
rx=225;
setfillstyle(SOLID_FILL,1);
bar(cx,rx-5,cx+30,rx+10);
setlinestyle(SOLID_LINE,1,1);
setcolor(0);
line(cx+2,rx-4,cx+2,rx+9);
line(cx+2,rx-4,cx+28,rx-4);
setcolor(15);
line(cx+2,rx+9,cx+28,rx+9);
line(cx+28,rx-4,cx+28,rx+9);
setfillstyle(SOLID_FILL,12);
bar(cx+2,rx-3,cx+4,rx+8);
return 1;}
int updatebox(){
switch(boxcol){
case 305:
if (boxrow==205){
cursorctr=16;}
if (boxrow==180){
cursorctr=17;}
if (boxrow==155){
cursorctr=18;}
if (boxrow==130){
cursorctr=19;}
if (boxrow==105){
cursorctr=20;}
if (boxrow==330){
cursorctr=1;}
if (boxrow==355){
cursorctr=2;}
if (boxrow==380){
cursorctr=3;}
if (boxrow==405){
cursorctr=4;}
if (boxrow==430){
cursorctr=5;}
break;
case 275:
if (boxrow==205){
cursorctr=30;}
if (boxrow==180){
cursorctr=29;}
if (boxrow==155){
cursorctr=28;}
if (boxrow==130){
cursorctr=27;}
if (boxrow==105){
cursorctr=26;}
if (boxrow==430){
cursorctr=6;}
if (boxrow==405){
cursorctr=7;}
if (boxrow==380){
cursorctr=8;}
if (boxrow==355){
cursorctr=9;}
if (boxrow==330){
cursorctr=10;}
break;
case 335:
if (boxrow==205){
cursorctr=25;}
if (boxrow==180){
cursorctr=24;}
if (boxrow==155){
cursorctr=23;}
if (boxrow==130){
cursorctr=22;}
if (boxrow==105){
cursorctr=21;}
if (boxrow==330){
cursorctr=15;}
if (boxrow==355){
cursorctr=14;}
if (boxrow==380){
cursorctr=13;}
if (boxrow==405){
cursorctr=12;}
if (boxrow==430){
cursorctr=11;}
break;
}
switch(boxrow){
case 295:
if (boxcol==365){
cursorctr=40;}
if (boxcol==390){
cursorctr=39;}
if (boxcol==415){
cursorctr=38;}
if (boxcol==440){
cursorctr=37;}
if (boxcol==465){
cursorctr=36;}
if (boxcol==250){
cursorctr=60;}
if (boxcol==225){
cursorctr=59;}
if (boxcol==200){
cursorctr=58;}
if (boxcol==175){
cursorctr=57;}
if (boxcol==150){
cursorctr=56;}
break;
case 265:
if (boxcol==365){
cursorctr=31;}
if (boxcol==390){
cursorctr=32;}
if (boxcol==415){
cursorctr=33;}
if (boxcol==440){
cursorctr=34;}
if (boxcol==465){
cursorctr=35;}
if (boxcol==250){
cursorctr=46;}
if (boxcol==225){
cursorctr=47;}
if (boxcol==200){
cursorctr=48;}
if (boxcol==175){
cursorctr=49;}
if (boxcol==150){
cursorctr=50;}
break;
case 235:
if (boxcol==365){
cursorctr=45;}
if (boxcol==390){
cursorctr=44;}
if (boxcol==415){
cursorctr=43;}
if (boxcol==440){
cursorctr=42;}
if (boxcol==465){
cursorctr=41;}
if (boxcol==250){
cursorctr=55;}
if (boxcol==225){
cursorctr=54;}
if (boxcol==200){
cursorctr=53;}
if (boxcol==175){
cursorctr=52;}
if (boxcol==150){
cursorctr=51;}
break;
case 330:
/* rightbox=2*/
if (boxcol==365){
cursorctr=64;}
/* bottombox=2 */
if (boxcol==250){
cursorctr=61;}
break;
case 205:
/* top box=2 */
if (boxcol==365){
cursorctr=63;}
/* leftbox=2*/
if (boxcol==250){
cursorctr=62;}
break;
}
if (putcoininbox==1){placecoininbox();}
if (pickcoin==3 && hotkey==0){checkifhomecol();}
if (pickcoin==2 || pickcoin==3){
settextstyle(DEFAULT_FONT,HORIZ_DIR,1);
settextjustify(0,1);
setcolor(6);
outtextxy(580,215,&playercoin);
setcolor(6);
outtextxy(565,290,&coins);
sscanf(&whosecoininbox[cursorctr],"%d",&coininbox);
sprintf(&playercoin,"%d",coininbox);
sscanf(&box[cursorctr],"%d",&coininbox);
sprintf(&coins,"%d",coininbox);
setcolor(15);
outtextxy(580,215,&playercoin);
outtextxy(565,290,&coins);}
if (pickcoin==3){
setfillstyle(SOLID_FILL,6);
bar(285,30,340,50);
settextstyle(GOTHIC_FONT,HORIZ_DIR,3);
settextjustify(0,1);
sprintf(&newstr,"%d",boxctr);
setcolor(14);
outtextxy(300,35,&newstr);}
return 1;}
int hitbox(){
strcpy(&box[cursorctr],"0");
sscanf(&box[cursorctr],"%d",&coininbox);
sprintf(&box[cursorctr],"%d",coininbox);
settextstyle(GOTHIC_FONT,HORIZ_DIR,1);
setcolor(14);
cx=385;
jingle();
outtextxy(cx,35,"It's a hit !");
y=0;
while (y0){
if (player==1){
sscanf(&player1inbox[cursorctr],"%d",&specialcoin1);
if (specialcoin1>0){
specialcoin1--;}
if (specialcoin1==0){
sprintf(&player1inbox[cursorctr],"%d","0");}
}
if (player==2){
sscanf(&player2inbox[cursorctr],"%d",&specialcoin2);
if (specialcoin2>0){
specialcoin2--;}
if (specialcoin2==0){
sprintf(&player2inbox[cursorctr],"%d","0");}
}
if (player==3){
sscanf(&player3inbox[cursorctr],"%d",&specialcoin3);
if (specialcoin3>0){
specialcoin3--;}
if (specialcoin3==0){
sprintf(&player3inbox[cursorctr],"%d","0");}
}
if (player==4){
sscanf(&player4inbox[cursorctr],"%d",&specialcoin4);
if (specialcoin4>0){
specialcoin4--;}
if (specialcoin4==0){
sprintf(&player4inbox[cursorctr],"%d","0");}
}
}
w=player;
whatcolorcoin();
player=w;
}
if (cursorctr!=5 || cursorctr!=50 || cursorctr!=61 || cursorctr!=62 || cursorctr!=62 ||
cursorctr!=63 || cursorctr!=64 || cursorctr!=20 || cursorctr!=35){
if (coininbox>0){
sscanf(&whosecoininbox[cursorctr],"%d",&w);
whatcolorcoin();}}
return (coininbox);}
int iscoininbox(){
if (cursorctr!=5 || cursorctr!=50 || cursorctr!=61 || cursorctr!=62 || cursorctr!=62 ||
cursorctr!=63 || cursorctr!=64 || cursorctr!=20 || cursorctr!=35){
ptr=strcmp(&box[cursorctr],"0");
if (ptr==0){ok=5;}
if (ptr>0 || ptr<0){ok=0;}
}
if (cursorctr==5 || cursorctr==50 || cursorctr==61 || cursorctr==62 || cursorctr==62 ||
cursorctr==63 || cursorctr==64 || cursorctr==20 || cursorctr==35){
ok=-1;}
return (ok);}
int whosecoin(){
sprintf(&playercoin,"%d",player);
ptr=strcmp(&whosecoininbox[cursorctr],&playercoin);
if (ptr==0){ok=0;}
if (ptr<0 || ptr>0){
ok=4;}
return (ok);}
int whosecoinisleft(){
sscanf(&player1inbox,"%d",&specialcoin1);
if (specialcoin1>0){
coincolor=8;}
sscanf(&player2inbox,"%d",&specialcoin2);
if (specialcoin2>0){coincolor=11;}
sscanf(&player3inbox,"%d",&specialcoin3);
if (specialcoin3>0){
coincolor=13;}
sscanf(&player4inbox,"%d",&specialcoin4);
if (specialcoin4>0){coincolor=6;}
return (coincolor);}
int redrawbox(){
if (cursorctr<61){
incolor=15;}
if (cursorctr>=61){
incolor=0;}
setfillstyle(SOLID_FILL,incolor);
bar(boxcol+1,boxrow-4,boxcoll+4,boxroww-1);
if (leftbox==2 || rightbox==2){
setlinestyle(SOLID_LINE,1,1);
setcolor(12);
/* 4 box cross lines */
line(boxcol,boxrow-5,boxcoll+5,boxroww);
line(boxcol,boxroww,boxcoll+5,boxrow-5);}
if (bottombox==2 || topbox==2){
setcolor(12);
/* 4 box cross lines */
line(boxcol,boxrow-5,boxcoll+5,boxroww);
line(boxcol,boxroww,boxcoll+5,boxrow-5);}
if (cursorctr==1 || cursorctr==5 || cursorctr==16 ||
cursorctr==31 || cursorctr==35 || cursorctr==46 || cursorctr==50 || cursorctr==20){
setlinestyle(SOLID_LINE,1,1);
setcolor(12);
if (leftbox==1 || rightbox==1){
/* 4 box cross lines */
line(boxcol,boxrow-5,boxcoll+5,290);
line(boxcol,290,boxcoll+5,boxrow-5);}
if (bottombox==1 || topbox==1){
/* 4 box cross lines */
line(boxcol,boxrow-5,boxcoll+5,boxroww);
line(boxcol,boxroww,boxcoll+5,boxrow-5);}}
return 1;}
int opponentscoin(){
messagebox();
settextstyle(GOTHIC_FONT,HORIZ_DIR,1);
settextjustify(0,1);
setcolor(14);
cx=380;
if (ok>0 && ok<5){
setcolor(0);
outtextxy(cx,50,"Sorry ! Opponents' coin !");}
if (ok==5){
setcolor(0);
outtextxy(cx,50,"Sorry ! No coin in box !");}
return 1;}
int announcewinner(){
jingle();
messagebox();
settextstyle(GOTHIC_FONT,HORIZ_DIR,1);setcolor(14);cx=383;
if (player==1 && player1wincoin==6){
outtextxy(cx,35,"Player 1 !");}
if (player==2 && player2wincoin==6){
outtextxy(cx,35,"Player 2 !");}
if (player==3 && player3wincoin==6){
outtextxy(cx,35,"Player 3 !");}
if (player==4 && player4wincoin==6){
outtextxy(cx,35,"Player 4 !");}
outtextxy(cx,55,"You win !");
tothrowdice=4;
return 1;}
int firstscreen(){
if (ix==0 || ic==5){
tablet();
settextstyle(SIMPLEX_FONT,HORIZ_DIR,1);
settextjustify(0,1);
setusercharsize(1,4,1,4);
setcolor(3);
outtextxy(35,125,"This is a");
outtextxy(35,145,"shareware software.");
outtextxy(35,165,"To continue using");
outtextxy(35,185,"this software, please send a");
outtextxy(35,205,"cheque of Rs.800.00 only or $20.00");
outtextxy(35,225,"drawn in favor of");
setcolor(12);
outtextxy(35,250,"J.V.Ravichandran");
setcolor(12);
outtextxy(35,270,"Proprietor/Software
Architect/Consultant.");
setcolor(0);
outtextxy(35,290,"and address it to");
settextstyle(BOLD_FONT,HORIZ_DIR,1);
settextjustify(0,1);
setcolor(2);
outtextxy(105,340,"B - 10,");
outtextxy(105,360,"Triveni Apartments,");
outtextxy(105,380,"Vikas puri, New Delhi-18");
outtextxy(105,395,"(c) Semantix Computers, New Delhi,
1998.");
delay(1000);}
if (ic!=5){
col=609;
row=415;
while (col>30){setlinestyle(SOLID_LINE,1,1);setcolor(15);line
(col,26,col,row);row=row-2;col=col-3;delay(30);
if (col==370 || col==371 || col==372 || col==373 || col==374 || col==375){
settextstyle(SANS_SERIF_FONT,HORIZ_DIR,1);
setcolor(10);
outtextxy(375,225,"(Ludo)");}
}
}
sound(2900);
delay(250);
nosound();
if (ix==0){color=4;}
if (ix==1){color=2;}
setlinestyle(SOLID_LINE,1,3);
setcolor(color);
line(x,173,x+5,175);
line(y,173,y+5,175);
line(xx,173,xx+5,175);
if (ok==20){
col=30;
row=26;
while (col<610){row1=row+2;setlinestyle(SOLID_LINE,1,1);setcolor(0);line
(col,26,col,row1);row=row+2;col=col+3;delay(30);}}
settextstyle(GOTHIC_FONT,HORIZ_DIR,1);
setcolor(10);
outtextxy(475,250,"The royal game");
outtextxy(535,295,"of dice !");
logo();
delay(4000);
setcolor(2);
settextstyle(COMPLEX_FONT,HORIZ_DIR,1);
settextjustify(0,1);
setusercharsize(1,3,1,1);
outtextxy(175,295,"Designed & developed");
cx=175;
cx+=textwidth("Designed & developed");
setcolor(14);
settextstyle(SANS_SERIF_FONT,HORIZ_DIR,1);
settextjustify(0,1);
setusercharsize(1,3,1,1);
outtextxy(cx,335,"by");
cx+=textwidth("by");
setcolor(4);
settextstyle(COMPLEX_FONT,0,1);
settextjustify(0,1);
setusercharsize(1,3,1,1);
outtextxy(cx+10,355,"J.V.Ravichandran");
getch();
return 1;}
int about(){
ok=1;
ctr=0;
counter=1;
handle=open("about.HLP",O_RDONLY | O_TEXT);
coll=630;
ic=6;
writehelp();
return 1;}
int howtoplay(){
ok=3;
coll=630;
ic=6;
tablet();
ok=3;
logo();
settextstyle(TRIPLEX_SCR_FONT,HORIZ_DIR,1);
settextjustify(0,1);
setusercharsize(1,2,1,2);
setcolor(10);
outtextxy(50,40,"How to play LUDO");
return 1;}
int drawbox(){
if (player==1){
color=10;
color1=14;
col=15;
row=95;
coll=130;
row1=175;}
if (player==2){
color=9;
color1=1;
row=row+100;
row1=row+80;}
if (player==3){
color=3;
color1=12;
row=row+200;
row1=row+80;}
if (player==4){
color=14;
color1=10;
row=row+300;
row1=row+80;}
setfillstyle(SOLID_FILL,color);
bar(col,row,coll,row1);
setfillstyle(SOLID_FILL,color1);
bar(col,row,coll,row+15);
return 1;}
int tablet(){
setfillstyle(SOLID_FILL,15);
bar(25,20,coll,420);
setfillstyle(SOLID_FILL,7);
bar(25,20,coll,23);
setfillstyle(SOLID_FILL,0);
bar(coll-4,24,coll,416);
setfillstyle(SOLID_FILL,7);
bar(coll-3,20,coll,420);
setfillstyle(SOLID_FILL,8);
bar(25,22,28,420);
bar(25,417,coll-2,420);
setlinestyle(SOLID_LINE,1,1);
setcolor(15);
line(25,20,29,24);
line(coll,20,coll-4,24);
line(25,420,29,416);
line(coll,420,coll-4,416);
setlinestyle(SOLID_LINE,1,1);
setcolor(0);
line(29,24,coll-5,24);
setlinestyle(SOLID_LINE,1,1);
if (ix==0){color=0;}
if (ix==1){color=14;}
/* 3 circles */
setcolor(color);
circle(310,220,25);
setfillstyle(SOLID_FILL,color);
floodfill(310,220,color);
setcolor(color);
circle(94,75,25);
setfillstyle(SOLID_FILL,color);
floodfill(94,75,color);
setcolor(color);
circle(540,372,25);
setfillstyle(SOLID_FILL,color);
floodfill(540,372,color);
if (ix==0){
col=609;
row=415;
while (col>30){setlinestyle(SOLID_LINE,1,1);setcolor(0);line
(col,26,col,row);row=row-2;col=col-3;}color=2;}
if (ix==1){color=4;}
settextstyle(SANS_SERIF_FONT,HORIZ_DIR,3);
settextjustify(0,1);
setusercharsize(3,1,1,1);
setcolor(color);
outtextxy(200,100,"GREYcells");
if (ix==0){color=4;}
if (ix==1){color=2;}
settextstyle(GOTHIC_FONT,HORIZ_DIR,3);
settextjustify(0,1);
setusercharsize(2,1,1,1);
setcolor(color);
outtextxy(325,175,"Dayakattai");
cx=325;
cx+=textwidth("D");
setcolor(color);
outtextxy(cx,165,"~");
cx=325;
cx+=textwidth("Day");
cx=cx+10;
x=cx;
cx=325;
cx+=textwidth("Dayak");
cx=cx+10;
y=cx;
cx=325;
cx+=textwidth("Dayakatt");
cx=cx+10;
xx=cx;
settextstyle(SANS_SERIF_FONT,HORIZ_DIR,1);
settextjustify(0,1);
if (ix==0){color=10;}
if (ix==1){color=7;}
setcolor(10);
outtextxy(375,225,"(Ludo)");
if (ic==6){
settextstyle(SCRIPT_FONT,HORIZ_DIR,1);
settextjustify(0,1);
setcolor(9);
outtextxy(95,370,"GREYcells series of business applications");
settextstyle(DEFAULT_FONT,HORIZ_DIR,1);
settextjustify(0,1);
setcolor(14);
outtextxy(95,390,"Complete Business Solutions. Total Quality Softwares.");
settextstyle(TRIPLEX_SCR_FONT,HORIZ_DIR,1);
settextjustify(0,1);
setcolor(4);
outtextxy(100,400,"A product of J.V.Ravichandran");}
if (counter==1){
settextstyle(SANS_SERIF_FONT,HORIZ_DIR,1);
settextjustify(0,1);
setusercharsize(2,1,1,1);
setcolor(1);
outtextxy(28,40,"About the software");}
if (counter==10){
settextstyle(SANS_SERIF_FONT,HORIZ_DIR,1);
setusercharsize(1,2,1,1);
settextjustify(0,1);
setcolor(1);
outtextxy(50,35,"Rules & Regulations");}
if (counter==11){
settextstyle(SANS_SERIF_FONT,HORIZ_DIR,1);
setusercharsize(1,2,1,1);
settextjustify(0,1);
setcolor(1);
outtextxy(50,35,"How to play...");}
return 1;}
int logo(){
/* logo */
setlinestyle(SOLID_LINE,1,1);
col=40;
col1=60;
row=345;
row1=370;
ctr=0;
setcolor(1);
while (ctr<10){
line(col,row,col,row1);
line(col,row,col1,row);
line(col1,row,col,row1);
col++;
row1--;
col1--;
row++;
ctr++;}
line(col1+1,row,col,row1);
col=75;
coll=60;
col1=90;
row=395;
row1=410;
ctr=0;
setcolor(2);
while (ctr<15){
line(col,row,col1,row1);
line(col,row,coll,row1);
line(coll,row1,col1,row1);
row++;
coll++;
col1--;
ctr++;}
setcolor(14);
circle(55,385,12);
setfillstyle(SOLID_FILL,14);
floodfill(55,385,14);
settextstyle(SIMPLEX_FONT,HORIZ_DIR,1);
settextjustify(0,1);
setusercharsize(1,4,1,4);
setcolor(12);
outtextxy(35,320,"SEMANTIX Computers");
if (ok==3){
settextstyle(DEFAULT_FONT,HORIZ_DIR,1);
settextjustify(0,1);
setcolor(4);
outtextxy(75,150,"Rules & Regulations");
outtextxy(75,170,"How to play...");
outtextxy(75,190,"Back");
ctr=0;}
return (ctr);}
int drawarrow(){
col=305;
row=330;
settextstyle(SMALL_FONT,HORIZ_DIR,1);
setusercharsize(3,3,3,3);
settextjustify(0,1);
setcolor(4);
outtextxy(307,330,"Start");
setcolor(1);
outtextxy(309,340,"Home");
setcolor(4);
outtextxy(309,205,"Home");
setcolor(1);
outtextxy(307,215,"Start");
settextstyle(SMALL_FONT,VERT_DIR,1);
setusercharsize(3,3,3,3);
settextjustify(0,1);
setcolor(4);
outtextxy(365,275,"Start");
setcolor(1);
outtextxy(375,275,"Home");
setcolor(4);
outtextxy(260,275,"Start");
setcolor(1);
outtextxy(250,275,"Home");
return 1;}
int updatewincoins(){
if (player==1){
player1wincoin++;}
if (player==2){
player2wincoin++;}
if (player==3){
player3wincoin++;}
if (player==4){
player4wincoin++;}
return 1;}
int writehelp(){
ic=6;
tablet();
logo();
cx=35;
rx=70;
ic=1;
settextstyle(DEFAULT_FONT,HORIZ_DIR,1);
settextjustify(0,1);
setcolor(4);
lseek(handle,0L,SEEK_SET);
ptr=2;
while (!eof(handle)){
read(handle,&str[1],1);
if (cx>560){
ptr=strcmp(&str[1]," ");
if (ptr==0){
cx=35;
rx=rx+20;}}
if (ptr!=0){
outtextxy(cx,rx,&str[1]);
cx+=textwidth(&str[1]);}
if (rx>310 && pagectr==1){getch();w=11;}
if (rx>310 && w>=10){
setcolor(10);
outtextxy(300,320,"Press any key ...");
pagectr++;
getch();
coll=640;
ok=2;
ic=6;
tablet();
logo();
rx=70;
cx=35;
settextstyle(DEFAULT_FONT,HORIZ_DIR,1);
settextjustify(0,1);}
if (cx==35 && ptr==0){ptr=2;}
}
getch();
close(handle);
return (ctr);}
int checkifhomecol(){
if (player==1 && player1hit==1){
if (boxcol==305 && boxrow>330){
home=1;
hotkey=1;}}
if (player==2 && player2hit==1){
if (boxcol==305 && boxrow<205){
home=1;
hotkey=1;}}
if (player==3 && player3hit==1){
if (boxrow==265 && boxcol>365){
home=1;
hotkey=1;}}
if (player==4 && player4hit==1){
if (boxrow==265 && boxcol<250){
home=1;
hotkey=1;}}
return (hotkey);}
int updatecoin(){
checkifwincol();
if (okctr==1){jingle();updatewincoins();announcewinner();sscanf(&hotcoin
[hitctr],"%d",&hotctr);oktoplace=0;okplace=1;okctr=0;ct=0;hotkey=0;home=0;}
if (okctr==0){
if (hotkey==1){sscanf(&hotcoin[hitctr],"%d",&hotctr);}
putcoininbox=0;
updatebox();
checkifcoininboxishot();
putcoininbox=1;
updatebox();
sizecoin();
drawcoin();
if (hotctr>0){
hotctr++;}
if (hotctr==0){
hotctr=1;}
sprintf(&hotcoin[cursorctr],"%d",hotctr);
okplace=1;}
return (ct);}
int ishotcoin(){
hotkey=0;
hotctr=0;
hitctr=cursorctr;
if (player==1 && boxcol==305 && boxrow>=330){
sscanf(&hotcoin[cursorctr],"%d",&hotctr);
if (hotctr>0){hotctr--;hotkey=1;}}
if (player==2 && boxcol==305 && boxrow>=330){
sscanf(&hotcoin[cursorctr],"%d",&hotctr);
if (hotctr>0){hotctr--;hotkey=1;}}
if (player==3 && boxrow==265 && boxcol>=365){
sscanf(&hotcoin[cursorctr],"%d",&hotctr);
if (hotctr>0){hotctr--;hotkey=1;}}
if (player==4 && boxrow==265 && boxcol>=150){
sscanf(&hotcoin[cursorctr],"%d",&hotctr);
if (hotctr>0){hotctr--;hotkey=1;}}
return (hotkey);}
int checkifwincol(){
okctr=0;
if (player==1){
if (boxcol==305 && boxrow==330){
okctr=1;}}
if (player==2){
if (boxcol==305 && boxrow==205){
okctr=1;}}
if (player==3){
if (boxrow==265 && boxcol==365){
okctr=1;}}
if (player==4){
if (boxrow==265 && boxcol==250){
okctr=1;}}
return (okctr);}
int checkifcoininboxishot(){
sscanf(&box[cursorctr],"%d",&coininbox);
if (coininbox>0){
sscanf(&hotcoin[cursorctr],"%d",&hotctr);}
if (coininbox==0){
hotctr=0;}
return (hotctr);}