1 REM ------------------------------ TRIMUL. B33 BU3 2 REM **************** ERSTELLUNGSDATUM 19-FEB-76 SPL0000012 3 REM ***** VERSION VOM 19-MAR-76 ***** 5 RANDOMIZE 10 REM ***** DAS SPIEL TRIMULA ***** 20 PRINT "*** TRIMULA ***" \ PRINT \ PRINT 25 GOSUB 1000 \ REM *ANFANGSWERTE EINMALIG SETZEN* 30 PRINT "*** AUSGANGSSITUATION ***" \ PRINT 35 GOSUB 4000 \ REM *SPIELSTAND* 37 PRINT "IHR ZUG: * ----- COMPUTERZUG: -" \ PRINT \ PRINT 50 PRINT "WOLLEN SIE BEGINNEN? JA/NEIN", \ INPUT A$ \ PRINT \ PRINT 60 IF A$="NEIN" THEN B=2 \ A1=2 70 ON B GOSUB 2000,3000 \ REM *B=1: MENSCH, B=2: COMPUTER* 80 IF B=2 THEN GOSUB 4000 \ REM *SPIELSTAND AUSDRUCKEN* 90 IF F=27 THEN 800 100 B=(B+1)-(B-1)*B \ GO TO 70 800 IF B=1 THEN GOSUB 4000 \ REM *SPIELSTAND* 810 GOSUB 5000 \ REM *GEWINN-VERLUST* 900 PRINT "NEUES SPIEL? JA/NEIN", \ INPUT A$ 910 IF A$="JA" THEN PRINT \ PRINT \ GOSUB 1500 \ GO TO 30 999 GO TO 9999 1000 REM *** ANFANGSWERTE EINMALIG *** 1010 DATA 1822,526,2734,270,62,142,4462,78,8414,30,398,46,590,16382 1015 DATA 1,27,3,25,7,21,9,19,11,5,13,17,23,15,2,26,4,24,6,22,8,20,10,18,12,16,14 1020 DIM A(27),B(14),M(1),P(27),M1(1) 1030 FOR I=1 TO 14 \ READ B(I) \ NEXT I \ FOR I=1 TO 27 \ READ P(I) \ NEXT I 1500 REM *** ANFANGSWERTE *** 1510 F=0 \ B=1 \ M(0)=0 \ M(1)=0 \ Z0=0 \ P(0)=1 \ M=0 1520 FOR I=1 TO 27 \ A(I)=0 \ NEXT I 1530 S=INT(3*RND(0))+1 1540 PRINT "STRATEGIE"S \ PRINT \ PRINT 1999 RETURN 2000 REM *** MENSCH *** 2010 PRINT "IHR ZUG", \ INPUT Z \ PRINT 2015 IF Z>0 THEN IF Z<28 THEN IF A(Z)=0 THEN 2025 2020 GO TO 2010 2025 IF M(0)=0 THEN IF M(1)=0 THEN IF Z=14 THEN 2010 2050 IF F>3 THEN GOSUB 6000 \ REM *MUEHLEN BESTIMMEN* 2060 A(Z)=1 \ F=F+1 \ Z0=Z 2999 RETURN 3000 REM *** COMPUTER *** 3010 GOSUB 7000 \ REM *WAHL COMPUTER* 3030 PRINT "COMPUTERZUG:",Z \ PRINT 3040 IF F>3 THEN GOSUB 6000 \ REM *MUEHLEN BESTIMMEN* 3050 A(Z)=2 \ F=F+1 \ Z0=Z 3999 RETURN 4000 REM *** SPIELSTAND AUSDRUCKEN *** 4010 FOR I1=1 TO 7 STEP 3 \ FOR I2=0 TO 2 \ FOR I3=0 TO 2 4030 I=I1+I3+I2*9 4032 IF A(I)=0 THEN PRINT USING "-##",I; \ GO TO 4040 4035 IF A(I)=1 THEN PRINT " *"; \ GO TO 4040 4037 PRINT " -"; 4040 NEXT I3 \ PRINT , \ NEXT I2 \ PRINT \ NEXT I1 \ PRINT \ PRINT 4999 RETURN 5000 REM *** GEWINN - VERLUST *** 5010 PRINT "SIE HABEN"M(0)"MUEHLEN, DER COMPUTER HAT "M(1)"MUEHLEN" 5020 IF M(0)=M(1) THEN PRINT "*** UNENTSCHIEDEN ***" \ GO TO 5100 5030 IF M(0)>M(1) THEN PRINT "*** SIE HABEN GEWONNEN ***" \ GO TO 5100 5040 PRINT "*** SIE HABEN LEIDER VERLOREN ***" 5100 PRINT \ PRINT 5499 RETURN 6000 REM *** ANZAHL MUEHLEN BESTIMMEN *** 6010GOSUB 9000 6020 FOR I=13 TO 1 STEP -1 6030 GOSUB 9100 6040 IF M1(B-1)=2 THEN M(B-1)=M(B-1)+1 \ M=1 6050 NEXT I 6999 RETURN 7000 REM *** COMPUTER - WAHL *** 7010 ON S GOSUB 7500,7600,7700 7099 RETURN 7100 REM *** STRATEGIE 1 *** 7110 IF Z0=0 THEN GOSUB 7900 \ GO TO 7199 7120 IF A(14)=0 THEN IF M=1 THEN Z=14 \ GO TO 7199 7130 IF Z>14 THEN Z=28-Z \ GO TO 7150 7140 Z=Z+(14-Z)*2 7150 IF A(Z)<>0 THEN GOSUB 7900 7199 RETURN 7200 REM *** STRATEGIE 2 *** 7220 IF A(14)=0 THEN IF M=1 THEN Z=14 \ GO TO 7299 7230 FOR I=P(0) TO 26 7240 IF A(P(I))=0 THEN P(0)=I+1 \ Z=P(I) \ GO TO 7299 7250 NEXT I 7299 RETURN 7300 REM *** STRATEGIE 3 *** 7310 IF F<3 THEN GOSUB 7900 \ GO TO 7399 7330 GOSUB 7350 \ IF Z1=0 THEN GOSUB 7900 \ GO TO 7399 7340 Z=1 \ GO TO 7399 7350 IF A(14)=0 THEN IF M=1 THEN Z1=14 \ Z2=14 \ GO TO 7399 7352 I4=B-(B-1)*B \ J1=0 \ J3=0 \ Z1=0 \ Z2=0 \ R=0 \ R3=0 7355 FOR I3=1 TO 27 \ Z=P(I3) 7360 IF A(Z)<>0 THEN 7390 7365 GOSUB 9000 \ J2=0 \ J4=0 7370 FOR I=13 TO 1 STEP -1 7375 GOSUB 9100 7376 IF M1(I4)=2 THEN J2=J2+1 \ REM *FREMDE MUEHLEN* 7377 IF M1(B-)=2 THEN J4=J4+1 \ REM *EIGENE MUEHLEN* 7378 NEXT I 7379 IF Z=14 THEN 7390 7380 IF J4<>0 THEN 7385 7381 IF J2=0 THEN IF R<>0 THEN 7390 7382 IF J2=0 THEN R=Z \ GO TO 7390 7383 IF J2>J1 THEN R=Z \ R3=1 \ GO TO 7386 7384 IF R3=0 THEN R=Z \ R3=1 \ GO TO 7386 7385 IF J2<>0 THEN IF J4<>0 THEN IF J2>=J1 THEN IF J4>=J3 THEN Z1=Z \ Z2=Z 7386 IF J2>J1 THEN J1=J2 \ Z1=Z \ REM *FREMDE MUEHLEN* 7387 IF J4>J3 THEN J3=J4 \ Z2=Z \ REM *EIGENE MUEHLEN* 7390 NEXT I3 7399 RETURN 7400 REM *** STRATEGIE 4 *** 7410 IF F<3 THEN GOSUB 7900 \ GO TO 7499 7430 GOSUB 7350 \ IF Z2=0 THEN GOSUB 7900 \ GO TO 7499 7440 Z=Z2 \ GO TO 7499 7499 RETURN 7500 REM *** STRATEGIE 5 *** 7510 IF F<3 THEN GOSUB 7200 \ GO TO 7599 7520 GOSUB 7350 7530 IF M<>0 THEN 7560 7540 Z=R \ IF Z=0 THEN Z=Z2 7550 GO TO 7599 7560 IF Z1=0 THEN IF Z2=0 THEN Z=R \ GO TO 7599 7570 IF J3>J1 THEN Z=Z2 \ GO TO 7599 7580 Z=Z1 7599 RETURN 7600 REM *** STRATEGIE 6 *** 7610 IF P(0)>8 THEN 7640 7620 GOSUB 7200 \ IF I>=9 THEN P(0)=9 \ GO TO 7640 7630 GO TO 7699 7640 GOSUB 7500 7699 RETURN 7700 REM *** STRATEGIE 7 *** 7710 IF P(0)>8 THEN 7735 7720 GOSUB 7200 \ IF I>=9 THEN P(0)=9 \ GO TO 7735 7730 GO TO 7799 7735 IF M=1 THEN IF A(14)=0 THEN Z=14 \ GO TO 7799 7740 GOSUB 7352 7742 IF M=1 THEN 7750 7744 IF J3>=J2 THEN Z=Z2 \ GO TO 7799 7746 Z=R \ IF R=0 THEN Z=Z2 7747 GO TO 7799 7750 IF Z1=0 THEN IF Z2=0 THEN Z=R \ GO TO 7799 7760 IF J3>=J1 THEN Z=Z2 \ GO TO 7799 7770 Z=Z1 7799 RETURN 7800 REM *** STRATEGIE 8 *** 7810 IF M=1 THEN 7840 7820 IF Z0=0 THEN GOSUB 7200 \ GO TO 7899 7830GOSUB 7130 \ GO TO 7899 7840 GOSUB 7500 7899 RETURN 7900 REM *** ZUFALL *** 7910 Z=INT(27*RND(0))+1 7920 IF A(Z)<>0 THEN 7910 7930 IF Z=14 THEN IF M=0 THEN 7910 7999 RETURN 9000 REM *** INTERNE UNTERPROGRAMME *** 9010 REM *** K1 BESTIMMEN *** 9020 IF Z<15 THEN K1=B(Z) \ GO TO 9099 9030 K1=Z-(Z-14)*2 \ K1=B(K1) 9099 RETURN 9100 REM *** ZUTREFFENDE MUEHLEN AUF ANZAHL ELEMENTE B PRUEFEN *** 9110 K2=K1 \ K2=K2/2^I \ M1(0)=0 \ M1(1)=0 9120 IF INT(K2)=0 THEN 9199 9130 K1=K1-2^I 9140 FOR J=0 TO 2 9150 ON I GOSUB 9601,9602,9603,9604,9605,9606,9607,9608,9609,9610,9611,9612,9613 9160 IF A(I2)=0 THEN 9180 9170 M1(A(I2)-1)=M1(A(I2)-1)+1 9180 NEXT J 9199 RETURN 9500 REM *** ELEMENTE DER MUEHLEN BESTIMMEN *** 9510 DEF FNA(X)=(INT((X-1)/3))*3 9520 DEF FNB(X)=(INT((X-1)/9))*9 9530 DEF FNC(X)=X-FNB(X) 9601 I2=FNA(Z)+1+J \ RETURN 9602 I2=FNB(Z)+Z-FNA(Z)+3*J \ RETURN 9603 I2=FNC(Z)+9*J \ RETURN 9604 I2=FNB(Z)+1+4*J \ RETURN 9605 I2=FNB(Z)+3+2*J \ RETURN 9606 I2=FNC(Z)+FNB(Z)/3+6*J \ RETURN 9607 I2=FNC(Z)+FNB(Z)/9+8*J \ RETURN 9608 I2=FNC(Z)-FNB(Z)/9+10*J \ RETURN 9609 I2=FNC(Z)-FNB(Z)/3+12*J \ RETURN 9610 I2=FNC(Z)-FNA(Z)/3+13*J \ RETURN 9611 I2=FNC(Z)-FNA(Z)/6+11*J \ RETURN 9612 I2=FNC(Z)+2*(FNB(Z)/9)+7*J \ RETURN 9613 I2=FNC(Z)+4*(FNB(Z)/9)+5*J \ RETURN 9999 END