1 REM ++++++++++++++++++++++++++++++++ 2 REM ! Program .... AMAZING 3 REM ! Utg}va 1.0 83-06-01 4 REM ! av (c) Martin Adrian 7 REM ! Minne 16 Kbytes 8 REM ! Ins{nt av 2970 9 REM ++++++++++++++++++++++++++++++++ 10 REM 11 REM Screened by C R LERIN. 12 REM 19 RANDOMIZE 20 DEFFNA%=ABS(M%-K%)+2% 30 ; CHR$(12%)CUR(10%,0%)"SV]RIGHETSGRAD(1-13)"; : INPUT D% 40 IF D%<1% OR D%>13% THEN 30 ELSE K1%=2% : D%=D%+10% : S1%=2%*D%+1% 50 ; CHR$(12%)TAB(10%)CHR$(151%)"f&&&&&&&&&f" 60 ; TAB(10%)CHR$(151%)"9 AMAZING 9"CHR$(135%)"by Martin Adrian" 70 ; TAB(10%)CHR$(151%)"fdddddddddf" 80 ; : ; "Ett annorlunda labyrint-spel." 90 ; : ; "I detta spelet ser man inte labyrinten" 100 ; "uppifr}n utan man befinner sig inne" 110 ; "i den." 120 ; " Du har valt sv}righetsgrad"D%-10%"." 130 ; "Det inneb{r att du kommer att f} en" 140 ; "labyrint med storleken"S1%" *"S1%" rutor." 150 ; "till din hj{lp har du f}tt"K1%" st kartor" 160 ; : ; : ; "<-"TAB(12)"Vrid dig }t v{nster" 170 ; "->"TAB(12%)'-""- -""- h|ger' 180 ; "Mellanslag Flytta dig 1 steg framm}t" 190 ; "O (Bokstav) V{nd dig helt om" 200 ; "K"TAB(12%)"Visa en karta" 210 ; "G"TAB(12%)"Ge upp" 220 ; : ; "Obs kartan {r endast framme en kort tid" 230 DIM A%(3%),B%(3%),C%(3%),E%(4%),N%(2%) 240 DIM Q%(D%*D%+1%),G%(D%*D%) 250 DIM Z%(S1%,S1%) 260 E%(1)=1% : E%(2)=2% : E%(3)=4% : E%(4)=8% 270 R%=-1% : F%=-1% : M%=0% : L%=2% 280 FOR K%=1% TO D%*D% : G%(K%)=0% : NEXT K% 290 N%(1%)=3%+7*RND : N%(2%)=D%*D%-4%-7*RND 300 G%(N%(1%)+1%)=2% : G%(N%(2%)+1%)=24% 310 P%=N%(1%) : GOSUB 540 : P%=N%(2%) : GOSUB 540 320 L%=3%-L% : P%=N%(L%) 330 GOSUB 560 : IF P%<0% THEN 350 340 GOSUB 540 : GOTO 360 350 GOSUB 550 : IF P%<0% THEN 370 360 N%(L%)=P% : GOTO 320 370 FOR K%=1% TO D% 380 FOR L%=1% TO D% 390 T%=G%(D%*(K%-1%)+L%)/2% 400 Z%(2%*K%-1%,2%*L%-1%)=1% 410 IF T%=2%*(T%/2%) THEN Z%(2%*K%-1%,2%*L%)=1% 420 NEXT L% : Z%(2*K%-1%,2%*L%-1%)=1% 430 FOR L%=1% TO D% 440 T%=G%(D%*(K%-1%)+L%)/4% 450 IF T%=2%*(T%/2%) THEN Z%(2%*K%,2%*L%-1%)=1% 460 NEXT L% : Z%(2%*K%,2%*L%-1%)=1% 470 NEXT K% 480 P%=Q%(2%) : T%=P%-D%*(P%/D%) 490 FOR L%=1% TO D% 500 Z%(2%*K%-1%,2%*L%-1%)=1% 510 IF NOT L%=T% THEN Z%(2%*K%-1%,2%*L%)=1% 520 NEXT L% : Z%(2%*K%-1%,2%*L%-1%)=1% 530 GOTO 790 540 R%=R%+1% : Q%(R%+1%)=P% : RETURN 550 F%=F%+1% : P%=-1% : IF F%<=R% THEN P%=Q%(F%+1%) : RETURN 560 K%=0% 570 T%=P%+1% : IF T%/D%<>P%/D% THEN 590 580 S%=1% : GOSUB 730 590 T%=P%-D% : IF T%<0% THEN 610 600 S%=2% : GOSUB 730 610 T%=P%-1% : IF T%/D%<>P%/D% THEN 640 620 IF T%<0% THEN 640 630 S%=3% : GOSUB 730 640 T%=P%+D% : IF T%>=D%*D% THEN 660 650 S%=4% : GOSUB 730 660 IF K%<>0% THEN 670 : P%=-1% : RETURN 670 K%=1%+FIX(K%*RND) : T%=C%(K%) 680 IF G%(T%+1%)<>0% THEN M%=1% 690 IF M%=0% THEN B%(K%)=B%(K%)+16%*(G%(P%+1%)/16%) 700 G%(P%+1%)=G%(P%+1%)+A%(K%) 710 G%(T%+1%)=G%(T%+1%)+B%(K%) 720 P%=T% : RETURN 730 IF G%(T%+1%)=0% THEN 760 740 IF M%<>0% THEN RETURN 750 IF G%(P%+1%)/16%=G%(T%+1%)/16% THEN RETURN 760 K%=K%+1% : C%(K%)=T% : A%(K%)=E%(S%) 770 S%=S%+2%-4%*((S%+1%)/4%) : B%(K%)=E%(S%) 780 RETURN 790 S2%=S1% : P1%=S1% : P2%=T%*2% : R%=0% : F%=0% 800 GET A$ 810 REM UTSKRIFT 820 IF F%=0% THEN GOSUB 990 830 K%=INSTR(1%,CHR$(32%,9%,8%)+"OKG",CHR$(INP(56%)-128%)) 840 IF K%=0% THEN 830 ELSE F%=0% 850 IF K% THEN ON K% GOSUB 870,910,940,970,1330,1440 860 GOTO 820 870 REM MOVE 880 IF (R% AND 1%) THEN IF Z%(P1%,P2%+R%-2%) THEN F%=1% ELSE P2%=P2%+R%-2% 890 IF (R% AND 1%)=0% THEN IF Z%(P1%+R%-1%,P2%) THEN F%=1% ELSE P1%=P1%+R%-1% 900 IF P1%=S1% THEN 1410 ELSE IF P1%=0% THEN 1420 ELSE RETURN 910 REM RIGHT 920 IF P1%>0% AND P1%0% AND P1%S1% OR T1%<0% THEN F%=1% : RETURN 1060 T2%=P2% : T3%=0% : T4%=1%-R% : GOTO 1090 1070 T2%=P2%+(R%-2%)*I% : IF T2%>S2% OR T2%<0% THEN F%=1% : RETURN 1080 T1%=P1% : T3%=R%-2% : T4%=0% 1090 REM TESTSUBRUTIN 1100 IF Z%(T1%,T2%) THEN 1170 1110 M%=0% : IF Z%(T1%-T3%,T2%-T4%)=0% THEN F1%=1% : GOTO 1140 1120 IF F1%=0% THEN N%=1% ELSE IF T3% AND (T1%<2% OR T1%>S1%-2%) THEN N%=2% ELSE N%=2%+Z%(T1%-2%*T3%,T2%-2%*T4%) 1130 F1%=0% : GOSUB 1230 1140 M%=71% : IF Z%(T1%+T3%,T2%+T4%)=0% THEN F2%=1% : RETURN 1150 IF F2%=0% THEN N%=1% ELSE IF T3% AND (T1%<2% OR T1%>S1%-2%) THEN N%=2% ELSE N%=2%+Z%(T1%+2%*T3%,T2%+2%*T4%) 1160 F2%=0% : GOTO 1230 1170 REM V[GG FRAMF\R 1180 FOR K%=H% TO 71%-H% : SETDOT H%,K%+2% : SETDOT 71%-H%,K%+2% : NEXT K% : F%=1% 1190 REM V[GG VID SIDAN FRAMF\R 1200 IF F1% THEN M%=0% : IF Z%(T1%+T3%,T2%+T4%) THEN GOSUB 1290 ELSE GOSUB 1310 : GOSUB 1300 1210 IF F2% THEN M%=71% : IF Z%(T1%-T3%,T2%-T4%) THEN GOSUB 1290 ELSE GOSUB 1310 : GOSUB 1300 1220 RETURN 1230 REM UTSKRIFTS SUBRUTIN 1240 ON N% GOTO 1250,1270,1280 1250 FOR K%=H% TO H%-I%+7% : SETDOT K%,FNA% : SETDOT 71%-K%,FNA% : NEXT K% 1260 FOR K%=H%-I%+8% TO 63%-H%+I% : SETDOT K%,ABS(M%-H%+I%-8%)+2% : NEXT K% : RETURN 1270 GOSUB 1250 : GOSUB 1310 : GOTO 1300 1280 GOSUB 1250 1290 L%=ABS(M%-H%)+2% : GOSUB 1320 : L%=ABS(M%-H%-I%+6%)-4%*(M%>0%) 1300 FOR K%=L% TO ABS(M%-H%)+2% STEP -2%*(M%=0%)-1% : SETDOT H%,K% : SETDOT 71%-H%,K% : NEXT K% : RETURN 1310 L%=ABS(M%-H%)+2% : GOSUB 1320 : L%=ABS(M%-H%-I%+6%)+2% 1320 FOR K%=H%+1% TO 70%-H% : SETDOT K%,L% : NEXT K% : RETURN 1330 REM SKRIV UT KARTA 1340 IF K1%=0% THEN F%=1% : RETURN ELSE K1%=K1%-1% : L%=0% 1350 GOSUB 1450 : FOR I%=0% TO S1% : FOR K%=0% TO S2% 1360 IF Z%(I%,K%) THEN SETDOT I%,K%+2% 1370 NEXT K% : NEXT I% 1380 SETDOT P1%,P2%+2% : FOR I%=0% TO 500% : NEXT I% 1390 IF INP(56%)>128% OR L%=S1% THEN RETURN ELSE L%=L%+1% 1400 CLRDOT P1%,P2%+2% : FOR I%=0% TO 500% : NEXT I% : GOTO 1380 1410 ; CUR(23%,5%)CHR$(135%)"F|rs|k inte smita !"CHR$(151%); : P1%=P1%-1% : F%=1% : GOTO 820 1420 ; CHR$(12)"GRATTIS DU HITTADE UT" 1430 POKE 65013%,0% : GET A$ 1440 F%=1% : GOSUB 1350 : ; CUR(20%,0%); : END 1450 ; CHR$(12%) : FOR I%=0% TO 23% : ; CUR(I%,0%)CHR$(151%); : NEXT I% 1460 RETURN