DataMuseum.dk

Presents historical artifacts from the history of:

MIKADOS

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about MIKADOS

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦cb58b44f3⟧

    Length: 7584 (0x1da0)
    Notes: Mikados TextFile, Mikados_K
    Names: »VSKAK«

Derivation

└─⟦0ca3cf8fa⟧ Bits:30004600 DEMO1 - COMAL demoprogram
    └─⟦this⟧ »VSKAK« 

Text

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