Jump to content

InfernalKeith

Members
  • Content Count

    805
  • Joined

  • Last visited

Posts posted by InfernalKeith


  1. I didn't do a lot of playing around with the 'adjust controls' stuff, once it worked at all I kind of ignored it. I appreciate the notes, I am jotting stuff down for an eventual update. (I may clean up the code a little, try to shrink it down a couple K, and make a small run of them on cassette for real iron, but that won't be for a while).


  2. I use GCHAR to keep tabs on the map data, but there's other information about each tile I'm keeping in strings.

     

    My main time hangup right now is at the map generation part -- I still don't have it doing all that it needs to do, and we're over three minutes from hitting ENTER on RUN to seeing the finished map and being able to interact with it. That's not unheard of by 1982 standards (the "please wait" before a dungeon or map spawns) but I'm trying to be realistic about anyone actually sitting through that in 2015. Plus, I want to be able to manipulate the map and its data a lot between turns. This'll be a good way for me to get my feet wet with the compiler, and I can bless Overdrive mode while I'm testing it before it's ready to compile. :)


  3. Now that I'm back in the habit of programming daily, I want to try sharing a project from the ground up again. This is my new game, "Conquest of the Aftermath," which I plan to have finished by December 31.

     

    CotA is inspired by Risk, with additional elements borrowed from other games. Gameplay takes place on a map of 20x28 tiles, which are randomly distributed among four players, neutral territory, and water. Each tile has a terrain type -- in the beginning, inhospitable lands like mountains, forests and swamplands. Each tile also has a population, refugees from the war that destroyed the old cities and scattered your faithful followers across the land.

     

    In a finite number of turns each round, players can move population, terraform the land to grow food, and attack other tiles to gain territory. Population increases and decreases depending on the amount of food, access to water and villages, and morale of the populace. Morale and food also factor into battle statistics and can give one player an advantage. Excess food can be used to bribe neutral populations to join your ranks, while shortages can lead to mutiny and the defection of populations.

     

    Weather and natural disasters (including aftershocks from the nuclear attacks) may also play a part.

     

    I have not yet decided the object of the game, or whether each game may be set to one of several options (total victory, biggest gains in a preset time period, or the defense of a 'home city' tile).

    Right now we're REALLY early on. I'm just figuring out how to display the map and store all these variables. I'm using strings and speed is already a factor. I'm writing the code with simple, line-number-only IF-THEN statements, in anticipation that I will compile this game when it's completed.

    All the program does right now is create the map and set up variables, and allow the user to browse each tile's attributes. Over the weekend I plan to puzzle out the rules for number of turns, and figure out the balance the player must strike between terraforming, cultivating and conquering.

     

    Wish me luck! I have an idea how I want it to all come together, but there's a lot in flux right now. :)

     

     

     

     

    G6kl8Is.jpg

     

     

    wlOvzpF.jpg

    • Like 5

  4. The final version of Dicecrash is finished and has been added to the opening post of this thread. Both the listing and the .ZIP file have been updated.

     

    Updates from the beta:

     

    * implemented Willsy's so-obvious-I-feel-stupid idea of making the die the "pointer," and losing the arrow

    * added the final powerup, a destructive bomb that takes out a few columns of dice without awarding points

    * most significantly, you can no longer "blank out" the powerups. If you don't drop them yourself, they will fall and have their effect on the dice below. The strategy then becomes using their powers to your advantage, or finding a column where dropping it does the least harm.

    Barring any major bug discoveries, I'm done with this one for a good while, though I may heed the suggestion to compile it later on. My hope is to have another of my old XB ideas dusted off and finished in December.

     

    I hope you enjoy it.

     

    Keith

    • Like 3

  5. 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

  6. 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

  7. 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.


  8. 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

  9. 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

    • Like 6

  10. I broke my new rule of not putting anything up till it was finished any more. But it's REALLY close. The game is playable now, but one of the eight "power ups" still needs coded, and I need to finish the instruction screens and tweak the scoring system. My goal is to have it up tomorrow night for everyone to check out.

    • Like 1

  11. I never got to do a lot with it, but my site, orphantech.com, was up a few years ago. It had some reviews and screenshots of TI games, and it was going to be an information source for my various TI programming projects.

     

    When I found myself running out of TI time, the site went by the wayside, and I let the domain name lapse. I thought it was gone forever...

     

    But I just randomly checked it today, and it was available again! And now it's all mine again.

     

    This calls for a celebration... or at least a sneak preview of something I'm uploading tomorrow. ;)

     

     

    m3tXPtX.jpg


    UOodk5X.jpg

    • Like 8
×
×
  • Create New...