Jump to content
IGNORED

Dicecrash - new game in Extended BASIC


InfernalKeith

Recommended Posts

This is the final 1.0 release of Dicecrash, my new game for the TI 99/4A in Extended BASIC. It's a dice scoring game combining elements of Yahtzee, Tetris and Arkanoid.

 

z9gO2rx.jpg

 

In Dicecrash, you arrange falling dice into five columns and try to create winning combinations, similar to poker hands.

 

3FpX1Wm.jpg

 

You must choose your column and launch each dice in a timely fashion, or else a blank dice crashes down in its place, blocking your chance to create a combo.

 

APm2ROW.jpg

 

When the play field is full, the score is tallied, and if you meet the stated goal, you move on to the next level, a higher goal, and less time to place your dice.

 

As you advance, more and more power ups will appear. Some of these will enhance your score, help you clear away mistakes on the play field, or change the field in a negative way. Also, from level 3 onward, some dice will be pre-placed randomly before you start, just to add to the challenge.

 

Thanks for checking it out!

 

Keith



100 CALL CLEAR :: HIGH=0 :: RANDOMIZE :: OPTION BASE 1
110 DIM F(10,5),SNAME$(7),AMOUNT(7),PU(10),CT(3),TEMP(3)
111 RESTORE 10010 :: FOR X=96 TO 111 :: READ X$ :: CALL CHAR(X,X$) :: NEXT X :: CALL CHAR(94,"18181818FF7E3C18",45,"000000FFFF000000")
112 RESTORE 10000 :: FOR X=1 TO 7 :: READ SNAME$(X) :: NEXT X
113 MULT=1 :: SCORE=0 :: LEVEL=1 :: GOAL=500 :: CT(1)=8 :: CT(2)=9 :: CT(3)=13 :: CALL COLOR(9,2,16,10,7,1)
114 GOSUB 20000
115 TOT=0 :: TLIM=MAX(5,16-LEVEL) :: FOR X=1 TO 10 :: FOR Y=1 TO 5 :: F(X,Y)=-1 :: NEXT Y :: NEXT X
120 DISPLAY AT(3,1):"---------" :: CALL SCOREDIS(SCORE,MULT)
122 DISPLAY AT(24,1):"DICECRASH LVL    GOAL       "
124 DISPLAY AT(24,14):USING "##":LEVEL; :: DISPLAY AT(24,23):USING "######":GOAL;
125 GOSUB 15000
127 IF LEVEL>2 THEN GOSUB 17000
130 PS=1
140 X=1
142 IF TOT+1=PU(X)THEN PU(X)=0 ELSE X=X+1 :: IF X<10 THEN 142 ELSE X=INT(RND*6)+1 :: GOTO 150
144 X=INT(RND*+8 :: CALL SOUND(100,1568,3) :: CALL SOUND(150,1760,3)
150 ! DISPLAY AT(1,1):CHR$(X+96);
160 T=0
165 DISPLAY AT(2,1):"     " :: DISPLAY AT(2,PS+(PS-1)):CHR$(X+96);
170 CALL KEY(0,K,S) :: IF S=0 THEN T=T+1 :: IF T>TLIM THEN IF X>6 THEN 205 ELSE X=0 :: GOTO 205
180 IF K=CT(1)THEN PS=PS-1 :: IF PS=0 THEN PS=5
190 IF K=CT(2)THEN PS=PS+1 :: IF PS=6 THEN PS=1
200 IF K<>CT(3)THEN 165
205 IF F(1,PS)=-1 THEN 210
206 CALL SOUND(200,110,0,-4,0) :: IF X>0 AND X<7 THEN 165
207 PS=PS+1 :: IF PS>5 THEN PS=1
209 GOTO 205
210 DISPLAY AT(2,1):"     " :: R=1
215 IF F(R,PS)=-1 THEN 220
220 IF F(R,PS)=-1 THEN DISPLAY AT((R+1)*2,PS+(PS-1)):CHR$(X+96); :: CALL FALLSOUND(R,X) :: DISPLAY AT((R+1)*2,PS+(PS-1)):" "; :: R=R+1 :: IF R<11 THEN 220
230 R=R-1 :: F(R,PS)=X :: DISPLAY AT((R+1)*2,PS+(PS-1)):CHR$(X+96); :: TOT=TOT+1
240 IF X>7 THEN GOSUB 25000
242 IF TOT<50 THEN GOTO 140
245 DISPLAY AT(2,1):"TALLYING...";
250 ! SORTING AND SCORING
260 FOR X=1 TO 10
270 FOR Y=1 TO 5
280 FOR Z=1 TO 4
290 IF F(X,Z)>F(X,Z+1)THEN TMP=F(X,Z) :: F(X,Z)=F(X,Z+1) :: F(X,Z+1)=TMP
300 NEXT Z :: NEXT Y :: NEXT X
305 DISPLAY AT(2,1):"           ";
310 FOR X=1 TO 10
312 PZ=0
315 IF F(X,1)=F(X,2)AND F(X,2)=F(X,3)AND F(X,3)=F(X,4)AND F(X,4)=F(X,5)AND F(X,1)>0 THEN PZ=1 :: GOTO 400
320 IF F(X,1)=F(X,2)AND F(X,2)=F(X,3)AND F(X,3)=F(X,4)AND F(X,1)>0 THEN PZ=2 :: GOTO 400
330 IF F(X,2)=F(X,3)AND F(X,3)=F(X,4)AND F(X,4)=F(X,5)AND F(X,2)>0 THEN PZ=2 :: GOTO 400
340 X$="" :: FOR Y=1 TO 5 :: X$=X$&STR$(F(X,Y)) :: NEXT Y :: IF X$="12345" OR X$="23456" THEN PZ=4 :: GOTO 400
350 IF F(X,2)=F(X,3)AND F(X,3)=F(X,4)AND F(X,2)>0 THEN PZ=6 :: GOTO 400
360 IF F(X,1)=F(X,2)AND F(X,2)=F(X,3)AND F(X,1)>0 THEN IF F(X,4)=F(X,5)THEN PZ=3 :: GOTO 400 ELSE PZ=6 :: GOTO 400
370 IF F(X,3)=F(X,4)AND F(X,4)=F(X,5)AND F(X,3)>0 THEN IF F(X,1)=F(X,2)THEN PZ=3 :: GOTO 400 ELSE PZ=6 :: GOTO 400
380 IF F(X,1)=F(X,2)AND F(X,1)>0 THEN IF F(X,3)=F(X,4)OR F(X,4)=F(X,5)THEN PZ=5 :: GOTO 400
390 IF F(X,2)=F(X,3)AND F(X,2)>0 THEN IF F(X,4)=F(X,5)THEN PZ=5
400 IF PZ=0 THEN PZ=7
410 IF PZ=1 THEN TSCORE=(F(X,1)*100)*MULT
420 IF PZ=2 THEN TSCORE=(F(X,2)*50)*MULT
430 IF PZ=3 THEN TSCORE=100*MULT ELSE IF PZ=4 THEN TSCORE=60*MULT ELSE IF PZ=5 THEN TSCORE=40*MULT ELSE IF PZ=6 THEN TSCORE=20*MULT
440 DISPLAY AT((X+1)*2,12):SNAME$(PZ);" ";TSCORE
450 SCORE=SCORE+TSCORE :: TSCORE=0
460 NEXT X
470 CALL SCOREDIS(SCORE,MULT)
480 IF SCORE<GOAL THEN 530
490 DISPLAY AT(24,1):"CONGRATULATIONS! PRESS SPACE"
492 CALL SOUND(375,440,2) :: CALL SOUND(375,523,2) :: CALL SOUND(450,659,2) :: CALL SOUND(525,523,2) :: CALL SOUND(750,784,2)
493 FOR X=2 TO 30 STEP 2 :: CALL SOUND(99,784,X) :: NEXT X
500 CALL KEY(0,K,S) :: IF S=0 THEN 500
510 LEVEL=LEVEL+1 :: GOAL=GOAL+500+((LEVEL-1)*250) :: MULT=1
520 CALL CLEAR :: GOTO 115
530 DISPLAY AT(24,1):" GAME OVER... PRESS ANY KEY."
540 CALL KEY(0,K,S) :: IF S=0 THEN 540
550 IF SCORE>HIGH THEN HIGH=SCORE
560 GOTO 113
2520 GOTO 29999
10000 DATA "5 OF A KIND","4 OF A KIND","FULL HOUSE","STRAIGHT","2 PAIRS","3 OF A KIND","NONE"
10010 DATA "0000000000000000","0000001818000000","0060600000060600","1818001818001818"
10020 DATA "0066660000666600","C3C300181800C3C3","C3C300C3C300C3C3"
10030 DATA "0000000000000000","183C7EFFFF7E3C18","18183C3CC3DBDBC3","C3C324181824C3C3","FFFFC3C3C3C3C3C3"
10040 DATA "00664400003C2442","181818FFFF181818","80403E3F3F3E4080","00100810183C3C18"
15000 ! SET POWERUP FLAGS
15010 FOR X=1 TO 10 :: PU(X)=0 :: NEXT X
15020 NTRVL=50/(LEVEL+1) :: BS=50 :: FOO=MIN(10,LEVEL)
15030 FOR X=FOO TO 1 STEP-1
15040 BS=BS-NTRVL :: PU(X)=INT(BS)
15050 NEXT X
15060 RETURN
17000 ! OBSTACLES LEVEL 3+
17010 X=INT(RND*5)+1 :: TOT,Z=MIN(10,LEVEL)
17020 FOR Y=10 TO(11-Z)STEP-1 :: W=INT(RND*7) :: CALL HCHAR((Y+1)*2,X+(X+1),W+96) :: CALL SOUND(75,-7,0) :: F(Y,X)=W :: NEXT Y
17030 RETURN
20000 CALL CLEAR :: CALL SCREEN(12)
20002 PRINT "  aaaa  aaaaa   aaa aaaaa":"  a   a   a    a    a":"  a   a   a   a     aaa":"  a   a   a    a    a":"  aaaa  aaaaa   aaa aaaaa"
20004 PRINT:" aaa aaaa    a    aaaa a   a":"a    a   a  a a  a     a   a":"     aaaa  aaaaa  aaa  aaaaa":"a    a   a a   a     a a   a"
20005 PRINT " aaa a   a a   a aaaa  a   a" :: PRINT: : : : : : : : : : :
20006 CALL HCHAR(10,2,97)
20007 DISPLAY AT(14,4):"(C) 2015 KEITH BERGMAN"
20008 IF SFL=1 THEN 20110
20009 FOR X=1 TO 4
20010 CALL SOUND(125,220,
20020 CALL SOUND(125,262,
20030 CALL SOUND(125,330,6)
20040 CALL SOUND(125,262,
20050 CALL SOUND(125,392,
20060 CALL SOUND(125,262,
20070 CALL SOUND(125,330,6)
20080 CALL SOUND(125,392,
20090 NEXT X
20100 FOR X=0 TO 30 :: CALL SOUND(50,220,X,440,X) :: NEXT X
20110 DISPLAY AT(17,1):"   1. PLAY DICECRASH":"   2. INSTRUCTIONS":"   3. ADJUST CONTROLS":"   4. CREDITS/LICENSE":"   5. QUIT GAME"
20120 DISPLAY AT(23,1):"   HIGH SCORE:";HIGH
20130 CALL KEY(0,K,S) :: IF S=0 THEN 20130
20140 IF K<49 OR K>53 THEN CALL SOUND(75,-3,0) :: GOTO 20130
20150 SFL=1 :: ON K-48 GOTO 20160,20270,20520,20180,20170
20160 CALL CLEAR :: RETURN
20170 CALL CLEAR :: PRINT "VISIT ORPHANTECH.COM" :: STOP
20180 CALL BORDER
20190 DISPLAY AT(3,1):"a DICECRASH WAS CREATED BY"; :: DISPLAY AT(4,3):"KEITH BERGMAN, NOV 2015";
20200 DISPLAY AT(6,1):"a FREE TO DISTRIBUTE ONLINE"; :: DISPLAY AT(7,3):"AND FOR PERSONAL USE";
20210 DISPLAY AT(9,1):"a SALE IN PHYSICAL FORMAT"; :: DISPLAY AT(10,3):"BY ANYONE BUT THE AUTHOR";
20220 DISPLAY AT(11,3):"IS EXPRESSLY FORBIDDEN"; :: DISPLAY AT(13,1):"a THANKS TO EVERYONE ON THE";
20230 DISPLAY AT(14,3):"ATARIAGE.COM TI FORUMS"; :: DISPLAY AT(16,1):"a VISIT ORPHANTECH.COM";
20240 DISPLAY AT(17,3):"FOR UPDATES & OTHER GAMES";
20245 DISPLAY AT(19,1):"a RELEASE 1.0   30 NOV 2015";
20250 CALL KEY(0,K,S) :: IF S=0 THEN 20250
20260 GOTO 20000
20270 CALL BORDER
20280 DISPLAY AT(3,1):"a DICE ARE CRASHING TO THE"; :: DISPLAY AT(4,3):"GROUND! ARRANGE THEM AS"; :: DISPLAY AT(5,3):"THEY FALL FOR MAXIMUM";
20290 DISPLAY AT(6,3):"POINTS TO REACH YOUR GOAL"; :: DISPLAY AT(8,1):"a TAKE TOO LONG TO PLACE"; :: DISPLAY AT(9,3):"YOUR DICE AND A BLANK WILL"
20300 DISPLAY AT(10,3):"FALL INTO ITS PLACE!"; :: DISPLAY AT(12,1):"a SCORE IS TALLIED WHEN"; :: DISPLAY AT(13,3):"THE PLAY FIELD IS FULL"
20310 DISPLAY AT(15,1):"a WATCH FOR POWER UPS..."; :: DISPLAY AT(16,3):"SOME HELP YOU, SOME DON'T";
20320 CALL KEY(0,K,S) :: IF S=0 THEN 20320
20330 CALL BORDER
20340 DISPLAY AT(3,1):"a LEFT/RIGHT ARROWS TO MOVE"; :: DISPLAY AT(4,3):"PRESS ENTER TO DROP DICE.";
20350 DISPLAY AT(6,1):"a OR PRESS 3 AT MAIN MENU TO"; :: DISPLAY AT(7,3):"ADJUST GAME CONTROLS"; :: DISPLAY AT(10,1):"3 OF A KIND       FULL HOUSE";
20360 DISPLAY AT(11,1):"b b b c d          e e e f f"; :: DISPLAY AT(12,1):"20 POINTS         100 POINTS";
20370 DISPLAY AT(14,1):"2 PAIR           4 OF A KIND"; :: DISPLAY AT(15,1):"d d a a e          f f f f b";
20380 DISPLAY AT(16,1):"40 POINTS      50X DIE VALUE" :: DISPLAY AT(18,1):"STRAIGHT         5 OF A KIND";
20390 DISPLAY AT(19,1):"a b c d e          d d d d d"; :: DISPLAY AT(20,1):"60 POINTS     100X DIE VALUE";
20400 CALL KEY(0,K,S) :: IF S=0 THEN 20400
20410 CALL BORDER
20420 DISPLAY AT(2,10):"POWER UPS:"; :: DISPLAY AT(4,1):"h CLEAR ROW, EARN ITS PTS";
20430 DISPLAY AT(6,1):"i CHANGE ALL DICE IN COLUMN"; :: DISPLAY AT(7,3):"TO DICE AT THE TOP";
20440 DISPLAY AT(9,1):"j SCORE MULTIPLIER";
20450 DISPLAY AT(11,1):"k CLEAR A COLUMN AND"; :: DISPLAY AT(12,3):"EARN ALL ITS POINTS";
20460 DISPLAY AT(14,1):"l SCRAMBLES TOP DICE ROW";
20470 DISPLAY AT(16,1):"m JACKPOT - ROLL FOR BONUS"; :: DISPLAY AT(18,1):"n BLANKS TOP 5 DICE";
20480 DISPLAY AT(20,1):"o BLOWS UP 3 COLUMNS-NO PTS";
20490 CALL KEY(0,K,S) :: IF S=0 THEN 20490
20500 CALL BORDER :: DISPLAY AT(12,9):"GOOD LUCK!!!";
20510 CALL KEY(0,K,S) :: IF S=0 THEN 20510 ELSE 20000
20520 CALL BORDER :: DISPLAY AT(3,7):"ADJUST CONTROLS:"; :: CT(1)=8 :: CT(2)=9 :: CT(3)=13 :: FOR X=1 TO 3 :: TEMP(X)=0 :: NEXT X
20530 DISPLAY AT(6,7):"LEFT:_"; :: DISPLAY AT(8,6):"RIGHT:_"; :: DISPLAY AT(10,7):"DROP:_";
20540 FOR X=6 TO 10 STEP 2
20550 DISPLAY AT(X,12)BEEP:"?";
20560 CALL KEY(0,K,S) :: IF S=0 THEN 20560 ELSE TEMP((X-(X/2)-2))=CT((X-(X/2)-2)) :: CT((X-(X/2)-2))=K :: DISPLAY AT(X,12):" ";
20565 NEXT X :: IF CT(1)=CT(2)OR CT(2)=CT(3)OR CT(1)=CT(3)THEN CALL SOUND(75,-7,0) :: GOTO 20520
20570 DISPLAY AT(14,7):"1 SAVE AND EXIT"; :: DISPLAY AT(15,7):"2 RESTORE DEFAULTS"; :: DISPLAY AT(16,7)BEEP:"3 CANCEL AND EXIT";
20580 CALL KEY(0,K,S) :: IF S=0 THEN 20580
20590 ON K-48 GOTO 20610,20620,20600
20600 FOR X=1 TO 3 :: CT(X)=TEMP(X) :: NEXT X
20610 GOTO 20000
20620 CT(1)=8 :: CT(2)=9 :: CT(3)=13 :: GOTO 20000
25000 ON X-7 GOTO 25010,25090,25120,25240,25290,25430,25500,25570
25010 ! CLEAR ROW + POINTS
25020 TOT=TOT-1 :: CALL HCHAR((R+1)*2,(PS*2)+1,32) :: IF R=10 THEN CALL SOUND(75,-5,0) :: F(R,PS)=-1 :: GOTO 29999
25030 F(R,PS)=-1 :: R=R+1 :: FOR Z=1 TO 5 :: CALL HCHAR((R+1)*2,(Z*2)+1,104) :: CALL SOUND(100,-7,0) :: CALL HCHAR((R+1)*2,(Z*2)+1,32)
25040 IF F(R,Z)>-1 THEN SCORE=SCORE+F(R,Z) :: TOT=TOT-1
25050 F(R,Z)=-1 :: TR=R :: IF TR=1 THEN 25080
25060 IF F(TR-1,Z)=-1 THEN 25080
25070 F(TR,Z)=F(TR-1,Z) :: CALL HCHAR((TR+1)*2,(Z*2)+1,F(TR,Z)+96) :: CALL HCHAR(TR*2,(Z*2)+1,32) :: CALL SOUND(25,-3,0) :: TR=TR-1
25075 F(TR,Z)=-1 :: IF TR>1 THEN GOTO 25060
25080 NEXT Z :: CALL SCOREDIS(SCORE,MULT) :: GOTO 29999
25090 TOT=TOT-1 :: F(R,PS)=-1 :: CALL HCHAR((R+1)*2,(PS*2)+1,32) :: IF R=10 THEN CALL SOUND(75,-5,0) :: GOTO 29999
25100 R=R+1 :: FOR Z=R TO 10 :: F(Z,PS)=F(R,PS) :: CALL HCHAR((Z+1)*2,(PS*2)+1,105) :: CALL SOUND(100,-7,0) :: CALL HCHAR((Z+1)*2,(PS*2)+1,F(Z,PS)+96) :: NEXT Z
25110 GOTO 29999
25120 ! MULTIPLIER
25130 TOT=TOT-1 :: CALL HCHAR((R+1)*2,(PS*2)+1,32) :: F(R,PS)=-1
25140 CALL SOUND(125,880,
25150 CALL SOUND(125,1047,
25160 CALL SOUND(125,1319,6)
25170 CALL SOUND(125,1047,
25180 CALL SOUND(125,1568,
25190 CALL SOUND(125,1047,
25200 CALL SOUND(125,1319,6)
25210 CALL SOUND(125,1568, :: FOR Z=9 TO 30 :: CALL SOUND(-100,1568,Z) :: NEXT Z
25220 MULT=MULT+1 :: IF MULT>6 THEN MULT=6
25230 CALL SCOREDIS(SCORE,MULT) :: GOTO 29999
25240 ! CLEAR COLUMN + PTS
25250 TOT=TOT-1 :: F(R,PS)=-1 :: CALL HCHAR((R+1)*2,(PS*2)+1,32) :: IF R=10 THEN CALL SOUND(75,-5,0) :: GOTO 29999
25260 R=R+1 :: FOR Z=R TO 10 :: TOT=TOT-1 :: SCORE=SCORE+F(Z,PS) :: F(Z,PS)=-1 :: CALL HCHAR((Z+1)*2,(PS*2)+1,107) :: CALL SOUND(100,-7,0)
25270 CALL HCHAR((Z+1)*2,(PS*2)+1,32) :: NEXT Z
25280 CALL SCOREDIS(SCORE,MULT) :: GOTO 29999
25290 ! SCRAMBLE TOP 5 DIE
25300 TOT=TOT-1 :: F(R,PS)=-1 :: CALL HCHAR((R+1)*2,(PS*2)+1,32)
25310 CALL SOUND(125,324,0)
25320 CALL SOUND(125,267,0)
25330 CALL SOUND(125,229,0)
25340 CALL SOUND(125,387,0)
25350 CALL SOUND(125,277,0,256,0)
25360 CALL SOUND(125,378,0,399,0)
25370 CALL SOUND(125,259,0,270,0)
25380 CALL SOUND(100,330,0,344,0) :: FOR Z=1 TO 30 :: CALL SOUND(-50,330,Z,344,Z) :: NEXT Z
25390 FOR Z=1 TO 5 :: Y=1
25400 IF F(Y,Z)=-1 THEN Y=Y+1 :: IF Y=11 THEN 25420 ELSE 25400
25410 F(Y,Z)=INT(RND*6)+1 :: CALL HCHAR((Y+1)*2,(Z*2)+1,F(Y,Z)+96) :: CALL SOUND(75,-7,0)
25420 NEXT Z :: GOTO 29999
25430 ! BONUS POINTS
25440 Y$="" :: TOT=TOT-1 :: F(R,PS)=-1 :: CALL HCHAR((R+1)*2,(PS*2)+1,32)
25445 FOR Z=1 TO 3 :: IF Z=1 THEN Y=INT(RND*3)+1 ELSE Y=INT(RND*6)+1
25450 CALL HCHAR(6,17+Z,Y+48) :: CALL HCHAR(5,17+((Z*2)-1),Y+96) :: CALL SOUND(75,-7,0) :: NEXT Z
25460 DISPLAY AT(6,20):"BONUS PT"; :: FOR Z=1 TO 3 :: CALL GCHAR(6,17+Z,Y) :: Y$=Y$&STR$(Y-48) :: NEXT Z :: Y=VAL(Y$) :: SCORE=SCORE+Y
25470 CALL SCOREDIS(SCORE,MULT)
25480 CALL SOUND(500,440,0) :: CALL SOUND(500,523,0) :: CALL SOUND(750,659,0) :: CALL SOUND(1000,554,0)
25485 FOR Y=1 TO 500 :: NEXT Y
25490 FOR Y=5 TO 6 :: FOR Z=17 TO 30 :: CALL HCHAR(Y,Z,32) :: CALL SOUND(25,-7,9) :: NEXT Z :: NEXT Y :: GOTO 29999
25500 ! FIVE BLANK DICE
25510 TOT=TOT-1 :: F(R,PS)=-1 :: CALL HCHAR((R+1)*2,(PS*2)+1,32)
25520 FOR Z=1 TO 5 :: IF F(1,Z)<>-1 THEN 29999
25530 Y=1
25540 IF F(Y,Z)=-1 THEN Y=Y+1 :: IF Y=11 THEN 25560 ELSE 25540
25550 F(Y,Z)=0 :: CALL HCHAR((Y+1)*2,(Z*2)+1,96) :: FOR ZZ=185 TO 110 STEP-5 :: CALL SOUND(-50,ZZ,0) :: NEXT ZZ
25560 NEXT Z :: GOTO 29999
25570 ! BLOW UP COLUMNS
25580 COUNTY=3 :: COUNTX=R+1 :: POSX=R+1 :: POSY=PS-1
25590 IF POSY=0 THEN POSY=5 ELSE IF POSY=6 THEN POSY=1
25600 IF POSX>10 THEN POSX=10 ELSE IF POSX=0 THEN 25630
25610 CALL SOUND(200,-6,0) :: CALL HCHAR((POSX+1)*2,POSY+(POSY+1),111) :: CALL HCHAR((POSX+1)*2,POSY+(POSY+1),32)
25620 IF F(POSX,POSY)<>-1 THEN F(POSX,POSY)=-1 :: TOT=TOT-1
25630 COUNTX=COUNTX-1 :: POSX=POSX-1 :: IF COUNTX=0 THEN COUNTX=R+1 :: COUNTY=COUNTY-1 :: POSY=POSY+1 :: POSX=R+1
25640 IF COUNTY>0 THEN 25590
25650 RETURN
29999 RETURN
30000 SUB FALLSOUND(R,X)
30010 IF X=0 THEN CALL SOUND(-300,110,0,-8,0)ELSE CALL SOUND(-300,110*(11-R),0)
30020 SUBEND
30030 SUB SCOREDIS(X,Y)
30040 X$="SCORE"&RPT$(" ",6-LEN(STR$(X)))&STR$(X)
30050 DISPLAY AT(1,16)$;
30055 DISPLAY AT(23,27):"X";CHR$(Y+96);
30060 SUBEND
30070 SUB BORDER
30080 CALL CLEAR :: CALL HCHAR(1,1,96,32) :: CALL HCHAR(24,1,96,32) :: CALL VCHAR(1,1,96,24) :: CALL VCHAR(1,32,96,24)
30090 DISPLAY AT(22,1):"a b c dPRESS ANY KEY.f e d c";
30100 SUBEND

DICECRASH.zip

Edited by InfernalKeith
  • Like 6
Link to comment
Share on other sites

That's part of the game. If you take too long to drop the dice yourself, a blank dice drops and makes it that much harder to achieve a score in that row. The time you have to drop the dice yourself decreases as the level increases.

 

That's in the instructions, but I don't know how clearly I explained it. I've been elbow-deep in the game for a week or two so I need some space from it before I revise them and make any fixes.

  • Like 2
Link to comment
Share on other sites

Well, my high score so far is 6514. I took a few days off from it, then played some games and made notes on some minor adjustments.

 

It doesn't seem to have generated much interest, but if anyone has played and has any suggestions, my plan is to make the final revisions Sunday and then call it done and move on to another project.

Link to comment
Share on other sites

A strategy tip: try to build straights or full houses. If you have a row with 2-3 dice that would make a straight, like a 3 4 5, and the next dice won't complete a straight, go up to the next row with it, and start eyeballing that row for what it could potentially be. It doesn't always work, but you can usually get a good pile of straights or full houses in the bottom rows, even when things get more quick and you have fewer options at the top of the board.

  • Like 1
Link to comment
Share on other sites

Lee, you're right, and I stand ashamed. :) I actually left it as "dice" because I wasn't sure how well known "die" was as the singular, and didn't know if that would cause confusion among those outside the English-speaking countries. I should have gone with the correct usage, though. I'll make sure the in-game instructions are correct.

  • Like 2
Link to comment
Share on other sites

From what I can see this is a great game, although at first it looks like a Tetris rehash it is far from that and has a clear game strategy of its own which may be addictive. A big well done. I will not be surprised if we see someone porting this to a mobile app.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...