10 REM ______________________________ 11 REM + + 12 REM + ------- DOTSPACE.BAS ----- + 13 REM + + 14 REM +Du ska }ka genom rymden till+ 15 REM +ett m}l. Krocka inte ! + 16 REM + Styr med U=upp N=ner + 18 REM + Anders Umeg}rd -88 dy. + 19 REM + Ins{nt av <4396> + 20 REM + ver 1.3 A.U -87 + 21 REM """""""""""""""""""""""""""""" 22 REM 100 DATA 20,10,60,1,20,10,60,1,35,5,20,5,35,5,20,10,60,1,20,25 110 POKE 65408,0 120 DATA 10,20,70,1,20,10,60,1,35,5,20,5,35,5,20,10,60,1,20,25 130 ; CHR$(12) 140 GOSUB 1400 150 Y=64 160 IF H>0 THEN STOP 170 ]=0 : P=0 : D=0 : H=0 : U=0 180 R(R%)=0 190 I(I%)=0 200 L=5 210 U=0 220 RANDOMIZE 230 D=0 240 IF H>O THEN STOP 250 G=INT(RND*60) : IF G<5 THEN 250 260 R=INT(RND*60) : IF R<4 THEN 220 270 ; CHR$(12) 280 FOR I=0 TO 23 : ; CUR(I,0)CHR$(151); : NEXT I 290 FOR I=2 TO 66 : SETDOT 1,I 300 SETDOT 2,I : NEXT I 310 FOR I=2 TO 66 : SETDOT I,2 320 SETDOT I,3 : NEXT I 330 FOR I=2 TO 66 : SETDOT I,66 340 SETDOT I,65 : NEXT I 350 FOR I=2 TO 66 : SETDOT 66,I 360 SETDOT 65,I : NEXT I 370 SETDOT I(I%),R(R%) 380 FOR I=0 TO A1 390 OUT 6,121 400 I(I%)=INT(RND*64) 410 IF H>0 THEN STOP 420 R(R%)=INT(RND*64) 430 IF I(I%)<4 THEN 400 440 IF R(R%)<4 THEN 420 450 DIM I(I%) 460 DIM R(R%) 470 SETDOT I(I%),R(R%) 480 ; CUR(0,0)CHR$(151); 490 OUT 6,6 500 NEXT I 510 ; CUR(0,0)CHR$(151); 520 CLRDOT G,65 : CLRDOT G+1,65 530 FOR I=0 TO 3000 : NEXT I : ; CHR$(7) 540 SETDOT Y,L : CLRDOT Y,L-1 550 REM H=O : U=0 560 REM IF Y=I(I%) AND L=R(R%) THEN 860 570 IF DOT(G+1,65) THEN 1150 580 IF DOT(G,65) THEN 1150 590 IF (INP(56%) AND 223)=218 THEN GOSUB 780 : REM Z 600 IF (INP(56%) AND 223)=211 THEN GOSUB 770 : REM S 610 IF (INP(56%) AND 223)=213 THEN GOSUB 1020 : REM U 620 IF (INP(56%) AND 223)=206 THEN GOSUB 1730 : REM N 630 IF DOT(Y,L+1) THEN 1100 640 FOR I=0 TO (50%-B%) : NEXT I 650 H=H+1 660 L=L+1 670 ]=]+1 680 ONERRORGOTO 1800 690 READ A%,B% 700 FOR C%=1% TO B% 710 OUT 6%,0%,6%,121% 720 FOR D%=1% TO A% 730 NEXT D% : NEXT C% 740 REM 750 FOR I=1 TO 11-B% : NEXT I 760 GOTO 540 770 IF INP(56)>128 THEN RETURN ELSE 770 780 SETDOT Y,L 790 Y=Y-1 : SETDOT Y,L 800 CLRDOT Y+1,L 810 IF DOT(Y,L+1) THEN 1100 820 Y=Y-1 : SETDOT Y,L 830 CLRDOT Y+1,L 840 IF DOT(Y,L+1) THEN 1100 850 Y=Y-1 : SETDOT Y,L 860 CLRDOT Y+1,L 870 IF DOT(Y,L+1) THEN 1100 880 L=L+1 : SETDOT Y,L 890 CLRDOT Y,L-1 900 IF DOT(Y,L+1) THEN 1100 910 L=L+1 : SETDOT Y,L 920 CLRDOT Y,L-1 930 IF DOT(Y,L+1) THEN 1100 940 L=L+1 : SETDOT Y,L 950 CLRDOT Y,L-1 960 REM IF Y=I(I%) THEN 860 970 REM IF L=R(R%) THEN 860 980 IF DOT(G,65) THEN 1150 990 IF DOT(G+1,65) THEN 1150 1000 ]=]-1 1010 RETURN 1020 Y=Y-2 : SETDOT Y,L : CLRDOT Y+2,L 1030 IF DOT(Y,L+1) THEN 1100 1040 REM IF Y=I(I%) THEN 860 1050 REM IF L=R(R%) THEN 860 1060 IF DOT(G+1,65) THEN 1150 1070 IF DOT(G,65) THEN 1150 1080 ]=]-1 1090 RETURN 1100 FOR I=0 TO 3000 : NEXT I 1110 ; CHR$(7); 1120 ; CHR$(12)"SORRY" 1130 D=0 1140 GOTO 1410 1150 IF ]<3 THEN 540 1160 FOR I=0 TO 3000 : NEXT I 1170 ; CHR$(7) 1180 ; CHR$(12)"Bravo , du klarade det!" 1190 IF ]<40 THEN H=H+111 : GOTO 1260 1200 IF ]<60 THEN H=H+88 : GOTO 1260 1210 IF ]<90 THEN H=H+77 : GOTO 1260 1220 IF ]<110 THEN H=H+66 : GOTO 1260 1230 IF ]<130 THEN H=H+44 : GOTO 1260 1240 H=H+9 1250 RESTORE 1260 ; "Po{ng:";H 1270 ONERRORGOTO 1340 1280 READ A%,B% 1290 FOR C%=1% TO B% 1300 OUT 6%,0%,6%,121% 1310 FOR D%=1% TO A% 1320 NEXT D% : NEXT C% 1330 FOR I=1 TO 90 : NEXT I : GOTO 1270 1340 GET R$ 1350 ; "Extra bonus f|r genomfint arbete:" 1360 U=INT(RND*51) 1370 ; H;"+";U;"=";H+U 1380 D=H+U 1390 IF D>O THEN O=D 1400 REM 1410 ; CUR(7,0)"********************************************************************************" 1420 ; CUR(8,0)"**" 1430 ; "**" 1440 ; "** PO[NG:";D;"(";H;") H\GSTA:";O 1450 ; "**" 1460 ; "** Du ska }ka genom rymden till ett m}l" 1470 ; "** Krocka inte med n}got!" 1480 ; "** DU startar i nedre v{nstra h|rnet!" 1490 ; "**" 1500 ; "** --------> U=upp N=NER" 1510 ; "** C. ver 1.3 A.U -87" 1520 ; "**" 1530 ; "**" 1540 H=0 : D=0 : U=0 1560 ; "** L{tt eller Sv}r ( L / S )?" 1570 ; "**" 1580 ; "********************************************************************************" 1590 ; CUR(18,30); : GET A$ : ; A$; 1600 IF A$="L" OR A$="l" THEN A1=120 : GOTO 1620 1610 IF A$="S" OR A$="s" THEN A1=250 ELSE 1590 1620 REM 1630 REM 1640 H=0 : D=0 1650 IF PEEK(65408)=1 THEN 150 1660 POKE 65408,1 1670 ; CHR$(12) 1680 ; CUR(10,13)"DOT IN SPACE" 1690 ; TAB(12)'""""""""""""""' 1700 OUT 6,-59 1710 FOR I=0 TO 3000 : NEXT I : ; CHR$(7) 1720 GOTO 150 1730 Y=Y+2 : SETDOT Y,L : CLRDOT Y-2,L 1740 RETURN 1750 REM 1760 REM By Anders Umeg}rd 87-03-29 1770 REM 1780 REM Knep : Man kan ta en DOT under 1790 REM fr}n !!! 1800 RESTORE : GOTO 680 1810 REM ***************************** 1820 REM   1830 REM 91rem DOTRACE 1840 REM   1850 REM  Styr upp}t och ned}t utan  1860 REM  att krocka !!!!!!!!!!!!!!  1870 REM 92rem Ins{nt av <4396> 1880 REM   1890 REM *****************************