home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
64'er
/
64ER_CD.iso
/
84xx
/
8412.d64
/
3d-viergewinnt
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
1995-03-30
|
7KB
|
313 lines
10 REM *******************
11 REM * *
12 REM * 3D-VIER-GEWINNT *
13 REM * *
14 REM * (C) 1984 BY *
15 REM * *
16 REM * UWE WEISS *
17 REM * LOESKENWEG 60 *
18 REM * 4300 ESSEN 1 *
19 REM * *
20 REM * TEL 0201/326366 *
21 REM * *
22 REM *******************
23 :
24 :
25 :
26 :
27 :
28 :
29 :
30 :
100 GOSUB1500:REM INITIALISIERUNG
110 ZG=0:PL=3:GW=0
120 PL=5-PL:ZG=ZG+1
130 IF(GW<>0)OR(ZG>64)THEN3500:REM SPIELENDE
140 PRINTCO$(PL):GOSUB3100
141 H=(20-LEN(SP$(PL)))/2:X0=1:Y0=24
145 X$=LEFT$(BL$,H)+SP$(PL)+LEFT$(BL$,10):GOSUB3010:PRINTCHR$(19)
150 IFSP$(PL)="C 64"THEN500
160 REM *** SPIELERZUG ***
170 X=0:Y=0:A0=1575
180 A1=1575+2*X-80*Y
200 POKEA0,32:A0=A1
210 POKEA1,160:POKEA1+54272,CO(PL)
220 J=PEEK(56320)AND31
230 GETK$:K=ASC(K$+CHR$(0))
235 IF(K=0)AND(J=31)THEN220
240 IFK=133THEN350:REM ZUGVORSCHLAG
250 IFK=134THEN360:REM SEITENWECHSEL
260 IF(K=13)OR((JAND16)=0)THEN320
270 IF(K=145)OR((JAND1)=0)THENIFY<3THENY=Y+1
280 IF(K=17)OR((JAND2)=0)THENIFY>0THENY=Y-1
290 IF(K=157)OR((JAND4)=0)THENIFX>0THENX=X-1
300 IF(K=29)OR((JAND8)=0)THENIFX<3THENX=X+1
310 GOTO180
320 IFBE(X,Y)=4THEN220
330 GOSUB2500:REM ZUG AUSFUEHREN
340 GOTO120
350 POKEA1,32:GOSUB2000:X=ZX:Y=ZY:GOTO180
360 SP$=SP$(2):SP$(2)=SP$(3):SP$(3)=SP$:GOTO140
500 REM *** COMPUTERZUG ***
510 GOSUB2000
520 X=ZX:Y=ZY
530 AD=1575+2*X-80*Y
540 POKEAD,160:POKEAD+54272,CO(PL)
550 GOSUB2500:POKEAD,32
560 GOTO120
1500 IFRU=1THEN1645
1505 RU=1
1510 DIMFE(3,3,3),BE(3,3),BW(3,3),W(3,3)
1511 DIMRX(3,3),RY(3,3),RZ(3,3),MX(15)
1512 DIMUX(3),UY(3),UZ(3),OX(3),OY(3),OZ(3)
1513 DIMX$(3),W$(3),SP$(3),CO$(3),CL$(3)
1514 DIMX(3),Y(3),Z(3),SS(3),CO(3)
1515 H0$=CHR$(18)+"[169]"
1516 H1$=CHR$(17)+CHR$(157)
1517 H2$=H1$+CHR$(157)+CHR$(157)
1518 H3$=CHR$(146)+"[169]"
1520 W$(0)=H0$+H1$+"[180]"+H1$+"[204][175]"+H3$
1525 W$(1)=H0$+H1$+" "+H1$+" "+H3$
1530 W$(2)=H0$+"[180] "+H2$+"[180][204][175]"+H2$+"[204][175]"+H3$
1535 W$(3)=H0$+"[180] "+H2$+" [204][175]"+H2$+" "+H3$
1536 X$(0)=W$(3)
1537 FORI=1TO3:X$(I)=W$(2):NEXT
1539 PRINTCHR$(147):POKE53280,0:POKE53281,12
1540 PRINTCHR$(19)CHR$(18)CHR$(144);
1545 BL$=" "
1550 PRINTLEFT$(BL$,12)"3D-VIER-GEWINNT"LEFT$(BL$,13)
1555 PRINT:PRINT:PRINT:PRINT" BITTE WAEHLEN SIE:"
1560 PRINT:PRINT" 1 = SCHWARZWEISSFERNSEHER"
1565 PRINT:PRINT" 2 = FARBFERNSEHER"
1570 GETK$:K=VAL(K$)
1575 ONKGOTO1585,1605
1580 GOTO1570
1585 CO$(2)=CHR$(5):CO$(3)=CHR$(144)
1590 CL$(2)=CHR$(155):CL$(3)=CHR$(151)
1595 CO(2)=1:CO(3)=0
1600 GOTO1620
1605 CO$(2)=CHR$(28):CO$(3)=CHR$(31)
1610 CL$(2)=CHR$(150):CL$(3)=CHR$(154)
1615 CO(2)=2:CO(3)=6
1620 SP$(2)="C 64":SP$(3)="C 64"
1625 S=54272:POKES+23,113:POKES+24,31
1630 POKES+2,0:POKES+3,8:POKES+4,0
1635 POKES+5,21:POKES+6,240
1640 GOTO1670
1645 SP$=SP$(2):SP$(2)=SP$(3):SP$(3)=SP$
1650 FORI=0TO3:FORJ=0TO3
1655 BE(I,J)=0
1660 FORK=1TO3:FE(I,J,K)=0
1665 NEXTK,J,I
1670 PRINTCHR$(147)CHR$(18)CHR$(144);
1675 PRINT"F1:ZUGVORSCHLAG";LEFT$(BL$,9);"F3:SEITENWECHSEL"
1680 PRINTCHR$(5)
1685 FORI=1TO4
1690 PRINT:PRINT:PRINT
1695 PRINT" [207][208] [207][208] [207][208] [207][208]"
1700 PRINT" [204][186] [204][186] [204][186] [204][186]":NEXT
1705 FORI=2TO3
1710 PRINTCHR$(19)
1715 PRINTCO$(I)"SPIELER";I-1;" "SP$(I);BL$
1720 PRINTCHR$(145)CHR$(145);SPC(9)" ";
1725 INPUTSP$(I)
1730 SS(I)=1
1735 IFSP$(I)<>"C 64"THEN1755
1740 PRINT"SPIELSTAERKE 1/2"
1745 GETK$:IFK$="2"THENSS(I)=2:GOTO1755
1750 IFK$<>"1"THEN1745
1755 PRINTCHR$(19)
1760 PRINTLEFT$(BL$,30):PRINTLEFT$(BL$,30)
1765 NEXT
1770 FORI=0TO3:FORJ=0TO3
1775 RX(I,J)=1/16:RY(I,J)=1/16:RZ(I,J)=1/8:FE(I,J,0)=1
1780 NEXT:NEXT
1785 FORI=0TO3
1790 RX(I,0)=1:RY(I,0)=1
1795 UX(I)=1/8:UY(I)=1/8:UZ(I)=1/16
1800 OX(I)=1/8:OY(I)=1/8:OZ(I)=1/16
1805 NEXT
1810 UZ(0)=1:OZ(0)=1
1815 D1=1/8:D2=D1:D3=D1:D4=D1
1820 RETURN
2000 XX=0:GOSUB2200
2010 IFSS(PL)=1THEN2100
2020 FORI=0TO3:FORJ=0TO3
2030 W(I,J)=BW(I,J)
2040 NEXT:NEXT
2050 XX=1:GOSUB2200
2060 FORI=0TO3:FORJ=0TO3
2070 BW=BW(I,J):BW(I,J)=W(I,J)
2080 IF(W(I,J)<64)AND(BW>0)THENBW(I,J)=BW(I,J)-BW/2
2090 NEXT:NEXT
2100 MAX=-5000:H=0
2110 FORI=0TO3:FORJ=0TO3
2120 BW=BW(I,J)
2130 IFBW=MAXTHENMX(H)=10*I+J:H=H+1
2140 IFBW>MAXTHENH=1:MX(0)=10*I+J:MAX=BW
2150 NEXT:NEXT
2160 ZZ=INT(RND(0)*(H))
2170 ZX=INT(MX(ZZ)/10):ZY=MX(ZZ)-ZX*10
2180 RETURN
2200 FORY=0TO3:FORX=0TO3:BW=0
2210 Z=BE(X,Y)+XX:AD=1575+2*X-80*Y:POKEAD,160:POKEAD+54272,CO(PL)
2220 IFZ>3THENBW=-10000:GOTO2350
2230 BW=BW+RX(Y,Z)+RY(X,Z)+RZ(X,Y)
2240 IFY=ZTHENBW=BW+UX(X)
2250 IFX=ZTHENBW=BW+UY(Y)
2260 IFX=YTHENBW=BW+UZ(Z)
2270 IFY=3-ZTHENBW=BW+OX(X)
2280 IFX=3-ZTHENBW=BW+OY(Y)
2290 IFX=3-YTHENBW=BW+OZ(Z)
2300 IF(X=Y)AND(X=Z)THENBW=BW+D1
2310 IF(X=3-Y)AND(X=Z)THENBW=BW+D2
2320 IF(X=Y)AND(X=3-Z)THENBW=BW+D3
2330 IF(Y=Z)AND(X=3-Z)THENBW=BW+D4
2340 H0=BW*1E4-INT(BW*1E4)
2345 IFBW>64THENBW=64
2346 IFABS(H0-PL/10)<0.05THENBW=65
2350 BW(X,Y)=BW
2360 POKEAD,32
2370 NEXT:NEXT
2380 RETURN
2500 Z=BE(X,Y):BE(X,Y)=Z+1
2505 F=1114:D=3:GOSUB3800
2510 FE(X,Y,Z)=PL
2520 IFZ<>3THENFE(X,Y,Z+1)=1
2530 PRINTCO$(PL):X$=X$(Z):GOSUB3000
2540 H=1:Q=0:FORI=0TO3
2541 H9=FE(I,Y,Z):X(I)=I:Y(I)=Y:Z(I)=Z
2542 GOSUB2800:NEXT
2543 GOSUB2900:RX(Y,Z)=H
2550 H=1:Q=0:FORI=0TO3
2551 H9=FE(X,I,Z):X(I)=X:Y(I)=I:Z(I)=Z
2552 GOSUB2800:NEXT
2553 GOSUB2900:RY(X,Z)=H
2560 H=1:Q=0:FORI=0TO3
2561 H9=FE(X,Y,I):X(I)=X:Y(I)=Y:Z(I)=I
2562 GOSUB2800:NEXT
2563 GOSUB2900:RZ(X,Y)=H
2570 IFY<>ZTHEN2580
2571 H=1:Q=0:FORI=0TO3
2572 H9=FE(X,I,I):X(I)=X:Y(I)=I:Z(I)=I
2573 GOSUB2800:NEXT
2574 GOSUB2900:UX(X)=H
2580 IFX<>ZTHEN2590
2581 H=1:Q=0:FORI=0TO3
2582 H9=FE(I,Y,I):X(I)=I:Y(I)=Y:Z(I)=I
2583 GOSUB2800:NEXT
2584 GOSUB2900:UY(Y)=H
2590 IFX<>YTHEN2600
2591 H=1:Q=0:FORI=0TO3
2592 H9=FE(I,I,Z):X(I)=I:Y(I)=I:Z(I)=Z
2593 GOSUB2800:NEXT
2594 GOSUB2900:UZ(Z)=H
2600 IFY<>3-ZTHEN2610
2601 H=1:Q=0:FORI=0TO3
2602 H9=FE(X,I,3-I):X(I)=X:Y(I)=I:Z(I)=3-I
2603 GOSUB2800:NEXT
2604 GOSUB2900:OX(X)=H
2610 IFX<>3-ZTHEN2620
2611 H=1:Q=0:FORI=0TO3
2612 H9=FE(I,Y,3-I):X(I)=I:Y(I)=Y:Z(I)=3-I
2613 GOSUB2800:NEXT
2614 GOSUB2900:OY(Y)=H
2620 IFX<>3-YTHEN2630
2621 H=1:Q=0:FORI=0TO3
2622 H9=FE(I,3-I,Z):X(I)=I:Y(I)=3-I:Z(I)=Z
2623 GOSUB2800:NEXT
2624 GOSUB2900:OZ(Z)=H
2630 IF(X<>Y)OR(X<>Z)THEN2640
2631 H=1:Q=0:FORI=0TO3
2632 H9=FE(I,I,I):X(I)=I:Y(I)=I:Z(I)=I
2633 GOSUB2800:NEXT
2634 GOSUB2900:D1=H
2640 IF(X<>3-Y)OR(X<>Z)THEN2650
2641 H=1:Q=0:FORI=0TO3
2642 H9=FE(I,3-I,I):X(I)=I:Y(I)=3-I:Z(I)=I
2643 GOSUB2800:NEXT
2644 GOSUB2900:D2=H
2650 IF(X<>Y)OR(X<>3-Z)THEN2660
2651 H=1:Q=0:FORI=0TO3
2652 H9=FE(I,I,3-I):X(I)=I:Y(I)=I:Z(I)=3-I
2653 GOSUB2800:NEXT
2654 GOSUB2900:D3=H
2660 IF(Y<>Z)OR(X<>3-Z)THEN2670
2661 H=1:Q=0:FORI=0TO3
2662 H9=FE(3-I,I,I):X(I)=3-I:Y(I)=I:Z(I)=I
2663 GOSUB2800:NEXT
2664 GOSUB2900:D4=H
2670 Z=Z+1:IFZ=4THEN2700
2680 RX(Y,Z)=RX(Y,Z)*2
2681 RY(X,Z)=RY(X,Z)*2
2682 IFY=ZTHENUX(X)=UX(X)*2
2683 IFX=ZTHENUY(Y)=UY(Y)*2
2684 IFX=YTHENUZ(Z)=UZ(Z)*2
2685 IFY=3-ZTHENOX(X)=OX(X)*2
2686 IFX=3-ZTHENOY(Y)=OY(Y)*2
2687 IFX=3-YTHENOZ(Z)=OZ(Z)*2
2688 IF(X=Y)AND(X=Z)THEND1=2*D1
2689 IF(X=3-Y)AND(X=Z)THEND2=2*D2
2690 IF(X=Y)AND(X=3-Z)THEND3=2*D3
2691 IF(Y=Z)AND(X=3-Z)THEND4=2*D4
2700 RETURN
2800 IFH9=0THENH=H/2:RETURN
2810 IFH9=1THENRETURN
2820 IF(Q<2)OR(H9=Q)THENH=H*4:Q=H9:RETURN
2830 H=0:RETURN
2900 IFH=64THENH=H+PL/1E5
2910 IFH<>256THENRETURN
2920 FORJ=0TO3:GX(J)=X(J):GY(J)=Y(J):GZ(J)=Z(J):NEXT
2930 GW=PL:RETURN
3000 X0=6*X+Z+1:Y0=20-5*Y-Z
3010 POKE211,X0:POKE214,Y0:SYS58732
3020 PRINTX$;:RETURN
3100 POKE214,6:POKE211,30:SYS58732
3110 PRINT"[176][192][178][192][178][192][178][192][174]"
3120 GOSUB3180:PRINT"[221] [221] [221] [221] [221]"
3130 FORI=1TO3
3140 GOSUB3180:PRINT"[171][192][219][192][219][192][219][192][179]"
3150 GOSUB3180:PRINT"[221] [221] [221] [221] [221]":NEXT
3160 GOSUB3180:PRINT"[173][192][177][192][177][192][177][192][189]"
3170 RETURN
3180 POKE211,30:SYS58732:RETURN
3500 X$=CHR$(144)+CHR$(18)
3510 IFGW<>0THEN3540
3520 X$=X$+LEFT$(BL$,13)+"UNENTSCHIEDEN!"+LEFT$(BL$,13)
3530 GOTO3580
3540 H$="SIEGER: "+SP$(GW):H=LEN(H$)
3550 IFH>40THENH$=LEFT$(H$,40):H=40
3560 H=(40-H)/2
3570 X$=X$+LEFT$(BL$,H)+H$+LEFT$(BL$,H+.5)
3580 PRINTCHR$(19);X$:PRINTCHR$(19)
3590 F=4455:D=7:GOSUB3800
3591 F=5001:D=7:GOSUB3800
3592 F=5613:D=7:GOSUB3800
3593 F=5947:D=20:GOSUB3800
3594 F=4455:D=20:GOSUB3800
3595 F=5947:D=20:GOSUB3800
3596 F=4455:D=20:GOSUB3800
3597 F=5947:D=50:GOSUB3800
3600 IFGW<>0THEN3620
3610 POKE198,0:WAIT198,1:POKE198,0:GOTO100
3620 PRINTCO$(GW):GOSUB3750
3630 T=TI
3640 GETK$:IFK$<>""THEN100
3650 IFTI-T<30THEN3640
3660 PRINTCL$(GW):GOSUB3750
3670 T=TI
3680 GETK$:IFK$<>""THEN100
3690 IFTI-T<30THEN3680
3700 GOTO3620
3750 FORI=0TO3
3760 X=GX(I):Y=GY(I):Z=GZ(I):H=0
3770 IFZ=0THENH=H+1
3780 IFZ+1=BE(X,Y)THENH=H+2
3790 X$=W$(H):GOSUB3000
3795 NEXT:RETURN
3800 F0=INT(F/256):POKE54272,F-256*F0
3810 POKE54273,F0:POKE54276,65
3820 T=TI
3830 IFTI-T<DTHEN3830
3840 POKE54276,0:RETURN