Jump to content
IGNORED

Rabbits and Robots - new TI BASIC game


Recommended Posts

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! 

 

 

rab11.jpg.8167835c7079bea40e21a5a969091388.jpg

rab1.jpg.fb3e2319b98ee6d111a4b08f20d4e8e6.jpg

rab5.jpg.95f9e4cd667b1f69b958b8343182dd65.jpg

RABBITSROB.zip

  • Like 15
  • Thanks 1
Link to comment
Share on other sites

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

###

  • Like 9
  • Thanks 2
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...