|
|
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 - metrics - 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