1000 REM EXPERIMENTAL VERSION FOR CROSS[x].ASM 1001 REM LAST MOD 12/3/10 1009 PRINT 1010 PRINT "=== BEASTI === ADAPTED FOR OVERLAY" 1020 PRINT "* = YOU + = BEASTI O = ORGANISMS" 1030 PRINT "USE 2 4 8 6 (NUM KEYPAD) TO MOVE D L U R" 1040 PRINT "0 OR 1 FOR RANDOM JUMP, 5 FOR NO MOVE" 1050 PRINT "ENTER RANDOM SEED NUMBER "; 1055 CALL (3,1153,-26541) 1060 INPUT Z9 1065 CALL (3,1153,-21376) 1070 FOR I=0 TO Z9 1080 LET J=RND(0) 1090 NEXT I 1100 LET T9=50 1250 DIM B[10,10],O[20,2],M[9,2],Z[7] 1262 DATA 54,52,50,56,53,49,48 1263 FOR I=1 TO 7 1264 READ Z[I] 1265 NEXT I 1270 DATA 0,1,0,-1,1,0,-1,0,0,0,-1,-1,1,1,-1,1,1,-1 1280 LET 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 1350 FOR I=1 TO 10 1351 FOR J=1 TO 10 1352 LET B[I,J]=0 1353 NEXT J 1354 NEXT I 1360 LET Z=RND(0) 1370 LET O=10 1380 FOR I=1 TO 10 1390 LET X=INT(RND(0)*10)+1 1400 LET Y=INT(RND(0)*10)+1 1410 IF B[X,Y]#0 THEN 1390 1420 LET O[I,1]=X 1430 LET O[I,2]=Y 1440 LET B[X,Y]=10 1450 NEXT I 1460 LET O=10 1480 LET X=INT(RND(0)*10)+1 1490 LET Y=INT(RND(0)*10)+1 1500 IF B[X,Y]#0 THEN 1480 1510 LET B[X,Y]=-1 1530 LET X0=INT(RND(0)*10)+1 1540 LET Y0=INT(RND(0)*10)+1 1550 IF B[X0,Y0]#0 THEN 1530 1560 LET B[X0,Y0]=100 1580 LET V0=1.00000E-35 1583 CALL (8,27) 1584 CALL (8,91) 1585 CALL (8,50) 1586 CALL (8,74) 1590 FOR I0=1 TO T9 1600 CALL (8,27) 1601 CALL (8,91) 1602 CALL (8,72) 1604 PRINT 1610 PRINT "TIME =";I0 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 "`---------------------'" 1777 IF O=0 THEN 2240 1778 IF B[X0,Y0]=-1 THEN 2660 1779 IF I0>T9 THEN 2820 1780 GOSUB 7200 1785 PRINT "MOVE : "; 1790 CALL (7,A9) 1792 CALL (8,32) 1793 IF A9=27 THEN 2290 1794 GOSUB 7200 1803 LET J9=0 1810 FOR J=1 TO 7 1820 IF A9#Z[J] THEN 1830 1825 LET J9=J 1830 NEXT J 1835 LET J=J9 1840 IF J#0 THEN 1850 1844 GOTO 1780 1850 IF J<6 THEN 1990 1860 IF J=6 THEN 1960 1870 LET X1=INT(RND(0)*10)+1 1880 LET 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 ***" 1940 LET F=1 1950 GOTO 2300 1960 LET X1=Y0 1970 LET Y1=X0 1980 GOTO 2100 1990 LET X1=X0+M[J,1] 2000 LET Y1=Y0+M[J,2] 2010 IF J=5 THEN 2300 2020 IF X1#11 THEN 2040 2030 LET X1=X1-10 2040 IF X1#0 THEN 2060 2050 LET X1=X1+10 2060 IF Y1#11 THEN 2080 2070 LET Y1=Y1-10 2080 IF Y1#0 THEN 2100 2090 LET Y1=Y1+10 2100 IF B[X1,Y1] >= 0 THEN 2130 2110 PRINT "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 2170 IF Y1#O[I,2] THEN 2180 2171 LET O[I,1]=O[O,1] 2172 LET O[I,2]=O[O,2] 2180 NEXT I 2210 LET O=O-1 2220 PRINT "***** GULP *****" 2230 GOTO 2300 2240 PRINT "CONGRATULATIONS!" 2250 PRINT "ENTER 1 TO CONTINUE "; 2260 CALL (3,1153,-26541) 2270 INPUT Z9 2275 CALL (3,1153,-21376) 2280 IF Z9=1 THEN 1350 2290 CALL (3,1153,-26541) 2292 STOP 2300 LET B[X0,Y0]=0 2310 LET B[X1,Y1]=100 2320 LET X0=X1 2330 LET Y0=Y1 2345 IF O=0 THEN 2810 2350 FOR I=1 TO O 2360 LET R=INT(RND(0)*4)+1 2370 LET X1=O[I,1]+M[R,1] 2380 LET 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 LET Z0=O[I,1] 2450 LET Z1=O[I,2] 2460 LET B[Z0,Z1]=0 2470 LET O[I,1]=X1 2480 LET O[I,2]=Y1 2490 LET B[X1,Y1]=10 2500 NEXT I 2520 IF F=1 THEN 2810 2550 LET M=1.00000E+20 2560 FOR I=1 TO 9 2570 LET X1=X+M[I,1] 2580 LET 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! ***" 2653 LET B[X,Y]=0 2654 LET B[X1,Y1]=-1 2655 GOTO 2810 2660 PRINT "THE BEASTI THANKS YOU" 2670 GOTO 2250 2680 LET S=0 2690 FOR J=1 TO O 2700 LET S=S+(O[J,1]-X1)^2+(O[J,2]-Y1)^2 2710 NEXT J 2720 LET S=S+V0*((X1-X0)^2+(Y1-Y0)^2) 2730 IF S>M THEN 2760 2740 LET M=S 2750 LET B=I 2760 NEXT I 2770 LET B[X,Y]=0 2780 LET X=X+M[B,1] 2790 LET Y=Y+M[B,2] 2800 LET B[X,Y]=-1 2810 NEXT I0 2813 GOTO 1600 2820 PRINT "*** STARVATION ***" 2840 GOTO 2250 7198 REM POSITION TO 15,1 AND CLEAR BELOW 7200 CALL (8,27) 7210 CALL (8,91) 7220 CALL (8,49) 7230 CALL (8,53) 7240 CALL (8,59) 7250 CALL (8,49) 7260 CALL (8,72) 7270 CALL (8,27) 7280 CALL (8,91) 7290 CALL (8,74) 7300 RETURN 9999 END