File TRIMUL.BA (BASIC source file)

Directory of image this file is from
This file as a plain text file

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



Feel free to contact me, David Gesswein djg@pdp8online.com with any questions, comments on the web site, or if you have related equipment, documentation, software etc. you are willing to part with.  I am interested in anything PDP-8 related, computers, peripherals used with them, DEC or third party, or documentation. 

PDP-8 Home Page   PDP-8 Site Map   PDP-8 Site Search