1000  REM *** BEASTE ***
1010  REM ORIGINAL BEASTI.D600 MODIFIED FOR TSB-E W/ MOD HP2100 SIM
1020  REM TO CONVERT TO "REAL" HPBASIC MOVE '27 CODES OUTSIDE QUOTES
1030  REM AND CONVERT HP-STYLE E/J/H CODES TO ANSI EQUIVALENTS
1040  REM (UNLESS RUNNING ON A REAL HP TERM.. THEN DROP ANSI ATTRIBS)
1050  REM EXTENSIVE MODS MADE TO FLOW TO MAKE IT SHOW FINAL CONFIG
1060  REM RESULTING IN MUCH SPAGETTI..WHATEVER TO MAKE IT WORK
1070  REM T9=NUMBER OF TURNS
1080  T9=50
1090  DIM Q$[72]
1100  PRINT "INSTRUCTIONS";
1110  INPUT Q$
1111  PRINT "'27E"
1120  IF Q$[1,1]="Y" THEN 2860
1130  IF Q$[1,1]="N" THEN 1250
1140  REM THIS WAS FANCY FLASHING STUFF...
1150  PRINT "PLEASE TYPE IN RIGHT INFO!"
1240  GOTO 1100
1250  DIM B$[7],B[10,10],O[20,20],M[9,2],A$[72]
1260  B$="EWSNRTJ"
1270  DATA 0,1,0,-1,1,0,-1,0,0,0,-1,-1,1,1,-1,1,1,-1
1280  F=0
1290  FOR I=1 TO 9
1300  FOR K=1 TO 2
1310  READ M[I,K]
1320  NEXT K
1330  NEXT I
1340  REM INITIALIZE BOARD
1350  MAT B=ZER
1360  Z=RND(TIM(0))
1370  O=10
1380  FOR I=1 TO 10
1390  X=INT(RND(0)*10)+1
1400  Y=INT(RND(0)*10)+1
1410  IF B[X,Y] <> 0 THEN 1390
1420  O[I,1]=X
1430  O[I,2]=Y
1440  B[X,Y]=10
1450  NEXT I
1460  O=10
1470  REM PUT BEASTI ON BOARD
1480  X=INT(RND(0)*10)+1
1490  Y=INT(RND(0)*10)+1
1500  IF B[X,Y] <> 0 THEN 1480
1510  B[X,Y]=-1
1520  REM PUT ORGANISM EATER ON BOARD
1530  X0=INT(RND(0)*10)+1
1540  Y0=INT(RND(0)*10)+1
1550  IF B[X0,Y0] <> 0 THEN 1530
1560  B[X0,Y0]=100
1570  REM INITIALIZE FOR GAME:V0 IS AGGRESSIVENESS OF BEASTI
1579  REM WAS V0=1.E-35
1580  V0=1.E-35
1590  FOR I0=1 TO T9
1600  PRINT "'27H"
1610  PRINT "TIME =";I0
1620  REM PRINT OUT THE BOARD
1622  REM DID STUFF HERE
1625  PRINT ".---------------------."
1630  FOR X1=1 TO 10
1635  PRINT ":";
1640  FOR Y1=1 TO 10
1650  IF B[X1,Y1] >= 0 THEN 1680
1660  PRINT " +";
1670  GOTO 1750
1680  IF B[X1,Y1]>0 THEN 1710
1689  REM WAS " .";...
1690  PRINT "  ";
1700  GOTO 1750
1710  IF B[X1,Y1]=100 THEN 1740
1720  PRINT " 0";
1730  GOTO 1750
1740  PRINT " *";
1750  NEXT Y1
1760  PRINT " :"
1770  NEXT X1
1775  PRINT "`---------------------'"
1776  REM FLOW CHANGE...
1777  IF O=0 THEN 2240
1778  IF B[X0,Y0]=-1 THEN 2660
1779  IF I0>T9 THEN 2820
1780  PRINT "'27J";
1790  INPUT A$
1800  PRINT
1810  FOR J=1 TO 7
1820  IF A$=B$[J,J] THEN 1850
1830  NEXT J
1840  GOTO 1780
1850  IF J<6 THEN 1990
1860  IF J=6 THEN 1960
1870  X1=INT(RND(0)*10)+1
1880  Y1=INT(RND(0)*10)+1
1890  IF X1 <> X0 THEN 1910
1900  IF Y1=Y0 THEN 1870
1910  IF B[X1,Y1] >= 0 THEN 2130
1920  PRINT "*** SPLAT ***"
1930  PRINT "YOU JUST SMASHED THE BEASTI!!!!"
1940  F=1
1950  GOTO 2300
1960  X1=Y0
1970  Y1=X0
1980  GOTO 2100
1990  X1=X0+M[J,1]
2000  Y1=Y0+M[J,2]
2010  IF J=5 THEN 2300
2020  IF X1 <> 11 THEN 2040
2030  X1=X1-10
2040  IF X1 <> 0 THEN 2060
2050  X1=X1+10
2060  IF Y1 <> 11 THEN 2080
2070  Y1=Y1-10
2080  IF Y1 <> 0 THEN 2100
2090  Y1=Y1+10
2100  IF B[X1,Y1] >= 0 THEN 2130
2110  PRINT "NO NO NO..MUSNT EAT THE BEASTI"
2120  GOTO 1780
2130  IF B[X1,Y1]=0 THEN 2300
2140  IF B[X1,Y1]=100 THEN 2300
2150  FOR I=1 TO O
2160  IF X1 <> O[I,1] THEN 2180
2165  REM MODS HERE TO FIX
2170  IF Y1 <> O[I,2] THEN 2180
2171  O[I,1]=O[O,1]
2172  O[I,2]=O[O,2]
2180  NEXT I
2210  O=O-1
2219  REM CAN'T USE HP ATTRIBS SINCE TSB-E CAN'T DO LC, ANSI INSTEAD..
2220  PRINT "'27[7'109***** GULP *****'27[0'109"
2229  REM WAS IF O>0 THEN 2300
2230  GOTO 2300
2240  PRINT "CONGRATULATIONS!... YOU HAVE SURVIVED THROUGH ANOTHER DAY"
2250  PRINT "'27J"
2260  PRINT "CONTINUE";
2270  INPUT Q$
2280  IF Q$="YES" THEN 1350
2290  STOP
2300  B[X0,Y0]=0
2310  B[X1,Y1]=100
2320  X0=X1
2330  Y0=Y1
2340  REM MOVE THE ORGANISM
2344  REM FLOW CHANGE...
2345  IF O=0 THEN 2810
2350  FOR I=1 TO O
2360  R=INT(RND(0)*4)+1
2370  X1=O[I,1]+M[R,1]
2380  Y1=O[I,2]+M[R,2]
2390  IF X1>10 THEN 2500
2400  IF X1<1 THEN 2500
2410  IF Y1>10 THEN 2500
2420  IF Y1<1 THEN 2500
2430  IF B[X1,Y1] <> 0 THEN 2500
2440  Z0=O[I,1]
2450  Z1=O[I,2]
2460  B[Z0,Z1]=0
2470  O[I,1]=X1
2480  O[I,2]=Y1
2490  B[X1,Y1]=10
2500  NEXT I
2510  REM MOVE THE BEASTI
2520  IF F=1 THEN 2810
2530  REM IF O>5 THEN 1440
2540  REM V0=O
2550  M=1.E+20
2560  FOR I=1 TO 9
2570  X1=X+M[I,1]
2580  Y1=Y+M[I,2]
2590  IF X1>10 THEN 2760
2600  IF X1<1 THEN 2760
2610  IF Y1>10 THEN 2760
2620  IF Y1<1 THEN 2760
2630  IF B[X1,Y1]=10 THEN 2760
2640  IF B[X1,Y1] <> 100 THEN 2680
2650  PRINT "*** GULP! ***"
2652  REM FLOW CHANGE TO SHOW END CONFIG
2653  B[X,Y]=0
2654  B[X1,Y1]=-1
2655  GOTO 2810
2660  PRINT "THE BEASTI THANKS YOU FOR YOUR COOPERATION"
2670  GOTO 2250
2680  S=0
2690  FOR J=1 TO O
2700  S=S+(O[J,1]-X1)^2+(O[J,2]-Y1)^2
2710  NEXT J
2720  S=S+V0*((X1-X0)^2+(Y1-Y0)^2)
2730  IF S>M THEN 2760
2740  M=S
2750  B=I
2760  NEXT I
2770  B[X,Y]=0
2780  X=X+M[B,1]
2790  Y=Y+M[B,2]
2800  B[X,Y]=-1
2810  NEXT I0
2812  REM FLOW CHANGE...
2813  GOTO 1600
2820  PRINT "YOU HAVE NOT EATEN YOUR MINIMUM DAILY REQUIREMENTS OF ORGANISMS"
2830  PRINT "*** STARVATION ***"
2840  GOTO 2250
2850  PRINT
2860  PRINT
2870  PRINT "THE OBJECT OF THE GAME IS TO EAT ALL OF THE ORGANISMS"
2880  PRINT
2890  PRINT "EACH MOVE TAKES UP ONE HOUR."
2900  PRINT "THERE IS A BEASTI WHICH HAS ONLY ONE OBJECTIVE:"
2910  PRINT "             TO EAT YOU!"
2920  PRINT
2930  PRINT "THE BEASTI EATS YOU BY MOVING TO OCCUPY YOUR SPACE"
2940  PRINT "THE SAME APPLYS WITH YOU EATING THE ORGANISIMS."
2950  PRINT "YOU HAVE THE FOLLOWING MOVES:  N S E W R T"
2960  PRINT
3000  PRINT "         J                 JUMP (RANDOM)"
3010  PRINT "                           NOTE:  IF YOU LAND ON THE BEASTI,"
3020  PRINT "                           IT IS CRUSHED.  ***HOWEVER***"
3030  PRINT "                           YOU MAY LAND RIGHT BESIDE THE"
3040  PRINT "                           BEASTI, IN WHICH CASE IT'S"
3050  PRINT "                                 *** LUNCHTIME ***"
3060  PRINT
3070  PRINT "THE BEASTI CAN MOVE HORIZONTALLY, VERTICALLY, OR DIAGONALLY ONE"
3080  PRINT "SPACE EACH HOUR.  IF YOU MOVE OFF THE BOARD, YOU WILL REAPPEAR"
3090  PRINT "ON THE OPPOSITE SIDE."
3100  PRINT "    * = YOU"
3110  PRINT "    + = *BEASTI*"
3120  PRINT "    O = ORGANISMS"
3129  REM REM ADDED PAUSE...
3130  PRINT "THE BEASTI IS INTELLIGENT, SO BE CAREFULL !! (ENTER X)";
3135  INPUT Q$
3136  PRINT "'27E"
3140  GOTO 1250
3150  END
