|
DataMuseum.dkPresents historical artifacts from the history of: MIKADOS |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about MIKADOS Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - download
Length: 7584 (0x1da0) Notes: Mikados TextFile, Mikados_K Names: »VSKAK«
└─⟦0ca3cf8fa⟧ Bits:30004600 DEMO1 - COMAL demoprogram └─⟦this⟧ »VSKAK«
0100 CLEAR 0110 FOR X=1 TO 5 0120 PRINT 0130 NEXT X 0140 FOR X=13 TO 10 STEP -1 0150 PRINT TAB(48);X 0160 NEXT X 0170 FOR X=9 TO 1 STEP -1 0180 PRINT TAB(49);X 0190 NEXT X 0200 PRINT TAB(50);" 1 1 1 1" 0210 PRINT TAB(50);" 1 2 3 4 5 6 7 8 9 0 1 2 3" 0220 RANDOMIZE 0230 T,M,F,PM=0 0240 DIM V(50),Z(50) 0250 DIM S(2),R(2),MX(25),MY(25) 0260 DIM A(15,15),H(15,15),ST$(1),K(256,3),L(256,3) 0270 CURSOR 24,1 0280 PRINT "VAGABONDSKAK - 5 PAA STRIBE" 0290 PRINT TAB(29);"SPILLEPLAN 13*13" 0300 FOR X=6 TO 18 0310 CURSOR 52,X 0320 ; ": : : : : : : : : : : : :" 0330 NEXT X 0340 OPEN "DEMO1:DATA",R 0350 IF STATUS("DEMO1:DATA")<>0 THEN GO TO 0340 0360 WHILE STATUS("DEMO1:DATA")<>19 0370 GET "DEMO1:DATA":X2,Y2,Z2,V2,X1,Y1,Z1,V1 0380 K(X2+1,Y2+1)=V2;K(X1+1,Y1+1)=V1;L(X2+1,Y2+1)=Z2;L(X1+1,Y1+1)=Z1 0390 ENDWHILE 0400 FOR X=2 TO 14 0410 FOR Y=2 TO 14 0420 A(X,Y),H(X,Y)=0 0430 NEXT Y 0440 NEXT X 0450 FOR X=1 TO 15 0460 A(X,1),A(X,15),A(1,X),A(15,X)=-1 0470 NEXT X 0480 PRINT CHR(7) 0490 INPUT "VIL DU SPILLE BLINDT ?! ",ST$ 0500 IF ST$="J" THEN F=1 0510 INPUT "HVILKET NIVEAU ? ",NI 0520 LIM=(NI-1)*700+20 0530 INPUT "VIL DU STARTE ? ",ST$ 0540 IF ST$="N" THEN 0550 A(8,8)=1 0560 CURSOR 64,12 0570 PRINT "x" 0580 CURSOR 1,9 0590 PRINT "MIT TR@K : ";7;":";7 0600 EX,EY=8 0610 ENDIF 0620 CURSOR 1,11 0630 PRINT " " 0640 PRINT " " 0650 CURSOR 1,11 0660 INPUT "DIT TR@K : ",X,Y 0670 IF X>13 OR X<1 OR Y>13 OR Y<1 THEN 0675 PRINT "UDENFOR BANEN" 0680 FOR DCOUNT=1 TO 300 0690 NEXT DCOUNT 0710 GO TO 0620 0720 ELSE 0730 IF A(X+1,Y+1)=0 THEN 0740 A(X+1,Y+1)=2 0750 ELSE 0760 PRINT "IKKE ET TOMT FELT, PR0V IGEN" 0770 FOR DCOUNT=1 TO 300 0780 NEXT DCOUNT 0790 GO TO 0620 0800 ENDIF 0810 ENDIF 0820 IF T=0 THEN 0830 IF ST$<>"N" THEN 0840 EX=X+1;EY=Y+1 0850 ENDIF 0860 B=X+1;C=Y+1 0870 ELSE 0880 B=X+1;C=Y+1 0890 ENDIF 0900 IF F=1 THEN GO TO 0930 0910 CURSOR 50+2*X,19-Y 0920 PRINT "o" 0930 T=T+1 0940 RESTORE 0950 FOR RETN=1 TO 4 0960 READ U,W 0970 I1,I2=0 0980 REPEAT 0990 I1=I1+1 1000 X=B+U*I1;Y=C+W*I1 1010 UNTIL A(X,Y)<>2 1020 IF A(X,Y)=0 AND H(X,Y)=0 THEN 1030 H(X,Y)=1;M=M+1 1040 V(M)=X;Z(M)=Y 1050 ENDIF 1060 REPEAT 1070 I2=I2+1 1080 X=B-U*I2;Y=C-W*I2 1090 UNTIL A(X,Y)<>2 1100 IF A(X,Y)=0 AND H(X,Y)=0 THEN 1110 M=M+1;H(X,Y)=1 1120 V(M)=X;Z(M)=Y 1130 ENDIF 1140 IF I1+I2>5 THEN GO TO 2640 1150 NEXT RETN 1160 RESTORE 1170 FOR RETN=1 TO 4 1180 READ U,W 1190 I1,I2=0 1200 REPEAT 1210 I1=I1+1 1220 X=EX+U*I1;Y=EY+W*I1 1230 UNTIL A(X,Y)<>1 1240 IF A(X,Y)=0 AND H(X,Y)=0 THEN 1250 H(X,Y)=1;M=M+1 1260 V(M)=X;Z(M)=Y 1270 ENDIF 1280 REPEAT 1290 I2=I2+1 1300 X=EX-U*I2;Y=EY-W*I2 1310 UNTIL A(X,Y)<>1 1320 IF A(X,Y)=0 AND H(X,Y)=0 THEN 1330 M=M+1;H(X,Y)=1 1340 V(M)=X;Z(M)=Y 1350 ENDIF 1360 NEXT RETN 1370 O,MAX=1;PL=0 1380 IF A(V(O),Z(O))=0 THEN 1390 RESTORE 1400 L1,K1,P=0 1410 FOR RETN=1 TO 4 1420 READ U,W 1430 R(1),R(2),S(1),S(2)=0 1440 IF A(V(O)+U,Z(O)+W)=-1 THEN 1450 S(1),S(2)=1 1460 GO TO 1700 1470 ENDIF 1480 D=A(V(O)+U,Z(O)+W) 1490 IF D=0 THEN 1500 IF A(V(O)+2*U,Z(O)+2*W)<1 THEN GO TO 1700 1510 D=A(V(O)+2*U,Z(O)+2*W) 1520 ELSE 1530 R(D),S(D)=1 1540 ENDIF 1550 N=1 1560 N=N+1 1570 IF N>4 THEN GO TO 1700 1580 NN=A(V(O)+N*U,Z(O)+N*W) 1590 IF NN=0 THEN 1600 IF A(V(O)+(N+1)*U,Z(O)+(N+1)*W)=D AND N<>4 THEN GO TO 1560 1610 GO TO 1700 1620 ENDIF 1630 IF NN=D THEN 1640 R(D)=R(D)+INT(2**(N-1)+.1) 1650 ELSE 1660 S(3-D)=S(3-D)+1 1670 GO TO 1700 1680 ENDIF 1690 GO TO 1560 1700 IF A(V(O)-U,Z(O)-W)=-1 THEN 1710 S(1)=S(1)+1;S(2)=S(2)+1 1720 GO TO 1960 1730 ENDIF 1740 IF A(V(O)-U,Z(O)-W)=0 THEN 1750 IF A(V(O)-2*U,Z(O)-2*W)<1 THEN GO TO 1960 1760 E=A(V(O)-2*U,Z(O)-2*W) 1770 ELSE 1780 E=A(V(O)-U,Z(O)-W) 1790 R(E)=R(E)+16;S(E)=S(E)+1 1800 ENDIF 1810 IF E<>D THEN EXEC PT 1820 N=3 1830 N=N+1 1840 IF N>6 THEN GO TO 1950 1850 NN=A(V(O)+(2-N)*U,Z(O)+(2-N)*W) 1860 IF NN=0 THEN 1870 IF A(V(O)+(1-N)*U,Z(O)+(1-N)*W)=E AND N<>6 THEN GO TO 1830 1880 GO TO 1950 1890 ENDIF 1900 IF NN=E THEN 1910 R(E)=R(E)+INT(2**(N+1)+.1) 1920 GO TO 1830 1930 ENDIF 1940 S(3-E)=S(3-E)+1 1950 D=E 1960 EXEC PT 1970 NEXT RETN 1980 PROC PT 1990 IF D=1 THEN 2000 P=P+K(R(1)+1,S(2)+1) 2010 K1=K1+K(R(1)+1,S(2)+1) MOD 5 2020 ELSE 2030 IF D=2 THEN 2040 P=P+L(R(2)+1,S(1)+1) 2050 L1=L1+L(R(2)+1,S(1)+1) MOD 5 2060 ENDIF 2070 ENDIF 2080 ENDPROC 2090 IF P=>100000 THEN 2100 CURSOR 48+2*V(O),20-Z(O) 2110 PRINT "x" 2120 PRINT CHR(7) 2130 CURSOR 1,9 2140 PRINT " " 2150 CURSOR 1,9 2160 PRINT "MIT TR@K: ";V(O)-1;":";Z(O)-1 2170 CURSOR 1,12 2180 PRINT CHR(7) 2190 PRINT "JEG VANDT" 2200 PRINT "TAK FOR SPILLET" 2210 END 2220 ENDIF 2230 CASE L1 OF 2240 WHEN 5,6,7 2250 P=P+6000 2260 WHEN 4 2270 P=P+2000 2280 ENDCASE 2290 CASE K1 OF 2300 WHEN 5,6,7 2310 P=P+8000 2320 WHEN 4 2330 P=P+3000 2340 ENDCASE 2350 IF P>1000*NI THEN 2360 PL=PL+1 2370 V(PL)=V(O);Z(PL)=Z(O) 2380 ELSE 2390 H(V(O),Z(O))=0 2400 ENDIF 2410 IF P>PM-LIM AND P<PM+LIM THEN 2420 MX(MAX)=V(O);MY(MAX)=Z(O) 2430 MAX=MAX+1 2440 ELSE 2450 IF P>PM+LIM THEN 2460 PM=P;MX(1)=V(O);MY(1)=Z(O);MAX=2 2470 ENDIF 2480 ENDIF 2490 ENDIF 2500 O=O+1 2510 IF M=>O THEN GO TO 1380 2520 RN=INT(RND(5)*10000) MOD (MAX-1)+1 2530 A(MX(RN),MY(RN))=1 2540 PRINT CHR(7) 2550 IF F=1 THEN GO TO 2580 2560 CURSOR 48+2*MX(RN),20-MY(RN) 2570 PRINT "x" 2580 CURSOR 1,9 2590 PRINT " " 2600 CURSOR 1,9 2610 PRINT "MIT TR@K: ";MX(RN)-1;":";MY(RN)-1 2620 EX=MX(RN);EY=MY(RN);PM=0;M=PL 2630 GO TO 0620 2640 PRINT "DU VANDT" 2650 GO TO 2200 2660 DATA 1,0,1,1,0,1,-1,1 2670 REM BY FLEMMING NIELSEN AND PALLE CHRISTENSEN