InfernalKeith Posted September 9 Share Posted September 9 Finally getting this one off the workbench -- Rabbits and Robots is a 1-player TI BASIC strategy game. It is one of four I'm working on for a physical cassette game release later this year. Your five robots build conduits (red tiles) across the valley, from west to east, while fifteen rabbits eat all the greenery, wreck the conduits, and damage the robots upon contact. After each day, power pulses attempt to cross the valley through your conduits. After the first few days, you'll have to reach a certain percentage of successful pulses to stay in the game. This is a BASIC strategy game in the tradition of the old Not Polyoptics classics. It's slow! You can play it in overdrive mode without too much hassle, but I find it strangely immersive at normal speed. If you do choose to compile or modify it, I can't stop you, but I'd ask that you keep the files to yourself. Otherwise, the game is free to distribute as you wish. My current high score is 72,600 points and 64 successful circuits over 27 days. By day 27, the rabbit's 'turn' takes almost four minutes at regular speed. I made a little YouTube trailer for it here: If you have any questions, comments, or bug reports, let me know here! RABBITSROB.zip 15 1 Quote Link to comment Share on other sites More sharing options...
InfernalKeith Posted September 10 Author Share Posted September 10 1 REM RABBITS AND ROBOTS 2 REM (C) 2024 KEITH BERGMAN 3 REM ORPHANTECH.COM 4 REM LAST SAVED 9-9-2024 3PM 100 CALL CLEAR 110 RANDOMIZE 120 GOSUB 4000 170 GOSUB 5000 300 GOSUB 6000 310 GOSUB 7000 320 GOSUB 8000 330 GOSUB 9000 340 GOTO 310 4000 TURN=1 4005 CR=1 4007 SCORE=0 4010 CALL CHAR(120,"FFFFFFFFFFFFFFFF") 4020 CALL CHAR(112,"8181FF81A58181FF") 4030 CALL CHAR(128,"FFFFFFFFFFFFFFFF") 4040 CALL CHAR(136,"1818FF9999182466") 4050 CALL CHAR(137,"FFFFFFFFFFFFFFFF") 4060 CALL CHAR(113,"002322FA22210106") 4065 CALL CHAR(138,"1818FF9999182466") 4066 CALL CHAR(144,"8152005816004A81") 4067 CALL CHAR(145,"814A001A58005281") 4070 CALL COLOR(12,15,1) 4080 CALL COLOR(13,12,1) 4090 CALL COLOR(14,9,1) 4100 CALL COLOR(11,12,1) 4110 CALL COLOR(15,12,9) 4120 RETURN 5000 PRINT "p RABBITS AND ROBOTS V 1.0 ";CHR$(136): : 5005 PRINT " p p p ";CHR$(136);" ";CHR$(136);" ";CHR$(136): : 5010 PRINT " (C) 2024 KEITH BERGMAN FOR ORPHANTECH.COM" : : 5015 PRINT " PLEASE DON'T SELL, COMPILE":"OR MODIFY WITHOUT PERMISSION" :: 5020 PRINT " p p p ";CHR$(136);" ";CHR$(136);" ";CHR$(136) 5030 PRINT:: :" P PICKS ROBOT TO MOVE":" ESDX MOVES ROBOT":" H CHECK HEALTH STATS":" T TALLY SCORE" 5040 PRINT " Q QUITS GAME": : 5050 PRINT " PRESS ANY KEY TO START" 5060 CALL KEY(0,K,S) 5065 CALL CHAR(112,"8181FF81818181FF") 5070 IF S<>0 THEN 5079 5075 CALL KEY(0,K,S) 5076 CALL CHAR(112,"8181FF81A58181FF") 5078 IF S=0 THEN 5060 5079 CALL CHAR(112,"8181FF81A58181FF") 5080 CALL CLEAR 5090 PRINT "DO YOU PREFER:":"1. ESDX FOR CONTROLS":"2. ARROW KEYS FOR CONTROLS" 5100 CALL KEY(0,K,S) 5110 IF(S=0)+(K<49)+(K>51)<0 THEN 5100 5120 ON K-48 GOSUB 5140,5160 5125 CALL CLEAR 5130 RETURN 5140 C$="ESDXQHTP" 5150 RETURN 5160 C$=CHR$(11)&CHR$(8)&CHR$(9)&CHR$(10)&"QHTP" 5170 RETURN 6000 CALL HCHAR(24,1,120,32) 6010 CALL VCHAR(1,1,120,24) 6020 CALL HCHAR(1,1,120,32) 6030 CALL VCHAR(1,32,120,24) 6040 DIM RABX(15),RABY(15),RX(5),RY(5),RH(5) 6050 FOR Z=1 TO 15 6060 RABX(Z)=INT(RND*22)+2 6070 RABY(Z)=INT(RND*30)+2 6080 CALL HCHAR(RABX(Z),RABY(Z),112) 6090 NEXT Z 6095 CALL COLOR(11,16,1) 6100 COUNTER=1 6110 FOR Z=5 TO 21 STEP 4 6120 CALL HCHAR(Z,1,136) 6130 CALL SOUND(25,110,0,132,0,-7,0) 6140 RX(COUNTER)=Z 6150 RY(COUNTER)=1 6160 RH(COUNTER)=100 6170 COUNTER=COUNTER+1 6180 NEXT Z 6190 RETURN 7000 COUNTER=1 7010 FOR Z=1 TO 15 7015 IF RABX(Z)+RABY(Z)=0 THEN 7800 7020 CALL HCHAR(RABX(Z),RABY(Z),128) 7030 W=INT(RND*4)+1 7040 ON W GOSUB 7060,7100,7140,7180 7050 GOTO 7220 7060 RABX(Z)=RABX(Z)-1 7070 IF RABX(Z)<>1 THEN 7090 7080 RABX(Z)=23 7090 RETURN 7100 RABX(Z)=RABX(Z)+1 7110 IF RABX(Z)<>24 THEN 7130 7120 RABX(Z)=2 7130 RETURN 7140 RABY(Z)=RABY(Z)-1 7150 IF RABY(Z)<>1 THEN 7170 7160 RABY(Z)=31 7170 RETURN 7180 RABY(Z)=RABY(Z)+1 7190 IF RABY(Z)<>32 THEN 7210 7200 RABY(Z)=2 7210 RETURN 7220 CALL GCHAR(RABX(Z),RABY(Z),DEST) 7230 IF(DEST=136)+(DEST=138)+(DEST=112)=0 THEN 7940 7240 IF DEST<>112 THEN 7330 7250 CALL SOUND(2000,-7,0) 7260 CALL HCHAR(RABX(Z),RABY(Z),113) 7264 TEMX=RABX(Z) 7266 TEMY=RABY(Z) 7270 FOR Y=1 TO 15 7290 IF(RABX(Y)=TEMX)+(RABY(Y)=TEMY)<>-2 THEN 7310 7300 RABX(Y)=0 7305 RABY(Y)=0 7310 NEXT Y 7320 GOTO 7960 7330 CALL SOUND(2000,-5,0) 7335 RMARK=0 7340 FOR Y=1 TO 5 7350 IF(RX(Y)=RABX(Z))+(RY(Y)=RABY(Z))>-2 THEN 7355 7354 RMARK=Y 7355 NEXT Y 7360 RH(RMARK)=RH(RMARK)-20 7370 IF RH(RMARK)>0 THEN 7390 7380 RH(RMARK)=0 7390 RABX(Z)=0 7400 RABY(Z)=0 7800 V=INT(RND*22)+2 7810 W=INT(RND*30)+2 7820 CALL GCHAR(V,W,U) 7830 IF(U=112)+(U=136)+(U=138)<0 THEN 7800 7840 RABX(Z)=V 7850 RABY(Z)=W 7860 CALL HCHAR(V,W,112) 7870 CALL SOUND(25,880,0) 7880 CALL SOUND(40,1100,0) 7890 GOTO 7020 7940 CALL HCHAR(RABX(Z),RABY(Z),112) 7950 CALL SOUND(25,INT(RND*500)+1000,INT(RND*8)+7) 7960 NEXT Z 7970 COUNTER=COUNTER+1 7980 IF COUNTER<TURN THEN 7010 7985 GOSUB 13270 7990 RETURN 8000 T=9+TURN 8005 X$="DAY "&STR$(TURN) 8007 GOSUB 10000 8009 GOSUB 12000 8011 FOR X=1 TO 100 8012 NEXT X 8013 GOSUB 12040 8015 GOSUB 12100 8020 CALL KEY(0,K,S) 8030 IF S=0 THEN 8020 8035 CF=0 8040 FOR Z=1 TO 8 8050 IF K<>ASC(SEG$(C$,Z,1))THEN 8070 8060 CF=Z 8070 NEXT Z 8080 IF CF<>0 THEN 8097 8090 CALL SOUND(100,110,0) 8095 GOTO 8020 8097 GOSUB 13050 8100 ON CF GOTO 8450,8490,8530,8570,8140,8110,9600,8240 8110 GOSUB 12500 8120 GOSUB 13000 8130 GOTO 8013 8140 X$="Y TO QUIT, N TO CONTINUE" 8150 GOSUB 11000 8160 CALL KEY(0,K,S) 8170 IF S=0 THEN 8160 8180 IF K=89 THEN 8210 8190 CALL HCHAR(24,1,120,32) 8200 GOSUB 13000 8205 GOTO 8013 8210 CALL CLEAR 8220 PRINT "VISIT ORPHANTECH.COM TO SEE OUR NEWEST TI 99/4A PROJECTS" 8230 END 8240 X$="CURRENT BOT #"&STR$(CR)&". CHOOSE 1-5:" 8250 GOSUB 12000 8260 GOSUB 11000 8270 CALL KEY(0,K,S) 8280 IF(S=0)+(K<49)+(K>54)<0 THEN 8270 8290 GOSUB 13050 8295 IF RH(K-48)<1 THEN 8410 8300 CR=K-48 8310 FOR Z=1 TO 3 8320 CALL HCHAR(RX(CR),RY(CR),137) 8330 CALL SOUND(100,1500,0) 8340 CALL HCHAR(RX(CR),RY(CR),136) 8350 CALL SOUND(100,900,0) 8360 NEXT Z 8370 CALL HCHAR(24,1,120,32) 8375 GOSUB 12040 8380 T=T-1 8390 IF T=0 THEN 8990 8400 GOTO 8013 8410 X$="THIS ROBOT HAS MALFUNCTIONED" 8420 GOSUB 10000 8430 CALL SOUND(150,-4,0) 8440 GOTO 8240 8450 DX=RX(CR)-1 8460 DY=RY(CR) 8470 IF DX<1 THEN 8090 8480 GOTO 8600 8490 DX=RX(CR) 8500 DY=RY(CR)-1 8510 IF DY<1 THEN 8090 8520 GOTO 8600 8530 DX=RX(CR) 8540 DY=RY(CR)+1 8550 IF DY>32 THEN 8090 8560 GOTO 8600 8570 DX=RX(CR)+1 8580 DY=RY(CR) 8590 IF DX>23 THEN 8090 8600 IF RH(CR)<1 THEN 8410 8605 CALL GCHAR(DX,DY,DZ) 8610 IF (DZ=137)+(DZ=32)<>-1 THEN 8720 8620 CALL SOUND(20,440,0) 8623 CALL GCHAR(RX(CR),RY(CR),RCOL) 8625 CALL HCHAR(DX,DY,136) 8630 IF RCOL=136 THEN 8640 8632 CALL HCHAR(RX(CR),RY(CR),32) 8634 GOTO 8650 8640 CALL HCHAR(RX(CR),RY(CR),137) 8650 IF YFLAG<>1 THEN 8654 8651 YFLAG=0 8652 CALL HCHAR(DX,DY,138) 8654 T=T-1 8655 RX(CR)=DX 8660 RY(CR)=DY 8680 IF T=0 THEN 8990 8690 GOSUB 13140 8710 GOTO 8020 8720 IF DZ<>113 THEN 8770 8730 CALL SOUND(75,990,0) 8740 CALL SOUND(100,1200,0) 8750 T=T+6 8760 GOTO 8620 8770 IF DZ<>120 THEN 8810 8780 CALL SOUND(75,110,10,-5,0) 8790 RH(CR)=RH(CR)-5 8792 IF RH(CR)>0 THEN 8795 8793 RH(CR)=0 8795 GOSUB 13270 8800 GOTO 8380 8810 IF DZ<>128 THEN 8840 8820 YFLAG=1 8830 GOTO 8620 8840 IF DZ<>112 THEN 14000 8850 CALL SOUND(2000,-5,0) 8860 RMARK=0 8870 FOR Y=1 TO 15 8880 IF(DX=RABX(Y))+(DY=RABY(Y))>-2 THEN 8900 8890 RMARK=Y 8900 NEXT Y 8910 RH(CR)=RH(CR)-10 8920 IF RH(CR)>0 THEN 8935 8930 RH(CR)=0 8935 GOSUB 13270 8940 RABX(RMARK)=0 8950 RABY(RMARK)=0 8960 GOSUB 12100 8970 GOTO 8620 8990 CALL HCHAR(24,1,120,32) 8995 RETURN 9000 GOSUB 13200 9002 IF LFL=1 THEN 9360 9007 FOR X=5 TO 21 STEP 4 9008 TTOT=0 9009 LAST=0 9010 PX=X 9020 PY=1 9030 CALL GCHAR(PX,PY,PCH) 9040 CALL HCHAR(PX,PY,144+ABS(INT(PY/2)=(PY/2))) 9060 CALL GCHAR(PX,PY+1,PCH2) 9070 IF(PCH2>135)+(PCH2<139)>-2 THEN 9190 9080 CALL HCHAR(PX,PY,PCH) 9090 PY=PY+1 9097 LAST=0 9100 IF PY<31 THEN 9030 9110 FOR Y=0 TO 30 STEP 6 9120 CALL SOUND(-40,1870,Y) 9130 NEXT Y 9160 PSC=PSC+1 9163 SCORE=SCORE+(100*TURN) 9165 PST=PST+1 9170 NEXT X 9180 GOTO 9360 9190 IF TTOT=5 THEN 9300 9192 IF LAST=2 THEN 9243 9193 IF PX=2 THEN 9243 9195 CALL GCHAR(PX-1,PY,PCH2) 9200 IF(PCH2>135)+(PCH2<139)>-2 THEN 9243 9210 CALL HCHAR(PX,PY,PCH) 9220 PX=PX-1 9225 IF LAST=1 THEN 9030 9226 LAST=1 9227 TTOT=TTOT+1 9228 IF TTOT=5 THEN 9300 9230 GOTO 9030 9243 IF TTOT=5 THEN 9300 9245 IF PX=23 THEN 9284 9250 CALL GCHAR(PX+1,PY,PCH2) 9260 IF(PCH2>135)+(PCH2<139)>-2 THEN 9287 9270 CALL HCHAR(PX,PY,PCH) 9280 PX=PX+1 9282 IF LAST=2 THEN 9030 9284 TTOT=TTOT+1 9285 LAST=2 9286 GOTO 9030 9287 TTOT=TTOT+1 9288 IF TTOT=5 THEN 9300 9290 GOTO 9060 9300 CALL HCHAR(PX,PY,PCH) 9335 FOR Y=0 TO 30 9340 CALL SOUND(-10,-7,Y) 9345 NEXT Y 9350 GOTO 9165 9360 IF TURN<6 THEN 9410 9370 PG=PG+1+(INT(TURN/10)) 9380 PL=INT(100*(PSC/PST)) 9390 X$="POWER RATE "&STR$(PL)&"% GOAL "&STR$(PG)&"%" 9400 GOSUB 10000 9410 IF PG>PL THEN 9500 9420 TURN=TURN+1 9427 GOSUB 9650 9430 RETURN 9500 X$="YOU GOT BEAT BY BUNNIES!" 9510 GOSUB 10000 9514 CALL SOUND(500,110,0) 9515 CALL SOUND(550,139,0,123,0) 9516 CALL SOUND(1250,117,0,123,0) 9517 FOR X=1 TO 30 9518 CALL SOUND(-100,117,X,123,X) 9519 NEXT X 9520 CALL CLEAR 9530 PRINT "DAYS SURVIVED: ";TURN 9540 PRINT "CIRCUITS COMPLETED: ";PSC 9550 PRINT: :"FINAL SCORE: ";SCORE 9560 PRINT "PRESS ANY KEY" 9570 CALL KEY(0,K,S) 9580 IF S=0 THEN 9570 9590 GOTO 8210 9600 X$="00000"&STR$(SCORE) 9610 X$="SCORE: "&SEG$(X$,LEN(X$)-4,5)&" CIRCUITS: "&STR$(PSC) 9615 CALL HCHAR(24,1,120,32) 9620 GOSUB 10000 9622 FOR U=1 TO 100 9624 NEXT U 9626 CALL HCHAR(24,1,120,32) 9630 GOSUB 12100 9640 GOTO 8020 9650 FOR Z=1 TO 5 9660 IF RY(Z)<>1 THEN 9730 9665 IF RH(Z)=100 THEN 9730 9670 RH(Z)=RH(Z)+10 9680 CALL SOUND(25,2500,0) 9690 CALL SOUND(25,3200,0) 9700 CALL SOUND(25,2500,0) 9705 CALL SOUND (40,3600,0) 9710 IF RH(Z)<101 THEN 9730 9720 RH(Z)=100 9730 NEXT Z 9740 RETURN 10000 REM TEXT PRINTER 10005 CALL HCHAR(24,3,120,29) 10010 FOR Z=1 TO LEN(X$) 10020 CALL HCHAR(24,2+Z,ASC(SEG$(X$,Z,1))) 10030 CALL SOUND(-1,-1,0) 10040 NEXT Z 10050 FOR Z=1 TO 600 10060 NEXT Z 10070 FOR Z=1 TO LEN(X$) 10080 CALL HCHAR(24,2+Z,120) 10100 NEXT Z 10110 RETURN 11000 REM PRINT TEXT, DON'T ERASE 11005 CALL HCHAR(24,1,120,32) 11010 FOR Z=1 TO LEN(X$) 11020 CALL HCHAR(24,2+Z,ASC(SEG$(X$,Z,1))) 11030 NEXT Z 11040 RETURN 12000 FOR Z=1 TO 5 12010 CALL HCHAR(RX(Z),RY(Z),Z+48) 12020 NEXT Z 12030 RETURN 12040 FOR Z=1 TO 5 12050 CALL HCHAR(RX(Z),RY(Z),136) 12060 NEXT Z 12070 RETURN 12100 T$="00"&STR$(T) 12110 T$=SEG$(T$,LEN(T$)-1,2) 12120 X$=" ROBOT "&STR$(CR)&" MOVE "&T$&" HEALTH " 12130 T$="000"&STR$(RH(CR)) 12140 T$=SEG$(T$,LEN(T$)-2,3) 12150 X$=X$&T$&" " 12160 GOSUB 11000 12170 RETURN 12500 X$="" 12510 FOR Z=1 TO 5 12520 X$=X$&CHR$(Z+48)&":" 12530 Y$="000"&STR$(RH(Z)) 12540 X$=X$&SEG$(Y$,LEN(Y$)-2,3)&" " 12550 NEXT Z 12555 X$=SEG$(X$,1,LEN(X$)-1) 12560 GOSUB 12000 12570 GOSUB 10000 12580 GOSUB 12040 12590 RETURN 13000 FOR Z=0 TO 30 STEP 3 13010 CALL SOUND(-50,1800,Z) 13020 NEXT Z 13030 RETURN 13050 CALL SOUND(100,1500,0) 13060 CALL SOUND(75,900,0) 13070 RETURN 13100 FOR Z=210 TO 310 STEP 20 13110 CALL SOUND(-100,110,0,Z,0,-5,0) 13120 NEXT Z 13130 RETURN 13140 IF T>9 THEN 13165 13150 T$="0"&STR$(T) 13160 GOTO 13170 13165 T$=STR$(T) 13170 CALL HCHAR(24,17,ASC(SEG$(T$,1,1))) 13180 CALL HCHAR(24,18,ASC(SEG$(T$,2,1))) 13190 RETURN 13200 X$="SKIP POWER LAUNCH Y/N" 13210 GOSUB 11000 13215 LFL=0 13220 CALL KEY (0,K,S) 13230 IF S=0 THEN 13220 13240 IF K<>89 THEN 13255 13250 LFL=1 13252 PST=PST+5 13255 GOSUB 10070 13260 RETURN 13270 DRFL=0 13280 FOR X=1 TO 5 13290 IF RH(X)>0 THEN 13310 13300 DRFL=DRFL+1 13310 NEXT X 13320 IF DRFL<5 THEN 13350 13330 CALL HCHAR(24,1,120,32) 13335 X$="ALL ROBOTS HAVE FAILED" 13340 GOTO 9510 13350 RETURN 14000 FOR X=2000 TO 3000 STEP 50 14010 CALL SOUND(-100,X,0,-7,5) 14020 NEXT X 14030 CALL SOUND(2000,-6,0) 14040 CALL SCREEN(7) 14050 CALL SCREEN(4) 14060 RMARK=0 14070 FOR Y=1 TO 5 14080 IF(DX=RX(Y))+(DY=RY(Y))>-2 THEN 14100 14090 RMARK=Y 14100 NEXT Y 14110 RH(CR)=RH(CR)-70 14120 RH(RMARK)=RH(RMARK)-70 14130 IF RH(CR)>0 THEN 14150 14140 RH(CR)=0 14150 IF RH(RMARK)>0 THEN 14170 14160 RH(RMARK)=0 14170 CALL HCHAR(RX(CR),RY(CR),137) 14180 CALL HCHAR(DX,DY,137) 14190 RY(CR)=1 14200 RY(RMARK)=1 14210 TP$="EIMQU" 14215 FOR U=1 TO 2 14220 TP=INT(RND*5)+1 14230 TP=ASC(SEG$(TP$,TP,1))-64 14240 CALL GCHAR(TP,1,TPCK) 14250 IF TPCK<>137 THEN 14220 14260 IF U=2 THEN 14290 14270 RX(CR)=TP 14280 GOTO 14300 14290 RX(RMARK)=TP 14300 CALL HCHAR(TP,1,136) 14310 CALL SOUND(500,3750,0) 14320 NEXT U 14330 T=0 14340 FOR U=DX-1 TO DX+1 14350 FOR V=DY-1 TO DY+1 14360 IF (U<2)+(U>23)+(V<2)+(V>31)<0 THEN 14510 14370 CALL GCHAR(U,V,DZ) 14375 IF (DZ=136)+(DZ=138)<0 THEN 14510 14380 IF DZ<>112 THEN 14500 14390 CALL SOUND(250,-5,0) 14400 CALL SOUND(250,-7,0) 14420 RMARK=0 14430 FOR Y=1 TO 15 14440 IF(U=RABX(Y))+(V=RABY(Y))>-2 THEN 14460 14450 RMARK=Y 14460 NEXT Y 14470 IF RMARK=0 THEN 14500 14480 RABX(RMARK)=0 14490 RABY(RMARK)=0 14500 CALL HCHAR(U,V,137) 14505 CALL SOUND(50,-6,0) 14510 NEXT V 14520 NEXT U 14530 GOTO 8990 RABBITS AND ROBOTS (c) 2024 Keith Bergman for Orphantech.com Rev 1.0 - Last Manual Update 9/9/2024 INTRODUCTION ------------ It's a simple assignment, they said. You'll be done in no time, they said. They sent you to the edge of the valley with five obsolete maintenance bots. All you had to do was build conduits across the valley. Power pulses travel from one side to the other along the conduits. You pack up, come home and get paid. Then you saw the rabbits. They looked weird, but they seemed just like your typical fuzzy bunnies. Sure, they ate a lot of grass, and seemed to leave scorched earth in their wake, and yes, there were a lot of them, but how big of a problem could the little furry rodents be? Then you saw holes in your conduits before your first robot had even reached the other side of the valley. Then you saw your readings go haywire as they smashed into your 'bots. And still they came. More and more and more of them. Pretty soon, you realized someone in the head office didn't like you. OBJECT ------ RABBITS AND ROBOTS is a 1-player strategy game for the Texas Instruments TI 99/4A home computer. It is written in TI BASIC and designed to be playable on an unexpanded 99/4A, loaded from cassette tape. Use your five robots to build red channels across the screen from left to right, allowing power pulses to cross the playfield. Rabbits move at random and will wreck the red channels and damage the robots. GAMEPLAY -------- The game takes place on a rectangular playfield, the green valley you need to traverse. Your five robots are stationed on the western edge. Fifteen rabbits spawn and begin munching grass. Every tile they "eat" turns yellow as they leave it. The rabbits mill around at random, eating. If two rabbits collide, both are killed, and new rabbits will respawn, either this round or the next one, in a random location. A "+5" powerup will appear, which will give the player five more moves if picked up. Rabbits can mulch over the +5 powerup and it will disappear. Rabbits are allowed to 'wrap' around the screen, but robots are not. (Teleporting bunnies that can eat metal conduits? There must be something in the water around here.) If a rabbit traverses a yellow tile, nothing changes. If it lands on a green one, it eats all the grass and turns it yellow. If a rabbit moves onto a red conduit, it turns that tile yellow as well, and power pulses can no longer pass through that tile. If a rabbit collides with a robot while it is moving, it dies (and respawns later), but the robot takes 20% damage. When the rabbits are done, it's the robots' turn to move. You get ten moves per turn, plus one for each day that has passed. Switching to a new robot, even if you pick the same one you were just moving, uses up one move. If your robot walks onto a green tile, it will turn red, indicating a successful piece of conduit has been built. If the robot walks onto a yellow tile, it will be turned green (re-seeded with grass) and you'll have to walk on it again to build. Robots cannot walk on the gray border tiles, and will incur 5% damage running into them if they try. Conduits need only be built to touch the eastern side. Power pulses can pass through robots as well as conduits, so positioning a robot to stand in a gap at the end of a turn can sometimes save the day. If a robot steps on a rabbit, it's a bloody fight to the finish with lasers and karate. Just kidding - maybe in the sequel! The rabbit is killed instantly, but the robot takes 10% damage (all that fur gums up the moving parts). This isn't the most fast-paced of games, so two robots colliding by accident should be fairly rare. However, in emergency situations, you can crash one robot into another, which will cause all tiles around them to turn red, kill any rabbits on those tiles, and teleport the robots back to random starting tiles on the left, each with a 70% loss of health. A collision ends the player's turn. (If a third robot happens to be in the 'blast zone' of the collision, it will remain unharmed). If a robot reaches 0% it is broken and cannot move again. If all five robots reach 0%, the game is over. After the rabbits and robots each have a turn, the electrical grid will attempt to launch five power pulses across the valley, starting from the five tiles where the robots started. They will travel eastward, and can turn left or right if blocked, but they cannot backtrack. NOTE: you are prompted "skip power pulse?" at the end of each day. If it's obvious there's no path to the eastern edge, you can hit Y to skip the graphical display and save yourself some time. Or not! I don't wanna tell you how to run your operation. If they are blocked, or if they change direction more than a few times (due to a particularly twisty path or being stuck in a dead end), they simply fizzle out of existence - no damage is done by the pulse at any point. Pulses can pass through a red tile, or through a robot, only. Every pulse that successfully makes it to the eastern edge of the playfield scores the player (100xDAY) points. This means the further into the game you get, the more each successful pulse scores. At the start of each new day, any robot in one of the five 'docking ports' on the western edge (the spaces where they started) will recover 10% health, to a maximum of 100. A small audio cue, just before the rabbits start moving, will chime to indicate a robot repair. There is no penalty for pulses that don't make it across the valley. However, starting on Day 6, a Power Goal will be set, which will then increase as the game continues. The goal will go up 1% per day until day 11, then increase to 2% daily until day 21, then 3% daily, and so on. Player can check the health of all five robots, or tally their current score, by pressing H or T during gameplay. These options do not subtract from the total moves in that turn. The game ends when the percentage of successful power pulses is lower than the Power Goal, or when all five robots have been disabled. STRATEGY TIPS: ------------- - A dead robot can still conduct energy pulses, and rabbits who run into it will still die, so planning a conduit around one of your fallen comrades gives you a ‘safe’ tile to work with. - Focus on building a conduit several tiles wide, to make it more likely that pulses can still make it across even if rabbits damage one side or the other. But don't take too long to get a pulse or two through - you'll need at least one to have made it by Day 5, or the game will be over. - Conduits from the top and bottom launch points can ‘feed into’ a common conduit across the middle. - A "dead" robot in the field at 0% can be brought back to life. You've probably already figured out how. - Sometimes when there's a lot of damage to your conduits, your strategy for repairing them will take a few days to implement. Getting four or five pulses through on a day when things are less hectic will increase your percentage, keeping you in business for those few days at a time when none can cross. Even late in the game when the rabbits have destroyed almost everything, it's (usually) possible to keep a conduit open and hang on for a higher score. - Do not take the rabbits home. Metal-eating, teleporting, robot-attacking, eternally voracious valley rabbits are a lifetime commitment, not a cute Easter present. A NOTE ABOUT SPEED: ------------------ This game is written in TI BASIC, a notoriously slow language, and deliberately designed to be playable from cassette tape on a "stock" TI 99/4A. My goal was to create a game that could have come out in 1980. Obviously, this is not for everyone. The game can be played on the "CPU Overdrive" setting on the Classic99 emulator, but it is not optimized for speed, and the controls and sound effects will not be optimal. It would also be possible to compile the code, and I can't stop you from doing that, though I ask that you keep any compiled versions for personal use and not distribute them. My suggestion is to play it as-is and embrace the slowness. We're goofing off with ancient computers here. If you want lightning fast action, there are other options. Some of my favorite TI moments have been playing old games like Khe-Sanh, Diablo, Atlantis, Adventuremania, and other cassette-based classics where speed takes a back seat to strategy and atmosphere. That's the spirit I'm trying to capture with Rabbits and Robots. If that's the experience you're looking for, I hope I was successful. Keith Bergman Toledo, Ohio, USA September 2024 CONTACT: ------- Visit www.orphantech.com Email exiletoledo@gmail.com Write Keith Bergman, PO Box 140651, Toledo OH 43614, USA ### 9 2 Quote Link to comment Share on other sites More sharing options...
RXB Posted September 10 Share Posted September 10 Run this is RXB 2023 with the new assembly routines replacing GPL it moves way faster and better play. 1 Quote Link to comment Share on other sites More sharing options...
TI_Ken Posted September 16 Share Posted September 16 One thing about TI BASIC, it turns every action game into a strategy game! LOL. 1 3 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.