/************************************************************************/ /* Designed & developed by J.V.RAVICHANDRAN. */ /* Started on 02/05/1998. */ /* Author's name -- J.V.RAVICHANDRAN */ /* Company's name -- Semantix Computers. */ /* Company's address -- B-10, Triveni Apartments, */ /* Vikas puri, New Delhi - 110018. */ /* Completed on -- 15th May, 1998. */ /* Name of software -- GREYcells LUDO */ /* Nature of software -- Game */ /************************************************************************/ #include#include #include #include #include #include #include #include #include #include #include #define ALT 1 char *hotcoin[65]; char *player1inbox[6]; char *player2inbox[6]; char *player3inbox[6]; char *player4inbox[6]; int specialcoin1=0,specialcoin2=0,specialcoin3=0,specialcoin4=0; char terminator; int player1wincoin,player2wincoin,player3wincoin,player4wincoin,ik=2,pagectr,menu,esckey=1; int home,hotctr,oktoplace,okplace,okctr,hitctr,hotkey,score1,score2,score3,score4; int roww,col,row,radius,coininbox,coin,ok,row1,coll,col1,radius,color1,okk,number; int cursorctr=1,pickcoin,numberofcoinsinbox=0,boxctr,ptr,tothrowdice=0,putcoininbox=0; int gdriver = VGA, gmode=VGAHI, err_code,time_spent=0,incolor; int i,x,y,xx,yy,barx,bary,barxx,baryy,key,scorex,score,ix=0,cx; int messageboxc,messageboxr,messageboxcc,messageboxrr,midx,soundon=1; int startstatus=0; int menuon,menuflag,menuitem,item; int menucol,menurow,menucoll,menuroww,playerctr=0; int ic,cx,rx,player=0,entered=0,textcounter,lasttextcounter; int dicecol,dicerow,dicecoll,diceroww,dice1,dice2; char *str[45]; char *box[65]; char *whosecoininbox[65]; char newstr,coins,playercoin; int handle; void *sbox; void *cursorbox; unsigned size; unsigned cursorsize; int boxrow=200,boxcol=335,boxcoll=360,boxroww=225,soundok=1; int incolor,linecolor,bgcolor,coin,ctr,circrow,circcol,circcoll,circroww,circcolll,coinboxcolor,coinsinbox=6,coincolor; int seed,count,color,ccx=10,handle,ct,gamestart,sharecounter,coininbox; int w,h,vy,i,throw,gameactive=0,cursoron=0,origcirccol,origcircrow; int topbox=0,bottombox=0,leftbox=0,rightbox=0,makemove=0,player1coins=6,player2coins=6,player3coins=6,player4coins=6; int counter,lastcounter,player1hit=0,player2hit=0,player3hit=0,player4hit=0,startctr,endctr; main(){ initgraph(&gdriver, &gmode, ""); err_code = graphresult(); if (err_code !=grOk) { printf("Graphic initialization error...\n"); time_spent=0; while (time_spent<50){ time_spent++; delay(25);} exit(0); }
ct=access("termludo.$$$",0); if (ct==-1){ messagebox(); settextstyle(GOTHIC_FONT,HORIZ_DIR,1);setcolor(14);cx=383; outtextxy(cx,35,"Intruder alert ! Please contact"); outtextxy(cx,55,"the developer immediately."); cursound(); getch(); ik=1;}
if (ct==0){ handle=_open("termludo.$$$", O_RDONLY | O_TEXT); lseek(handle, 0L, SEEK_SET); while (!eof(handle)){ read(handle,&terminator,4);} chmod("termludo.$$$",S_IWRITE); unlink("termludo.$$$");
_fmode=O_BINARY; handle=_creat("termludo.$$$", FA_HIDDEN); lseek(handle, 0L, SEEK_SET);
sscanf(&terminator,"%d",&counter); counter++; sprintf(&terminator,"%d",counter); _write(handle,&terminator,4); chmod("termludo.$$$",S_IREAD); _close(handle); if (counter<38){ ik=0;} if (counter>38){ jingle(); ic=0; ix=0; coll=616; firstscreen(); getch(); cleardevice(); ik=1; sharecounter=1;}} if (ik==0){ ic=0; coll=616; counter=0; firstscreen(); repaint(); gamestart=2; ix=1;} while (ix==1){ key=getch(); switch(key){ case 8: if (textcounter>1 && entered==1){ cx-=textwidth(&key); setfillstyle(SOLID_FILL,1); bar(cx,rx-3,cx+10,rx+8); textcounter--; setfillstyle(SOLID_FILL,12); bar(cx+2,rx-3,cx+4,rx+8);} break; case 61: if (gamestart==1 && gameactive==1){ if (tothrowdice==0){ assessnumberofcoins(); if (vy==5 || vy==1){ esckey=1;} if (esckey==1){ if (coinsinbox==6){ cursound();} if (coinsinbox<6){ dice1=vy; putcoininbox=0; vy=0; placecoin(); saveboxcursor(); boxcursoron(); vy=dice1; okk=0; boxctr=0; pickit(); makemove=1; tothrowdice=2;}} }} break; case 60: jingle(); number=3; time_spent=random(number); if (time_spent==0){ srand(i);} if (time_spent==1){ srand(h);} if (time_spent==2){ srand(i);} if (time_spent==3){srand(h);srand(i);} break; case 9: if (gamestart==2){ if (menuon==0 && menuitem==2 && item==1){ if (ctr==0){ col=70; coll=col; settextstyle(DEFAULT_FONT,HORIZ_DIR,1); settextjustify(0,1); coll+=textwidth("Rules & Regulations"); row=140; messageboxc=col; messageboxr=row; messageboxcc=coll+15; messageboxrr=row+20; savebox(); setfillstyle(SOLID_FILL,10); bar(col,row,coll+10,row+15); setcolor(14); outtextxy(75,150,"Rules & Regulations");} if (ctr==1){ restorebox(); coll+=textwidth("How to play..."); messageboxc=col; messageboxr=row; messageboxcc=coll+15; messageboxrr=row+20; savebox(); setfillstyle(SOLID_FILL,10); bar(col,row,coll+10,row+15); settextstyle(DEFAULT_FONT,HORIZ_DIR,1); settextjustify(0,1); setcolor(14); outtextxy(75,170,"How to play...");} if (ctr==2){ restorebox(); coll+=textwidth("Back"); messageboxc=col; messageboxr=row; messageboxcc=coll+15; messageboxrr=row+20; savebox(); setfillstyle(SOLID_FILL,10); bar(col,row,coll+10,row+15); settextstyle(DEFAULT_FONT,HORIZ_DIR,1); settextjustify(0,1); setcolor(14); outtextxy(75,190,"Back");} ctr++; row=row+20; col=70; coll=col; if (ctr>3){ restorebox(); ctr=0;} } } break; case 32: if (gamestart==1){ if (tothrowdice==2 && okk==0){ iscoininbox(); if (ok==5){opponentscoin();ok=3;} if (ok==0){whosecoin();} if (ok==0 || ok==-1){ ishotcoin(); boxctr=0; pickcoin=3; pickcoininbox(); if (coininbox==0){ restoreboxcursor(); redrawbox(); saveboxcursor();} w=player; whatcolorcoin(); player=w; boxcursoron(); sizecoin(); drawcoin(); menuon=2; makemove=1; gameactive=1; tothrowdice=3;} if (ok==4){opponentscoin();ok=3;getch();pickit();} if (ok==3){ok=0;pickcoin=2;} } if (tothrowdice==1){ throw=0; startstatus=0; makemove=0; throwdice(); if (vy==1 || vy==5){ gameactive=1; makemove=1; assessnumberofcoins(); if (coinsinbox>0){ makemove=0; tothrowdice=0;}} if (vy!=1 && vy!=5){ assessnumberofcoins(); if (coinsinbox<6){ pickit(); makemove=1; putcoininbox=0; placecoin(); saveboxcursor(); boxcursoron(); okk=0; tothrowdice=2; makemove=1;} if (coinsinbox==6){ okk=1; tothrowdice=0; makemove=0; ct=4; diceboxstart();}} } } if (gamestart==2){ if (menuon==2){ settextstyle(DEFAULT_FONT,HORIZ_DIR,1); settextjustify(1,1); sound(100); delay(50); nosound(); soundon++; if (soundon>1){soundon=0;} if (soundon==0){ soundok=0;} if (soundon==1){ soundok=1;} restorebox(); setcolor(7); settextstyle(DEFAULT_FONT,VERT_DIR,1); settextjustify(0,1); outtextxy(18,11,"0"); menu=0; item=0; menuon=0; menuon=0;}} break; case ALT==1: case 129: if (gamestart==2 && menuon==0){ menu=1; menucol=15; menurow=14; menucoll=164; menuroww=36; messageboxc=15; messageboxr=14; messageboxcc=164; messageboxrr=36; savebox(); dropdownmenu();
setcolor(12); settextstyle(DEFAULT_FONT,VERT_DIR,1); settextjustify(0,1); outtextxy(18,11,"0");
settextstyle(DEFAULT_FONT,HORIZ_DIR,1); settextjustify(1,1); setcolor(15); if (soundon==1){ outtextxy(menucol+75,menurow+13,"Sound ( ON )");} if (soundon==0){ outtextxy(menucol+75,menurow+13,"Sound ( OFF )");} menuon=2;} break; case 34: if (gamestart==2 && menuon==0){ menu=0; settextstyle(DEFAULT_FONT,HORIZ_DIR,1); settextjustify(0,1); cx=10; setcolor(12); outtextxy(cx,60,"G"); cx+=textwidth("G"); cx=cx+1; setcolor(15); outtextxy(cx,60,"ame"); menucol=10; menurow=63; menucoll=130; menuroww=106; messageboxc=menucol; messageboxr=menurow; messageboxcc=menucoll; messageboxrr=menuroww; savebox(); dropdownmenu(); settextstyle(DEFAULT_FONT,HORIZ_DIR,1); settextjustify(1,1); setcolor(8); outtextxy(menucol+60,menurow+13,"Start"); outtextxy(menucol+60,menurow+33,"Quit"); item=0; menuitem=1; menuon=1;} break; case 35: if (gamestart==2 && menuon==0){ ctr=0; menu=0; settextstyle(DEFAULT_FONT,HORIZ_DIR,1); settextjustify(0,1); cx=100; setcolor(12); outtextxy(cx,60,"H"); cx+=textwidth("H"); cx=cx+1; setcolor(15); outtextxy(cx,60,"elp"); menucol=100; menurow=63; menucoll=239; menuroww=106; messageboxc=menucol; messageboxr=menurow; messageboxcc=menucoll; messageboxrr=menuroww; savebox(); dropdownmenu(); settextstyle(DEFAULT_FONT,HORIZ_DIR,1); settextjustify(1,1); setcolor(8); outtextxy(menucol+75,menurow+13,"How to use..."); outtextxy(menucol+70,menurow+33,"About"); item=0; menuon=1;menuitem=2;} break; case 77: if (gamestart==1 && gameactive==1 && makemove==1){ restoreboxcursor(); if (bottombox==2){ if (pickcoin==3){boxctr--;} boxcol=275; firstbox(); bottombox=1;} if (bottombox==1 && boxcol==335 && boxrow==330){ if (pickcoin==3){ boxctr--;} boxcol=boxcol+30; boxcoll=boxcol+20; boxroww=boxrow+20; rightbox=2; bottombox=0;} if (bottombox==1 && boxcol<335 && boxrow==430){ if (pickcoin==3){ boxctr--;} boxcol=boxcol+30; firstbox();}
if (topbox==1 && boxcol<335 && boxrow==105){ if (pickcoin==3){ boxctr++;} boxcol=boxcol+30; firstbox();}
if (topbox==1 && boxcol==335 && boxrow==205){ if (pickcoin==3){ boxctr++;} boxcol=boxcol+30; boxcoll=boxcol+20; boxroww=boxrow+20; topbox=2;}
if (leftbox==2){ if (pickcoin==3){ boxctr++;} boxcol=275; boxcoll=boxcol+25; boxroww=boxrow+20; topbox=1; leftbox=0;}
if (rightbox==1 && boxcol<465){ if (pickcoin==3 && boxrow==235){ if (hotkey==0){ boxctr++;} if (hotkey==1){boxctr--;}} if (pickcoin==3 && boxrow==265){ boxctr++;} if (pickcoin==3 && boxrow==295){ boxctr--;} boxcol=boxcol+25; secondbox();}
if (leftbox==1 && boxcol<250){ if (pickcoin==3 && boxrow==235){ boxctr++;} if (pickcoin==3 && boxrow==265){ if (hotkey==1){ boxctr++;} if (hotkey==0){boxctr--;}} if (pickcoin==3 && boxrow==295){ boxctr--;} boxcol=boxcol+25; secondbox();} if (pickcoin==2){ if (boxrow==330 && boxcol<335){ boxcol=boxcol+30;firstbox();} if (boxcol<335 && boxrow==205){ boxcol=boxcol+30;firstbox();}} saveboxcursor(); boxcursoron(); updatebox(); if (pickcoin==3){ sizecoin(); drawcoin();} } break; case 75: /* Left arrow */ if (gamestart==1 && gameactive==1 && makemove==1){ restoreboxcursor(); if (rightbox==1 && boxcol>365){ if (pickcoin==3 && boxrow==235){ boxctr--;} if (pickcoin==3 && boxrow==295){ boxctr++;} if (boxrow==265 && pickcoin==3){ if (hotkey==1){ boxctr++;} if (hotkey==0){boxctr--;}} boxcol=boxcol-25; secondbox();}
if (topbox==2){ if (pickcoin==3){ boxctr--;} boxcol=335; firstbox(); topbox=1;}
if (topbox==1 && boxcol==275 && boxrow==205){ if (pickcoin==3){ boxctr--;} boxcol=250; boxcoll=boxcol+20; boxroww=boxrow+20; leftbox=2; topbox=0;}
if (topbox==1 && boxcol>275 && boxrow==105){ if (pickcoin==3){ boxctr--;} boxcol=boxcol-30; firstbox();}
if (bottombox==1 && boxcol==275 && boxrow==330){ if (pickcoin==3){ boxctr++;} boxcol=250; boxcoll=boxcol+20; boxroww=boxrow+20; bottombox=2;} if (bottombox==1 && boxrow==430 && boxcol>275){ if (pickcoin==3){ boxctr++;} boxcol=boxcol-30; firstbox();}
if (leftbox==1 && boxcol>150){ if (pickcoin==3 && boxrow==295){ boxctr++;} if (pickcoin==3 && boxrow==265){ if (hotkey==1){boxctr--;} if (hotkey==0){ boxctr++;}} if (pickcoin==3 && boxrow==235){ boxctr--;} boxcol=boxcol-25; secondbox();} if (rightbox==2){ if (pickcoin==3){ boxctr++;} boxcol=boxcol-30; firstbox(); bottombox=1; rightbox=0;} if (pickcoin==2){ if (boxcol>275 && boxrow==205){ boxcol=boxcol-30;firstbox();} if (boxcol>275 && boxrow==330){ boxcol=boxcol-30;firstbox();}} saveboxcursor(); boxcursoron(); updatebox(); if (pickcoin==3){ sizecoin(); drawcoin();} } break; case 72: if (gamestart==1 && gameactive==1 && makemove==1){ restoreboxcursor(); if (rightbox==1 && boxrow==235 && boxcol==365){ if (pickcoin==3){ boxctr--;} boxrow=boxrow-30; boxcoll=boxcol+20; boxroww=boxrow+20; topbox=2; rightbox=0;} if (rightbox==1 && boxcol==465 && boxrow>235){ if (pickcoin==3){ boxctr--;} boxrow=boxrow-30; secondbox();} if (rightbox==2){ boxrow=295; if (pickcoin==3){ boxctr--;} secondbox(); rightbox=1;} if (leftbox==1 && boxrow==235 && boxcol==250){ if (pickcoin==3){ boxctr++;} boxrow=boxrow-30; boxcoll=boxcol+20; boxroww=boxrow+20; leftbox=2;}
if (leftbox==1 && boxrow>235 && boxcol==150){ if (pickcoin==3){ boxctr++;} boxrow=boxrow-30; secondbox();}
if (bottombox==2){ if (pickcoin==3){ boxctr++;} leftbox=1; boxrow=295; secondbox(); bottombox=0;}
if (bottombox==1 && boxrow>330){ if (pickcoin==3 && boxcol==275){ boxctr++;} if (boxcol==305 && pickcoin==3){ if (hotkey==0){ boxctr--;} if (hotkey==1){ boxctr++;}} if (pickcoin==3 && boxcol==335){ boxctr--;} boxrow=boxrow-25; firstbox();}
if (topbox==1 && boxrow>105){ if (pickcoin==3 && boxcol==275){ boxctr++;} if (pickcoin==3 && boxcol==335){ boxctr--;} if (boxcol==305 && pickcoin==3){ if (hotkey==0){ boxctr++;} if (hotkey==1){ boxctr++;}} boxrow=boxrow-25; firstbox();} if (pickcoin==2){ if (boxcol==365 && boxrow>235){ boxrow=boxrow-30;secondbox();} if (boxrow>235 && boxcol==250){ boxrow=boxrow-30;secondbox();}}
saveboxcursor(); boxcursoron(); updatebox(); if (pickcoin==3){ sizecoin(); drawcoin();} } break; case 80: if (gamestart==1 && gameactive==1 && makemove==1){ restoreboxcursor(); if (rightbox==1 && boxrow==295 && boxcol==365){ if (pickcoin==3){ boxctr++;} boxrow=330; boxcoll=boxcol+20; boxroww=boxrow+20; rightbox=2;} if (rightbox==1 && boxcol==465 && boxrow<295){ if (pickcoin==3){ boxctr++;} boxrow=boxrow+30; secondbox();} if (topbox==2){ if (pickcoin==3){ boxctr++;} boxrow=235; secondbox(); rightbox=1; topbox=0;} if (leftbox==2){ if (pickcoin==3){ boxctr--;} boxrow=boxrow+30; secondbox(); leftbox=1;} if (leftbox==1 && boxrow==295 && boxcol==250){ if (pickcoin==3){ boxctr--;} boxrow=330; boxcoll=boxcol+20; boxroww=boxrow+20; bottombox=2; leftbox=0;} if (leftbox==1 && boxrow<295 && boxcol==150){ if (pickcoin==3){ boxctr--;} boxrow=boxrow+30; secondbox();}
if (bottombox==2){ boxcol=250; boxrow=330; cursound(); boxcoll=boxcol+20; boxroww=boxrow+20;}
if (bottombox==1 && boxrow<430){ if (pickcoin==3 && boxcol==335){ boxctr++;} if (pickcoin==3 && boxcol==275){ boxctr--;} if (boxcol==305 && pickcoin==3){ if (hotkey==0){ boxctr++;} if (hotkey==1){ boxctr--;}} boxrow=boxrow+25; firstbox();}
if (topbox==1 && boxrow<205){ if (pickcoin==3 && boxcol==275){ boxctr--;} if (pickcoin==3 && boxcol==335){ boxctr++;} if (boxcol==305 && pickcoin==3){ if (hotkey==0){ boxctr--;} if (hotkey==1){ boxctr++;}} boxrow=boxrow+25; firstbox();} if (pickcoin==2){ if (boxrow<295 && boxcol==250){ boxrow=boxrow+30;secondbox();} if (boxcol==365 && boxrow<295){ boxrow=boxrow+30;secondbox();}} saveboxcursor(); boxcursoron(); updatebox(); if (pickcoin==3){ sizecoin(); drawcoin();} }
if (gamestart==2){ if (menuon==1 && menuitem==1){ if (item==0){ threed_menu();
settextstyle(DEFAULT_FONT,HORIZ_DIR,1); settextjustify(1,1); setcolor(15); outtextxy(menucol+60,menurow+13,"Start");} if (item==1){ twod_menu();
settextstyle(DEFAULT_FONT,HORIZ_DIR,1); settextjustify(1,1); setcolor(8); outtextxy(menucol+60,menurow+13,"Start"); setlinestyle(SOLID_LINE,1,1); threed_menuitem2(); setcolor(15); outtextxy(menucol+60,menurow+33,"Quit");} if (item==2){ twod_menuitem2(); setcolor(8); outtextxy(menucol+60,menurow+33,"Quit");}
sound(20); delay(75); nosound(); item++; if (item==3){ item=0;} } if (menuon==1 && menuitem==2){ if (item==0){ threed_menu();
settextstyle(DEFAULT_FONT,HORIZ_DIR,1); settextjustify(1,1); setcolor(15); outtextxy(menucol+75,menurow+13,"How to use...");} if (item==1){ twod_menu();
settextstyle(DEFAULT_FONT,HORIZ_DIR,1); settextjustify(1,1); setcolor(8); outtextxy(menucol+75,menurow+13,"How to use..."); setlinestyle(SOLID_LINE,1,1); threed_menuitem2(); setcolor(15); outtextxy(menucol+70,menurow+33,"About");} if (item==2){ twod_menuitem2(); setcolor(8); outtextxy(menucol+70,menurow+33,"About");} sound(20); delay(75); nosound(); item++; if (item==3){ item=0;} } } break; case 13: if (textcounter==2 && entered==1){ textcounter--; strcpy(&newstr,&str[textcounter]); outtextxy(cx,rx,&newstr); sscanf(&newstr,"%d",&playerctr); if (playerctr<2){ playernobox(); player=playerctr; entered=3; textcounter=4;} if (playerctr>1){ tothrowdice=1; gameactive=0; gamestart=1; entered=3; textcounter=4;} } if (gamestart==1 && gameactive==1){ if (tothrowdice==3){ if (boxctr!=vy){cursound();messagebox(); settextstyle(GOTHIC_FONT,HORIZ_DIR,1); setcolor(14); cx=383; cursound(); outtextxy(cx,35,"Moved squares not equal to"); outtextxy(cx,55,"Dice value ! Move cursor only"); outtextxy(cx,75,"dice value n times !");getch();messagebox();} if (boxctr==vy){ restoreboxcursor(); if (home==1){ updatecoin();diceboxstart();tothrowdice=1;okplace=1;pickcoin=2; if (vy!=6 && vy!=12 && vy!=1 && vy!=5){ct=4;} if (esckey==1){ct=0;esckey=0;} if (vy==6 || vy==12){ct=0;} home=0;hotkey=0;okctr=0;} if (okplace==0){ iscoininbox(); if (ok!=5 && ok!=-1){ whosecoin(); if (ok==4){ messagebox(); putcoininbox=0; pickcoin=2; updatebox(); sizecoin(); drawcoin(); startstatus=0; hotkey=0; sendcoinbacktobox(); hitbox(); delay(2000); putcoininbox=1; pickcoin=2; updatebox(); ct=0;} if (ok==0){ ct=5;ok=1;}} if (ok==5 || ok==-1){ sizecoin(); drawcoin(); hotkey=0; startstatus=0; putcoininbox=1; pickcoin=2; updatebox(); if (esckey==1){ct=0;esckey=0;} if (vy!=6 && vy!=12 && vy!=1 && vy!=5){ct=4;} if (vy==6 || vy==12){ct=0;}} /* End of okplace=0 loop */ } diceboxstart(); ct=0; tothrowdice=1;} } if (tothrowdice==0){ if (vy==1 || vy==5){ assessnumberofcoins(); if (coinsinbox==0){ placecoin(); saveboxcursor(); boxcursoron(); tothrowdice=2; hotkey=0; okk=0; pickcoin=2; makemove=1;} if (coinsinbox<=6){ placecoin(); sizecoin(); drawcoin(); hotkey=0; putcoininbox=0; pickcoin=2; jingle(); ct=0; diceboxstart(); makemove=0;tothrowdice=1;}}} if (tothrowdice==4){ gameactive=3;} } if (gamestart==2){ if (menuon==0 && menuitem==2 && item==1){ if (ctr==1){restorebox(); coll=640; counter=10; w=11;handle=open("REGUL.HLP",O_RDONLY | O_TEXT); ok=0; writehelp();ok=3;w=0;counter=0;howtoplay();ctr=0;} if (ctr==2){ coll=640; w=11; counter=11; handle=open("howto.HLP",O_RDONLY | O_TEXT); ok=0; writehelp();w=0;counter=0;howtoplay();ctr=0;} if (ctr==3){restorebox(); ok=0;repaint();gamestart=2;item=0;ctr=0;menuon=0;menuflag=0;} } if (menuon==1 && menuitem==1){ restorebox(); if (item==0){ settextstyle(DEFAULT_FONT,HORIZ_DIR,1); settextjustify(0,1); cx=10; setcolor(15); outtextxy(cx,60,"G"); cx+=textwidth("G"); cx=cx+1; setcolor(12); outtextxy(cx,60,"ame");menuon=0;menuitem=0;} if (item==1){ settextstyle(DEFAULT_FONT,HORIZ_DIR,1); settextjustify(0,1); cx=10; setcolor(15); outtextxy(cx,60,"G"); cx+=textwidth("G"); cx=cx+1; setcolor(12); outtextxy(cx,60,"ame"); playernobox(); player=0; textcounter=1;} if (item==2){ settextstyle(DEFAULT_FONT,HORIZ_DIR,1); settextjustify(0,1); cx=10; setcolor(15); outtextxy(cx,60,"G"); cx+=textwidth("G"); cx=cx+1; setcolor(12); outtextxy(cx,60,"ame"); ix=1; ok=0; cleardevice(); coll=616; color=0; ic=5; ok=20; counter=0; firstscreen(); menuon=0; count=1; ix=0;} } if (menuon==1 && menuitem==2){ restorebox(); settextstyle(DEFAULT_FONT,HORIZ_DIR,1); settextjustify(0,1); cx=100; setcolor(15); outtextxy(cx,60,"H"); setcolor(12); cx+=textwidth("H"); cx=cx+1; outtextxy(cx,60,"elp"); if (item==0){ sound(200); delay(25); nosound();menuon=0;menuitem=0;} if (item==1){ counter=0; ct=access("regul.hlp",0); if (ct!=0){counter=-1;ctr=3;} if (ct==0){ w=0; counter=0; howtoplay();ctr=0;menuon=0;} } if (item==2){ ct=access("howto.hlp",0);if (ct!=0){counter=-1;ctr=3;} if (ct==0){ w=0; counter=1; ct=access("about.hlp",0);if (ct!=0){counter=-1;ctr=3;} about();item=4;} } if (counter==-1){messagebox();cursound();cx=messageboxc+10;outtextxy(cx,35,"Help file(s) missing ! Please"); outtextxy(cx,55,"contact the developer !");getch(); item=4;} if (item==4){ counter=0; repaint();gamestart=2;item=0;} menuon=0;} } if (gamestart==1 && gameactive!=1){ bgcolor=0; incolor=15; linecolor=12; cleardevice(); board(); ix=1; cursorctr=1; item=0; menuon=0; menuflag=0; makemove=2; menuon=0; gameactive=1;} break; case 27: if (gamestart==1 && gameactive==1){ menuon=0; gameactive=3;} if (gamestart==2){ if (player==0 && entered==1){ cursound(); menuitem=0; item=0; gameactive=3;gamestart=3;entered=0;menuon=0;} if (menuon==2){ restorebox(); setcolor(7); settextstyle(DEFAULT_FONT,VERT_DIR,1); settextjustify(0,1); outtextxy(18,11,"0"); entered=0; menuon=0; menu=0;} if (menuon==1 && menuitem==1){ restorebox(); settextstyle(DEFAULT_FONT,HORIZ_DIR,1); settextjustify(0,1); cx=10; setcolor(15); outtextxy(cx,60,"G"); cx+=textwidth("G"); cx=cx+1; setcolor(12); outtextxy(cx,60,"ame"); menuon=0; menuitem=0; item=0;} if (menuon==1 && menuitem==2){ restorebox(); settextstyle(DEFAULT_FONT,HORIZ_DIR,1); settextjustify(0,1); cx=100; setcolor(15); outtextxy(cx,60,"H"); setcolor(12); cx+=textwidth("H"); cx=cx+1; outtextxy(cx,60,"elp");} menuon=0; menuitem=0; item=0; } if (gameactive==3){ gamestart=2; repaint(); gamestart=2; menuon=0; gameactive=0;} break; default: if (textcounter==1 && player==0){ entered=1; setfillstyle(SOLID_FILL,1); bar(cx+2,rx-3,cx+4,rx+8); settextstyle(DEFAULT_FONT,HORIZ_DIR,1); settextjustify(0,1); setcolor(15); outtextxy(cx+2,rx+2,&key); cx+=textwidth(&key); setfillstyle(SOLID_FILL,5); bar(cx+4,rx-3,cx+6,rx+8); strcpy(&str[textcounter],&key); textcounter++;} break; } } chmod("regul.hlp",S_IREAD); chmod("howto.hlp",S_IREAD); cleardevice(); closegraph(); return 0; } int screen(){ setfillstyle(SOLID_FILL,8); bar(0,0,640,21); setfillstyle(SOLID_FILL,12); bar(1,1,25,20); setfillstyle(SOLID_FILL,6); bar(0,22,640,74); settextstyle(DEFAULT_FONT,VERT_DIR,1); settextjustify(0,1); setcolor(7); outtextxy(18,11,"0"); settextstyle(DEFAULT_FONT,HORIZ_DIR,1); settextjustify(0,1); setcolor(15); outtextxy(300,12,"GREYcells"); cx=10; setcolor(15); settextstyle(DEFAULT_FONT,HORIZ_DIR,1); settextjustify(0,1); outtextxy(cx,60,"G"); cx+=textwidth("G"); cx=cx+1; setcolor(12); outtextxy(cx,60,"ame"); cx=100; setcolor(15); outtextxy(cx,60,"H"); cx+=textwidth("H"); cx=cx+1; setcolor(12); outtextxy(cx,60,"elp"); setlinestyle(SOLID_LINE,1,1); setcolor(15); line(0,65,640,65); return 1;}
int pickit(){ messagebox(); settextstyle(GOTHIC_FONT,HORIZ_DIR,1); setcolor(14); cx=380; outtextxy(cx,35,"Move the cursor over your coin."); outtextxy(cx,50,"Pressto pick it."); outtextxy(cx,65,"Move with the keys."); outtextxy(cx,80,"Press to place it.");
return 1;} int repaint(){ cleardevice(); gamestart=2; counter=0; bgcolor=15; incolor=3; linecolor=0; screen(); board(); gamestart=2; pagectr=0; return 1;} int board(){ setfillstyle(SOLID_FILL,bgcolor); bar(0,75,640,480);
setfillstyle(SOLID_FILL,incolor); bar(275,100,365,450); setfillstyle(SOLID_FILL,incolor); bar(150,225,490,325); /* outline box */ setlinestyle(SOLID_LINE,1,1); setcolor(linecolor); line(275,100,275,450); line(365,100,365,450); line(275,100,365,100); line(275,450,365,450); /* centre box */ line(150,225,150,325); line(150,225,490,225); line(490,225,490,325); line(150,325,490,325);
/* top box lines */ setlinestyle(SOLID_LINE,1,1); setcolor(linecolor); line(335,100,335,225); line(305,100,305,225); /* top box squares */ line(275,125,365,125); line(275,150,365,150); line(275,175,365,175); /* Home box */ line(305,225,335,200); line(305,200,335,225); line(305,100,335,125); line(305,125,335,100); /* left box */ line(150,260,275,260); line(150,290,275,290); /* left box squares */ line(225,225,225,325); line(200,225,200,325); line(175,225,175,325); /* Home box */ line(150,290,175,260); line(150,260,175,290); line(275,260,250,290); line(275,290,250,260); /* right box */ line(365,260,490,260); line(365,290,490,290); /* right box squares */ line(415,225,415,325); line(440,225,440,325); line(465,225,465,325); /* Home box */ line(365,260,390,290); line(365,290,390,260); line(465,260,490,290); line(465,290,490,260); /* bottom box */ line(335,325,335,450); line(305,325,305,450); /* Bottom box squares */ line(275,375,365,375); line(275,400,365,400); line(275,425,365,425);
/* Home box */ line(335,325,305,350); line(335,350,305,325); line(335,450,305,425); line(335,425,305,450); /* 4 out squares */ line(250,200,250,350); line(250,350,390,350); line(250,200,390,200); line(390,200,390,350); /* 4 box cross lines */ line(250,225,275,200); line(275,225,250,200);
line(250,325,275,350); line(250,350,275,325);
line(365,350,390,325); line(365,325,390,350);
line(365,200,390,225); line(365,225,390,200); /* diagonal lines */ line(275,225,365,325); line(275,325,365,225); settextstyle(SMALL_FONT,HORIZ_DIR,1); setusercharsize(3,3,3,3); settextjustify(0,1); setcolor(10); outtextxy(300,90,"Player 2"); outtextxy(300,460,"Player 1"); settextstyle(SMALL_FONT,VERT_DIR,1); setusercharsize(3,3,3,3); settextjustify(0,1); outtextxy(495,275,"Player 3"); outtextxy(135,275,"Player 4");
if (gamestart==2){ /* Coin boxes*/ setfillstyle(SOLID_FILL,0); bar(15,95,130,175); setfillstyle(SOLID_FILL,8); bar(15,95,130,110); setfillstyle(SOLID_FILL,6); bar(15,195,130,275); setfillstyle(SOLID_FILL,7); bar(15,195,130,210); setfillstyle(SOLID_FILL,3); bar(15,295,130,375); setfillstyle(SOLID_FILL,11); bar(15,295,130,310); setfillstyle(SOLID_FILL,5); bar(15,395,130,475); setfillstyle(SOLID_FILL,13); bar(15,395,130,410); settextstyle(SMALL_FONT,HORIZ_DIR,1); setusercharsize(2,1,1,1); settextjustify(0,1); setcolor(1); outtextxy(21,102,"GREYcells"); outtextxy(21,202,"GREYcells"); outtextxy(21,302,"GREYcells"); outtextxy(21,402,"GREYcells"); circcolll=circcol+21; circcoll=circcol+13; fourcoins(); setfillstyle(SOLID_FILL,6); bar(500,100,625,445); setfillstyle(SOLID_FILL,14); bar(501,120,510,425); setfillstyle(SOLID_FILL,14); bar(615,120,624,425); setfillstyle(SOLID_FILL,6); bar(510,120,615,425); settextstyle(GOTHIC_FONT,HORIZ_DIR,3); setcolor(2); outtextxy(512,125,"GREYcells"); settextstyle(GOTHIC_FONT,HORIZ_DIR,3); setusercharsize(1,1,14,1); setcolor(2); outtextxy(530,200,"Ludo"); settextstyle(GOTHIC_FONT,HORIZ_DIR,3); setcolor(4); outtextxy(555,175,"A"); outtextxy(540,210,"game"); outtextxy(555,245,"of"); outtextxy(545,280,"dice"); settextstyle(SMALL_FONT,HORIZ_DIR,1); setusercharsize(3,3,3,3); setcolor(1); outtextxy(530,300,"for 4 players"); setcolor(3); outtextxy(540,310,"Designed"); outtextxy(560,320,"&"); outtextxy(535,330,"developed"); outtextxy(550,340,"by"); outtextxy(518,350,"J.V.Ravichandran"); setcolor(8); outtextxy(511,360,"(c) Semantix"); outtextxy(511,370,"computers,"); outtextxy(511,380,"New Delhi."); ctr=0; drawarrow(); }
if (gamestart==1){ /* Coin boxes*/ settextstyle(DEFAULT_FONT,HORIZ_DIR,1); settextjustify(0,1); score1=0; score2=0; score3=0; score4=0; sprintf(&newstr,"%d",score1); if (playerctr==2){ player=1; while (player settextstyle(SMALL_FONT,HORIZ_DIR,1); setusercharsize(2,1,1,1); settextjustify(0,1); setcolor(9); outtextxy(21,102,"Player 1"); outtextxy(21,202,"Player 2"); setfillstyle(SOLID_FILL,1); bar(25,0,125,45); setfillstyle(SOLID_FILL,4); bar(25,46,125,75); setcolor(9); setlinestyle(SOLID_LINE,1,1); line(25,0,125,0); line(125,0,125,45); setcolor(12); line(25,46,125,46); line(125,46,125,75);settextstyle(SMALL_FONT,HORIZ_DIR,3); setusercharsize(1,2,3,3); setcolor(15); outtextxy(40,5,"Player 1"); outtextxy(90,5,"Player 2"); radius=7; ctr=1; col=50; row=30; while (ctr<3){ setcolor(0); circle(col,row,radius+3); setfillstyle(SOLID_FILL,0); floodfill(col,row,0); setcolor(5); setfillstyle(SOLID_FILL,5); circle(col,row,radius+1); floodfill(col,row,5); writescore(); col=col+50; ctr++;} } if (playerctr==3){ player=1; while (player /* To blank out the 4th box */ setfillstyle(SOLID_FILL,0); bar(15,395,130,475);setfillstyle(SOLID_FILL,1); bar(25,0,175,45); setfillstyle(SOLID_FILL,4); bar(25,45,175,75);setcolor(9); setlinestyle(SOLID_LINE,1,1); line(25,0,175,0); line(175,0,175,75); settextstyle(SMALL_FONT,HORIZ_DIR,1); setusercharsize(2,1,1,1); settextjustify(0,1); setcolor(9); outtextxy(21,102,"Player 1"); outtextxy(21,202,"Player 2"); outtextxy(21,302,"Player 3"); settextstyle(SMALL_FONT,HORIZ_DIR,3); setusercharsize(1,2,3,3); setcolor(15); outtextxy(40,5,"Player 1"); outtextxy(90,5,"Player 2"); outtextxy(140,5,"Player 3"); radius=7; ctr=1; col=50; row=30;while (ctr<4){ setcolor(0); circle(col,row,radius+3); setfillstyle(SOLID_FILL,0); floodfill(col,row,0); setcolor(5); setfillstyle(SOLID_FILL,5); circle(col,row,radius+1); floodfill(col,row,5); writescore(); col=col+50; ctr++;} } if (playerctr==4){ player=1; while (player setcolor(9); setlinestyle(SOLID_LINE,1,1); line(25,0,225,0); line(225,0,225,45); setcolor(0); line(25,44,224,44); setcolor(12); line(25,45,225,45); line(225,45,225,75);settextstyle(SMALL_FONT,HORIZ_DIR,1); setusercharsize(2,1,1,1); settextjustify(0,1); setcolor(9); outtextxy(21,102,"Player 1"); outtextxy(21,202,"Player 2"); outtextxy(21,302,"Player 3"); outtextxy(21,402,"Player 4");settextstyle(SMALL_FONT,HORIZ_DIR,3); setusercharsize(1,2,3,3); setcolor(15); outtextxy(40,5,"Player 1"); outtextxy(90,5,"Player 2"); outtextxy(140,5,"Player 3"); outtextxy(190,5,"Player 4"); radius=7; ctr=1; col=50; row=30;while (ctr<5){ setcolor(0); circle(col,row,radius+3); setfillstyle(SOLID_FILL,0); floodfill(col,row,0); setcolor(4); setfillstyle(SOLID_FILL,4); circle(col,row,radius+1); floodfill(col,row,4); writescore(); col=col+50; ctr++;} } /* coins */ coin=1; ctr=0; circrow=120; circcol=25; circcolll=circcol+21; circcoll=circcol+13; coincolor=8; if (playerctr==4){ fourcoins(); cursorctr=1; while (cursorctr<9){ strcpy(&player1inbox[cursorctr],"0"); strcpy(&player2inbox[cursorctr],"0"); strcpy(&player3inbox[cursorctr],"0"); strcpy(&player4inbox[cursorctr],"0"); cursorctr++;} cursorctr=1;} if (playerctr==2){ twocoins(); cursorctr=1; while (cursorctr<9){ strcpy(&player1inbox[cursorctr],"0"); strcpy(&player2inbox[cursorctr],"0"); cursorctr++;} cursorctr=1;} if (playerctr==3){ threecoins(); cursorctr=1; while (cursorctr<9){ strcpy(&player1inbox[cursorctr],"0"); strcpy(&player2inbox[cursorctr],"0"); strcpy(&player3inbox[cursorctr],"0"); cursorctr++;} cursorctr=1;} setfillstyle(SOLID_FILL,4); bar(505,250,630,300); setlinestyle(SOLID_LINE,1,1); setcolor(12); line(505,250,630,250); line(630,250,630,300);/* Coin counter box */ setfillstyle(SOLID_FILL,6); bar(495,175,630,225); bar(555,285,580,295);/* Move counter Box */ bar(260,0,365,55);setlinestyle(SOLID_LINE,1,1); setcolor(7); line(495,175,630,175); line(630,175,630,225); line(260,0,365,0); line(365,0,365,55);settextstyle(GOTHIC_FONT,HORIZ_DIR,1); settextjustify(0,1); setcolor(14); outtextxy(510,260,"Coins in Box"); outtextxy(500,185,"Whose coin(s) ?"); outtextxy(265,6,"Move count");setcolor(10); outtextxy(520,210,"Player"); cursorctr=0; sprintf(&newstr,"%d",cursorctr); settextstyle(GOTHIC_FONT,HORIZ_DIR,1); settextjustify(0,1); setcolor(14); outtextxy(300,35,&newstr); sprintf(&playercoin,"%d",player); sprintf(&coins,"%d",cursorctr); messageboxc=200; messageboxr=225; messageboxcc=400; messageboxrr=280; startstatus=0; savebox(); throwdicebox(); player1hit=0; player2hit=0; player3hit=0; player4hit=0; player1coins=6; player2coins=6; player3coins=6; player4coins=6; player1wincoin=6; player2wincoin=6; player3wincoin=6; player4wincoin=6; player=1; hotkey=0; hotctr=0; hitctr=0; col=50; cursorctr=1; while (cursorctr<65){ strcpy(&box[cursorctr],"0"); strcpy(&whosecoininbox[cursorctr],"0"); strcpy(&hotcoin[cursorctr],"0"); cursorctr++;} cursorctr=1; coininbox=0; settextstyle(SMALL_FONT,VERT_DIR,1); setusercharsize(3,3,3,3); settextjustify(0,1); setcolor(10); outtextxy(10,60,"Score"); esckey=0; specialcoin1=0; specialcoin2=0; specialcoin3=0; specialcoin4=0; yourmovebox(); menuon=0; menuflag=0; menuitem=0; pagectr=0; boxctr=0; home=0; entered=0; textcounter=0; h=7; i=7; srand(h); number=3; soundon=1; makemove=2;} /* DICE 1 */ setlinestyle(SOLID_LINE,1,1); setcolor(15); line(455,400,455,440); line(490,400,490,440); line(455,400,490,400); line(455,440,490,440);line(455,400,460,390); line(490,400,495,390); line(460,390,495,390);line(495,390,495,425); line(490,440,495,425); /* DICE 2*/ line(515,400,515,440); line(550,400,550,440); line(515,400,550,400); line(515,440,550,440);line(515,400,520,390); line(550,400,555,390); line(520,390,555,390);line(555,390,555,425); line(550,440,555,425); return 1;} int diceboxstart(){ messageboxc=200; messageboxr=225; messageboxcc=400; messageboxrr=280; savebox(); throwdicebox(); tothrowdice=1; makemove=2;if (ct==4){ player++; if (player>playerctr){player=1;}} /* Blank previous dice value */ setfillstyle(SOLID_FILL,0); bar(460,405,485,435); bar(520,405,545,435);yourmovebox(); settextstyle(DEFAULT_FONT,HORIZ_DIR,1); settextjustify(0,1); setcolor(6); outtextxy(580,215,&playercoin); setcolor(6); outtextxy(565,290,&coins); return;} int throwdicebox(){ setfillstyle(SOLID_FILL,14); bar(200,225,400,280); setfillstyle(SOLID_FILL,10); bar(201,225,399,240); setfillstyle(SOLID_FILL,0); bar(250,250,350,275); setfillstyle(SOLID_FILL,7); bar(252,252,348,273);settextstyle(DEFAULT_FONT,HORIZ_DIR,1); settextjustify(0,1); setcolor(15); outtextxy(270,234,"GREYcells"); setcolor(0); outtextxy(263,263,"Throw dice"); setlinestyle(SOLID_LINE,1,1); setcolor(15); line(252,252,252,273); line(252,252,348,252); setcolor(8); line(348,252,348,273); line(252,273,348,273); return 1;} int throwdice(){ if (throw==0){ settextstyle(DEFAULT_FONT,HORIZ_DIR,1); settextjustify(0,1); setcolor(15); outtextxy(263,263,"Throw dice"); setlinestyle(SOLID_LINE,1,1); setcolor(0); line(257,256,343,256); line(343,256,343,270); setcolor(15); line(257,256,257,270); line(257,270,343,270); } /* Display dice value */ setfillstyle(SOLID_FILL,14); bar(500,325,630,370); setfillstyle(SOLID_FILL,15); bar(500,325,630,340); settextstyle(DEFAULT_FONT,HORIZ_DIR,1); settextjustify(0,1); setcolor(10); outtextxy(510,350,"Dice value -"); settextstyle(DEFAULT_FONT,HORIZ_DIR,1); settextjustify(0,1); setcolor(12); outtextxy(533,332,"GREYcells"); dice1=0; vy=0; sprintf(&newstr,"%d",vy); h=7; i=7; vy=random(h); dice1=vy; ic=1; if (throw==0){ /* Dice 1 number */ if (vy==1){ setlinestyle(SOLID_LINE,1,3); setcolor(15); circle(473,420,2); throw=1;}if (vy==2){ setlinestyle(SOLID_LINE,1,3); setcolor(15); circle(463,420,2); circle(482,420,2); throw=1;}if (vy==3){ setlinestyle(SOLID_LINE,1,3); setcolor(15); circle(463,410,2); circle(473,420,2); circle(483,430,2); throw=1; }if (vy==4){ setlinestyle(SOLID_LINE,1,3); setcolor(15); circle(463,410,2); circle(482,410,2); circle(463,430,2); circle(482,430,2); throw=1; } if (vy==5){ setlinestyle(SOLID_LINE,1,3); setcolor(15); circle(463,410,2); circle(482,410,2); circle(463,430,2); circle(482,430,2); circle(473,420,2); throw=1; } if (vy==6){ setlinestyle(SOLID_LINE,1,3); setcolor(15); circle(463,410,2); circle(482,410,2); circle(463,430,2); circle(482,430,2); circle(463,420,2); circle(482,420,2); throw=1; } } vy=random(i); dice2=vy; if (throw==1){ if (vy==1){ setlinestyle(SOLID_LINE,1,3); setcolor(15); circle(533,420,2); } if (vy==2){ setlinestyle(SOLID_LINE,1,3); setcolor(15); circle(523,420,2); circle(543,420,2); } if (vy==3){ setlinestyle(SOLID_LINE,1,3); setcolor(15); circle(523,410,2); circle(533,420,2); circle(543,430,2); } if (vy==4){ setlinestyle(SOLID_LINE,1,3); setcolor(15); circle(523,410,2); circle(543,410,2); circle(523,430,2); circle(543,430,2); } if (vy==5){ setlinestyle(SOLID_LINE,1,3); setcolor(15); circle(523,410,2); circle(543,410,2); circle(523,430,2); circle(543,430,2); circle(533,420,2); } if (vy==6){ setlinestyle(SOLID_LINE,1,3); setcolor(15); circle(523,410,2); circle(543,410,2); circle(523,430,2); circle(543,430,2); circle(523,420,2); circle(543,420,2); } } setcolor(14); outtextxy(610,350,&newstr); vy=dice1+dice2; sprintf(&newstr,"%d",vy); setcolor(12); outtextxy(610,350,&newstr); jingle(); messageboxc=200; messageboxr=225; restorebox(); if (vy==1 || vy==5){ messagebox(); settextstyle(GOTHIC_FONT,HORIZ_DIR,1); setcolor(14); cx=383; outtextxy(cx,35,"Pressto play a new"); outtextxy(cx,50,"coin or to continue"); outtextxy(cx,65,"with an existing coin on board !");} return 1;} 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);}
No comments:
Post a Comment