10 ! LUFF800.GAM / Enda {ndringen {r till{gget av rad 3 f|r ABC 806 15 ! som gjorts av B.M. Lund. 20 ! Eljest samma program som f|r ABC 80. 30 WIDTH 40 ! Ta bort denna rad f|r ABC800 M/C. 40 SINGLE : INTEGER : NO EXTEND 50 DIM O(14),A(2,8),A$(4),X(14),Z(14) 60 DIM C(2,30),T(28,28),U(3,2) 70 X1=30000 : O1=30001 80 H1=14 : H2=14 : L1=14 : L2=14 90 RANDOMIZE 100 RESTORE 110 FOR I=1 TO 14 120 READ Z(I) 130 DATA 1,2,4,4,8,16,16,32,64,64,128,256,512,1024 140 NEXT I 150 FOR I=1 TO 14 160 READ X(I) 170 DATA 4,8,16,16,32,64,64,128,1000,0,0,-1,-1,-1 180 NEXT I 190 FOR I=1 TO 14 200 READ O(I) 210 DATA 8,16,32,32,64,128,128,256,-1,0,-1,-1,-1,-1 220 NEXT I 230 FOR I=1 TO 2 240 FOR J=1 TO 8 250 READ A(I,J) 260 DATA 0,1,1,1,0,-1,-1,-1 270 DATA -1,-1,0,1,1,1,0,-1 280 NEXT J 290 NEXT I 300 FOR I=5 TO 24 : FOR J=5 TO 24 310 T(I,J)=0 : NEXT J : NEXT I 320 ; CHR$(12); 330 ; "> LUFFARSCHACK f|r matris 20 x 20 <" 340 ; : ; "F|r att markera ett drag skriver du" 350 ; "'rad','kolumn'. Om du vill skriva om" 360 ; "spelplanen skriver du 0,0 i st{llet" 370 ; "ditt drag." 380 ; : ; "Vill du b|rja "; 390 ON ERROR GOTO 430 : INPUT A$ 400 PRINT 410 IF A$="JA" OR A$="ja" THEN 460 420 IF A$="NEJ" OR A$="nej" THEN 450 430 ; "Svara bara ja eller nej {r du bussig !" 440 ; CHR$(7) : GOTO 380 450 A1=14 : A2=14 : S1$="O" : GOSUB 1950 : GOTO 1390 460 ; : ; "Du f}r automatisk en markering" 470 ; "i position 10,10 s} att vi f}r b{st" 480 ; "plats p} spelplanen." 490 ; : ; "Tryck p} en tangent n{r du {r redo ! "; : GET A$ 500 GOSUB 1950 : REM ** RITA SPELPLANEN 510 A1=14 : A2=14 : GOTO 630 520 ; CUR(4,27);"Ditt drag:";CUR(5,27) 530 ; CUR(5,27);STRING$(10,32);CUR(5,27); 540 ON ERROR GOTO 520 : INPUT A1,A2 550 IF A1=0 AND A2=0 THEN GOSUB 1950 : GOTO 520 560 ; 570 IF A1>20 THEN 520 580 IF A2>20 THEN 520 590 A1=A1+4 : A2=A2+4 600 IF T(A1,A2)=0 THEN 630 610 ; CHR$(7) : ; CUR(20,26);"UPPTAGET !" 620 GOTO 520 630 T(A1,A2)=X1 640 ; CUR(20,26);STRING$(10,32) 650 S1$="X" 660 GOSUB 1940 : REM ** MARKERA P] SK[RMEN 670 IF A1>H1 THEN H1=A1 680 IF A1H2 THEN H2=A2 700 IF A2M THEN 860 840 R=R+1 850 NEXT L 860 R=R*3 870 IF T(I1-A1,I2-A2)T(I1-A1,I2-A2) THEN 910 890 R=R+1 900 R=R+1 910 R=R+1 920 IF L<5 THEN 970 930 IF R=7 THEN IF M=O1 THEN 950 940 IF R<>8 THEN 970 950 IF U(1,1)=-1 THEN 970 960 GOTO 1720 970 IF M=X1 THEN 1000 980 X=O(R) 990 GOTO 1010 1000 X=X(R) 1010 IF X=0 THEN 1150 1020 IF L<5 THEN 1050 1030 IF X<0 THEN 1510 1040 IF L=5 THEN 1060 1050 X=X/2 1060 K1=I1 : K2=I2 1070 FOR L=1 TO 4 1080 K1=K1+A1 : K2=K2+A2 1090 IF T(K1,K2)M THEN 1150 1110 GOTO 1140 1120 T(K1,K2)=T(K1,K2)+X 1130 X=X-Z(R) 1140 NEXT L 1150 NEXT J 1160 NEXT I2 1170 NEXT I1 1180 GOSUB 1830 1190 IF R=1. THEN 1390 1200 I=1 : R=0 1210 FOR I1=L1-2 TO H1+2 1220 FOR I2=L2-2 TO H2+2 1230 IF T(I1,I2)>=X1 THEN 1290 1240 IF T(I1,I2)=0 THEN 1290 1250 IF T(I1,I2)=I THEN 1310 1330 A1=C(1,J) 1340 A2=C(2,J) 1350 IF A1<4 THEN 1310 1360 IF A1>28 THEN 1310 1370 IF A2<4 THEN 1310 1380 IF A2>28 THEN 1310 1390 I1=A1-4 : I2=A2-4 : T(A1,A2)=O1 1400 ; CUR(8,27);"Mitt drag:";CUR(9,27);STRING$(10,32) 1410 ; CUR(9,27);I1;",";I2 1420 S1$="O" 1430 GOSUB 1940 1440 FOR I1=5 TO 24 1450 FOR I2=5 TO 24 1460 IF T(I1,I2)>=X1 THEN 1480 1470 T(I1,I2)=0 1480 NEXT I2 1490 NEXT I1 1500 GOTO 520 1510 IF M>X1 THEN 1590 1520 ; 1530 ; CHR$(7) 1540 ; CUR(20,27);"GRATTIS !" 1550 ; CUR(21,27);"DU VANN JU !" 1560 ; CUR(23,27);"MER "; : INPUT A$ 1570 IF A$="ja" OR A$="JA" THEN 50 1580 END 1590 K1=I1+A(1,J) : K2=I2+A(2,J) 1600 IF T(K1,K2)=X1 THEN 1800 1780 U(K,1)=K1 : U(K,2)=K2 : K=K+1 1790 IF I=5 THEN 1820 1800 K1=K1+A(1,J) : K2=K2+A(2,J) 1810 NEXT I 1820 GOTO 970 1830 IF U(1,1)=0 THEN 1920 1840 IF U(1,1)=-1 THEN 1920 1850 R=0 1860 FOR I=1 TO 3 1870 IF R>T(U(I,1),U(I,2)) THEN 1890 1880 R=T(U(I,1),U(I,2)) : A1=U(I,1) : A2=U(I,2) 1890 NEXT I 1900 R=1 1910 GOTO 1930 1920 R=0 1930 RETURN 1940 ; CUR(A1-3,A2-2);S1$ : RETURN 1950 ; CHR$(12.);" 11111111111" 1960 ; " 12345678901234567890" 1970 FOR L1=5. TO 24. 1980 IF L1<14. THEN L3=1 ELSE L3=0 1990 ; CUR(L1-3,L3);L1-4;CUR(L1-3,22);L1-4;CUR(L1-3,3); 2000 FOR L2=5. TO 24. 2010 IF T(L1,L2)=0. THEN ; CHR$(127.); : GOTO 2040 2020 IF T(L1,L2)=X1 THEN ; "X"; : GOTO 2040 2030 ; "O"; 2040 NEXT L2 2050 NEXT L1 2060 ; CUR(22,0);" 12345678911111111112" 2070 ; " 01234567890"; 2080 RETURN 2090 WIDTH 80. 2100 END