10 REM 24 (c) LDL Software may'95 20 ONERRORCLOSE#0:GOTO40 30 DIMs%(6),d%(6),hs%(10),hs$(10):PROCio(1) 40 MODE1:PROCini:PROCscrn 50 REPEAT 60 PROCkey:PROCmov:IFk%=8THENPROCout 70 UNTILout:MODE7 80 *FX4,0 90 *FX229,0 100 END 110 : 120 DEFPROCkey 130 *FX21,0 140 REPEAT:k%=0:z%=GET:IFz%=32THENk%=7 ELSEIF(z%AND95)=81THENk%=8 ELSEIFz%-480THENk%=z%-48 150 UNTILk%:ENDPROC 160 : 170 DEFPROCmov:IFk%=8 ENDPROC ELSEIFk%=7THENrd%=6-r%:PROCdice:ENDPROC ELSEIFs%(k%)=0 ENDPROC 180 m%=s%(k%):PROCcheck:IFc% ENDPROC 190 s%(k%)=0:FORi%=1TO6:PROCplc(s%(i%),i%*5-1,8):NEXT:IFm%=1ANDd%(1)=0THENd%(1)=1 ELSEIFm%=4ANDd%(2)=0THENd%(2)=4 ELSEd%(p%)=m%:IFp%<7THENp%=p%+1 200 r%=r%+1:PROCplc(d%(1),4,20):PROCplc(d%(2),9,20):COLOUR131-(d%(1)*d%(2)*.25):FORi%=3TO6:PROCplc(d%(i%),i%*5-1,20):NEXT:ok%=1:IF(d%(1)=0ORd%(2)=0) ENDPROC ELSE gs%=0:FORi%=3TO6:gs%=gs%+d%(i%):NEXT:PROCtot:PROCbon:ENDPROC 210 : 220 DEFPROCcheck:c%=0:IF(p%<=6)OR(m%=1ANDd%(1)=0)OR(m%=4ANDd%(2)=0)OR(p%=7ANDm%=1ANDd%(1)=0)OR(p%=7ANDm%=4ANDd%(2)=0) ENDPROC ELSE VDU7:c%=1:ENDPROC 230 : 240 DEFPROCtot:COLOUR2:COLOUR129:PRINTTAB(2,3);"Highscore is ";LEFT$(s$,5-LEN(STR$(hs%(1))))STR$(hs%(1)):COLOUR3:PRINTTAB(24,3)"Score is ";LEFT$(s$,5-LEN(STR$(sc%)))STR$(sc%):COLOUR0:COLOUR130 250 VDU31,37,21:IFgs%THENPRINTLEFT$("00",2-LEN(STR$(gs%)))STR$(gs%):COLOUR131:ENDPROC ELSEPRINT"--":COLOUR131:ENDPROC 260 : 270 DEFPROCbon:IFr%<6 ENDPROC 280 IFgs%=24THENCOLOUR128:FORi%=1TO4:COLOUR2:PRINTTAB(13,9)"BONUS = 100":PROCtim(70):COLOUR0:PRINTTAB(13,9)"BONUS = 100":PROCtim(30):NEXT:sc%=sc%+100 290 sc%=sc%+gs%:COLOUR0:COLOUR130:FORi%=8TO10:PRINTTAB(6,i%);SPC(25):NEXT:PRINTTAB(7,9)"Press key for next game":REPEATUNTILGET:PROCscrn:ENDPROC 300 : 310 DEFPROCover:COLOUR0:COLOUR130:FORi%=8TO10:PRINTTAB(15,i%);SPC(17);:NEXT:PRINTTAB(17,9);"- GAME OVER -";:PROCtim(100):REPEATUNTILGET:IFhs%(10)2 ENDPROC 400 IF(d%(1)=0ORd%(2)=0)ANDp%=7ANDrd%=2THENIF(s%(1)<>1ANDs%(1)<>4)AND(s%(2)<>1ANDs%(2)<>4)THENPROCover:ENDPROC 410 IF(d%(1)=0ORd%(2)=0)ANDp%=7ANDrd%=1THENIF(d%(1)=0ANDs%(1)<>1)OR(d%(2)=0ANDs%(1)<>4)THENPROCover:ENDPROC 420 : 430 DEFPROCcld(h%):FORi%=1TO6:PROCplc(0,i%*5-1,h%):NEXT:ENDPROC 440 : 450 DEFPROCplc(v%,x%,y%):o%=240:IFv%=0THENCOLOUR0:COLOUR128:VDU31,x%,y%,32,32,32,31,x%,y%+1,32,32,32,31,x%,y%+2,32,32,32:COLOUR0:COLOUR131 460 IFv%=1THENVDU31,x%,y%,32,32,32,31,x%,y%+1,32,o%,32,31,x%,y%+2,32,32,32 470 IFv%=2THENVDU31,x%,y%,o%,32,32,31,x%,y%+1,32,32,32,31,x%,y%+2,32,32,o% 480 IFv%=3THENVDU31,x%,y%,o%,32,32,31,x%,y%+1,32,o%,32,31,x%,y%+2,32,32,o% 490 IFv%=4THENVDU31,x%,y%,o%,32,o%,31,x%,y%+1,32,32,32,31,x%,y%+2,o%,32,o% 500 IFv%=5THENVDU31,x%,y%,o%,32,o%,31,x%,y%+1,32,o%,32,31,x%,y%+2,o%,32,o% 510 IFv%=6THENVDU31,x%,y%,o%,32,o%,31,x%,y%+1,o%,32,o%,31,x%,y%+2,o%,32,o% 520 ENDPROC 530 : 540 DEFPROCtim(tm%):T%=TIME+tm%:REPEATUNTILTIME>=T%:ENDPROC 550 : 560 DEFPROCscrn 570 COLOUR3:COLOUR129:CLG:FORi%=2TO4:PRINTTAB(0,i%);SPC(40);:NEXT:FORi%=14TO16:PRINTTAB(0,i%);SPC(40);:NEXT:FORi%=26TO28:PRINTTAB(0,i%);SPC(40);:NEXT:FORi%=5TO25:PRINTTAB(36,i%);" ";:NEXT:COLOUR0 580 COLOUR130:FORi%=20TO22:PRINTTAB(36,i%);" ";:NEXT:COLOUR131:FORi%=1TO6:PRINTTAB(i%*5-1,15);" ";:d%(i%)=0:NEXT:PRINTTAB(4,27);SPC(8):PRINTTAB(14,27);SPC(18):q%=0:out=0:ok%=1:gs%=0:rd%=6:r%=0:p%=3:PROCtot:PROCdice:ENDPROC 590 : 600 DEFPROCini 610 *FX4,2 620 s$=" ":*FX229,1 630 VDU23,240,0,60,126,126,126,126,60,0,23,241,8,12,14,255,255,14,12,8:COLOUR3:COLOUR129:FORi%=1TO3:PRINTTAB(0,i%);SPC40;:NEXT:PRINTTAB(16,2)"20-FOUR":COLOUR2:COLOUR128:PRINTTAB(9,10)"A game to challenge!";TAB(15,15)"INFO Y/N?":COLOUR1 640 COLOUR131:VDU23,1,0;0;0;0;:T=RND(-TIME):PROCplc(1,5,24):PROCplc(4,10,24):FORi%=3TO6:PROCplc(6,i%*5+2,24):NEXT:sc%=0:IF INSTR("YyJj",GET$)=0 ENDPROC 650 COLOUR2:COLOUR128:CLS:PRINTTAB(16,2)"20-FOUR":PRINT'''" Play the game with six dice by pressing 1, 2, 3, 4, 5 or 6 trying to reach"'" a total of 24 points."''" Whenever you get 24, a BONUS of 100 pts is added to your score." 660 PRINT'" You must pick up at least ONE dice, but you are allowed to pick up more."''" HOWEVER....." 670 PRINT" your score only counts when you have obtained a 1 AND 4."''" Press SPACE to roll and stop dice."''''" GOT ONE AND FOUR? MAKE TWENTY-FOUR !!":PRINT''TAB(8)"During the game: Q=QUIT":REPEATUNTILGET:ENDPROC 680 : 690 DEFPROCend 700 COLOUR2:COLOUR128:CLS:PRINTTAB(12,3)"HIGH SCORES ARE:":FORi%=1TO10:PRINTTAB(4,i%+7);hs$(i%);LEFT$(STRING$(25," "),25-LEN(hs$(i%)));LEFT$(" ",6-LEN(STR$(hs%(i%))));STR$(hs%(i%));:NEXT:IFsc%>hs%(10)THENPROCinv:GOTO700 710 IFq%THENPRINTTAB(4,20)"Do you want to save score Y/N ?":IFINSTR("YyJj",CHR$(GET))THENPROCio(0) 720 PRINTTAB(4,23)"Do you want to play again Y/N ?":IFINSTR("Nn",CHR$(GET))THENout=1:ENDPROC ELSEsc%=0:PROCscrn:ENDPROC 730 : 740 DEFPROCinv:PRINTTAB(4,20)"Enter your name for the TOP TEN":VDU31,4,23,241,32,23,1,1;0;0;0;:COLOUR0:COLOUR130:FORi%=22TO24:PRINTTAB(6,i%);SPC(27);:NEXT:VDU31,7,23:min%=7:max%=min%+25:pl%=min%:n$="":REPEAT:i%=GET 750 IFi%=13OR(i%=127ANDpl%=min%)OR(i%<>127ANDpl%=max%)THEN ELSEVDU31,pl%,23,i%:pl%=pl%+1:n$=n$+CHR$(i%):IFi%=127THENpl%=pl%-2:n$=LEFT$(n$,pl%-min%) 760 UNTILi%=13:FORi%=1TO10:IFsc%>=hs%(i%)THENFORj%=10TOi%+1STEP-1:hs$(j%)=hs$(j%-1):hs%(j%)=hs%(j%-1):NEXT:hs$(i%)=n$:hs%(i%)=sc%:q%=1:sc%=0:i%=10 770 NEXT:VDU23,1,0;0;0;0;:ENDPROC 780 : 790 DEFPROCio(fl%):IFfl%THENFORi%=1TO10:hs$(i%)="JJ":hs%(i%)=110-i%*10:NEXT:f%=OPENIN"T4DAT":FORi%=1TO10:INPUT#f%,hs$(i%),hs%(i%):NEXT:CLOSE#0:ENDPROC ELSEf%=OPENOUT"T4DAT":FORi%=1TO10:PRINT#f%,hs$(i%),hs%(i%):NEXT:CLOSE#0:ENDPROC