home *** CD-ROM | disk | FTP | other *** search
/ 64'er / 64ER_CD.iso / 84xx / 8412.d64 / 3d-viergewinnt (.txt) < prev    next >
Commodore BASIC  |  1995-03-30  |  7KB  |  313 lines

  1. 10 REM        *******************
  2. 11 REM        *                 *
  3. 12 REM        * 3D-VIER-GEWINNT *
  4. 13 REM        *                 *
  5. 14 REM        *   (C) 1984 BY   *
  6. 15 REM        *                 *
  7. 16 REM        *    UWE WEISS    *
  8. 17 REM        *  LOESKENWEG 60  *
  9. 18 REM        *  4300  ESSEN 1  *
  10. 19 REM        *                 *
  11. 20 REM        * TEL 0201/326366 *
  12. 21 REM        *                 *
  13. 22 REM        *******************
  14. 23 :
  15. 24 :
  16. 25 :
  17. 26 :
  18. 27 :
  19. 28 :
  20. 29 :
  21. 30 :
  22. 100 GOSUB1500:REM INITIALISIERUNG
  23. 110 ZG=0:PL=3:GW=0
  24. 120 PL=5-PL:ZG=ZG+1
  25. 130 IF(GW<>0)OR(ZG>64)THEN3500:REM SPIELENDE
  26. 140 PRINTCO$(PL):GOSUB3100
  27. 141 H=(20-LEN(SP$(PL)))/2:X0=1:Y0=24
  28. 145 X$=LEFT$(BL$,H)+SP$(PL)+LEFT$(BL$,10):GOSUB3010:PRINTCHR$(19)
  29. 150 IFSP$(PL)="C 64"THEN500
  30. 160 REM *** SPIELERZUG ***
  31. 170 X=0:Y=0:A0=1575
  32. 180 A1=1575+2*X-80*Y
  33. 200 POKEA0,32:A0=A1
  34. 210 POKEA1,160:POKEA1+54272,CO(PL)
  35. 220 J=PEEK(56320)AND31
  36. 230 GETK$:K=ASC(K$+CHR$(0))
  37. 235 IF(K=0)AND(J=31)THEN220
  38. 240 IFK=133THEN350:REM ZUGVORSCHLAG
  39. 250 IFK=134THEN360:REM SEITENWECHSEL
  40. 260 IF(K=13)OR((JAND16)=0)THEN320
  41. 270 IF(K=145)OR((JAND1)=0)THENIFY<3THENY=Y+1
  42. 280 IF(K=17)OR((JAND2)=0)THENIFY>0THENY=Y-1
  43. 290 IF(K=157)OR((JAND4)=0)THENIFX>0THENX=X-1
  44. 300 IF(K=29)OR((JAND8)=0)THENIFX<3THENX=X+1
  45. 310 GOTO180
  46. 320 IFBE(X,Y)=4THEN220
  47. 330 GOSUB2500:REM ZUG AUSFUEHREN
  48. 340 GOTO120
  49. 350 POKEA1,32:GOSUB2000:X=ZX:Y=ZY:GOTO180
  50. 360 SP$=SP$(2):SP$(2)=SP$(3):SP$(3)=SP$:GOTO140
  51. 500 REM *** COMPUTERZUG ***
  52. 510 GOSUB2000
  53. 520 X=ZX:Y=ZY
  54. 530 AD=1575+2*X-80*Y
  55. 540 POKEAD,160:POKEAD+54272,CO(PL)
  56. 550 GOSUB2500:POKEAD,32
  57. 560 GOTO120
  58. 1500 IFRU=1THEN1645
  59. 1505 RU=1
  60. 1510 DIMFE(3,3,3),BE(3,3),BW(3,3),W(3,3)
  61. 1511 DIMRX(3,3),RY(3,3),RZ(3,3),MX(15)
  62. 1512 DIMUX(3),UY(3),UZ(3),OX(3),OY(3),OZ(3)
  63. 1513 DIMX$(3),W$(3),SP$(3),CO$(3),CL$(3)
  64. 1514 DIMX(3),Y(3),Z(3),SS(3),CO(3)
  65. 1515 H0$=CHR$(18)+"[169]"
  66. 1516 H1$=CHR$(17)+CHR$(157)
  67. 1517 H2$=H1$+CHR$(157)+CHR$(157)
  68. 1518 H3$=CHR$(146)+"[169]"
  69. 1520 W$(0)=H0$+H1$+"[180]"+H1$+"[204][175]"+H3$
  70. 1525 W$(1)=H0$+H1$+" "+H1$+"  "+H3$
  71. 1530 W$(2)=H0$+"[180] "+H2$+"[180][204][175]"+H2$+"[204][175]"+H3$
  72. 1535 W$(3)=H0$+"[180] "+H2$+" [204][175]"+H2$+"  "+H3$
  73. 1536 X$(0)=W$(3)
  74. 1537 FORI=1TO3:X$(I)=W$(2):NEXT
  75. 1539 PRINTCHR$(147):POKE53280,0:POKE53281,12
  76. 1540 PRINTCHR$(19)CHR$(18)CHR$(144);
  77. 1545 BL$="                                        "
  78. 1550 PRINTLEFT$(BL$,12)"3D-VIER-GEWINNT"LEFT$(BL$,13)
  79. 1555 PRINT:PRINT:PRINT:PRINT" BITTE WAEHLEN SIE:"
  80. 1560 PRINT:PRINT" 1 = SCHWARZWEISSFERNSEHER"
  81. 1565 PRINT:PRINT" 2 = FARBFERNSEHER"
  82. 1570 GETK$:K=VAL(K$)
  83. 1575 ONKGOTO1585,1605
  84. 1580 GOTO1570
  85. 1585 CO$(2)=CHR$(5):CO$(3)=CHR$(144)
  86. 1590 CL$(2)=CHR$(155):CL$(3)=CHR$(151)
  87. 1595 CO(2)=1:CO(3)=0
  88. 1600 GOTO1620
  89. 1605 CO$(2)=CHR$(28):CO$(3)=CHR$(31)
  90. 1610 CL$(2)=CHR$(150):CL$(3)=CHR$(154)
  91. 1615 CO(2)=2:CO(3)=6
  92. 1620 SP$(2)="C 64":SP$(3)="C 64"
  93. 1625 S=54272:POKES+23,113:POKES+24,31
  94. 1630 POKES+2,0:POKES+3,8:POKES+4,0
  95. 1635 POKES+5,21:POKES+6,240
  96. 1640 GOTO1670
  97. 1645 SP$=SP$(2):SP$(2)=SP$(3):SP$(3)=SP$
  98. 1650 FORI=0TO3:FORJ=0TO3
  99. 1655 BE(I,J)=0
  100. 1660 FORK=1TO3:FE(I,J,K)=0
  101. 1665 NEXTK,J,I
  102. 1670 PRINTCHR$(147)CHR$(18)CHR$(144);
  103. 1675 PRINT"F1:ZUGVORSCHLAG";LEFT$(BL$,9);"F3:SEITENWECHSEL"
  104. 1680 PRINTCHR$(5)
  105. 1685 FORI=1TO4
  106. 1690 PRINT:PRINT:PRINT
  107. 1695 PRINT" [207][208]    [207][208]    [207][208]    [207][208]"
  108. 1700 PRINT" [204][186]    [204][186]    [204][186]    [204][186]":NEXT
  109. 1705 FORI=2TO3
  110. 1710 PRINTCHR$(19)
  111. 1715 PRINTCO$(I)"SPIELER";I-1;"  "SP$(I);BL$
  112. 1720 PRINTCHR$(145)CHR$(145);SPC(9)" ";
  113. 1725 INPUTSP$(I)
  114. 1730 SS(I)=1
  115. 1735 IFSP$(I)<>"C 64"THEN1755
  116. 1740 PRINT"SPIELSTAERKE 1/2"
  117. 1745 GETK$:IFK$="2"THENSS(I)=2:GOTO1755
  118. 1750 IFK$<>"1"THEN1745
  119. 1755 PRINTCHR$(19)
  120. 1760 PRINTLEFT$(BL$,30):PRINTLEFT$(BL$,30)
  121. 1765 NEXT
  122. 1770 FORI=0TO3:FORJ=0TO3
  123. 1775 RX(I,J)=1/16:RY(I,J)=1/16:RZ(I,J)=1/8:FE(I,J,0)=1
  124. 1780 NEXT:NEXT
  125. 1785 FORI=0TO3
  126. 1790 RX(I,0)=1:RY(I,0)=1
  127. 1795 UX(I)=1/8:UY(I)=1/8:UZ(I)=1/16
  128. 1800 OX(I)=1/8:OY(I)=1/8:OZ(I)=1/16
  129. 1805 NEXT
  130. 1810 UZ(0)=1:OZ(0)=1
  131. 1815 D1=1/8:D2=D1:D3=D1:D4=D1
  132. 1820 RETURN
  133. 2000 XX=0:GOSUB2200
  134. 2010 IFSS(PL)=1THEN2100
  135. 2020 FORI=0TO3:FORJ=0TO3
  136. 2030 W(I,J)=BW(I,J)
  137. 2040 NEXT:NEXT
  138. 2050 XX=1:GOSUB2200
  139. 2060 FORI=0TO3:FORJ=0TO3
  140. 2070 BW=BW(I,J):BW(I,J)=W(I,J)
  141. 2080 IF(W(I,J)<64)AND(BW>0)THENBW(I,J)=BW(I,J)-BW/2
  142. 2090 NEXT:NEXT
  143. 2100 MAX=-5000:H=0
  144. 2110 FORI=0TO3:FORJ=0TO3
  145. 2120 BW=BW(I,J)
  146. 2130 IFBW=MAXTHENMX(H)=10*I+J:H=H+1
  147. 2140 IFBW>MAXTHENH=1:MX(0)=10*I+J:MAX=BW
  148. 2150 NEXT:NEXT
  149. 2160 ZZ=INT(RND(0)*(H))
  150. 2170 ZX=INT(MX(ZZ)/10):ZY=MX(ZZ)-ZX*10
  151. 2180 RETURN
  152. 2200 FORY=0TO3:FORX=0TO3:BW=0
  153. 2210 Z=BE(X,Y)+XX:AD=1575+2*X-80*Y:POKEAD,160:POKEAD+54272,CO(PL)
  154. 2220 IFZ>3THENBW=-10000:GOTO2350
  155. 2230 BW=BW+RX(Y,Z)+RY(X,Z)+RZ(X,Y)
  156. 2240 IFY=ZTHENBW=BW+UX(X)
  157. 2250 IFX=ZTHENBW=BW+UY(Y)
  158. 2260 IFX=YTHENBW=BW+UZ(Z)
  159. 2270 IFY=3-ZTHENBW=BW+OX(X)
  160. 2280 IFX=3-ZTHENBW=BW+OY(Y)
  161. 2290 IFX=3-YTHENBW=BW+OZ(Z)
  162. 2300 IF(X=Y)AND(X=Z)THENBW=BW+D1
  163. 2310 IF(X=3-Y)AND(X=Z)THENBW=BW+D2
  164. 2320 IF(X=Y)AND(X=3-Z)THENBW=BW+D3
  165. 2330 IF(Y=Z)AND(X=3-Z)THENBW=BW+D4
  166. 2340 H0=BW*1E4-INT(BW*1E4)
  167. 2345 IFBW>64THENBW=64
  168. 2346 IFABS(H0-PL/10)<0.05THENBW=65
  169. 2350 BW(X,Y)=BW
  170. 2360 POKEAD,32
  171. 2370 NEXT:NEXT
  172. 2380 RETURN
  173. 2500 Z=BE(X,Y):BE(X,Y)=Z+1
  174. 2505 F=1114:D=3:GOSUB3800
  175. 2510 FE(X,Y,Z)=PL
  176. 2520 IFZ<>3THENFE(X,Y,Z+1)=1
  177. 2530 PRINTCO$(PL):X$=X$(Z):GOSUB3000
  178. 2540 H=1:Q=0:FORI=0TO3
  179. 2541 H9=FE(I,Y,Z):X(I)=I:Y(I)=Y:Z(I)=Z
  180. 2542 GOSUB2800:NEXT
  181. 2543 GOSUB2900:RX(Y,Z)=H
  182. 2550 H=1:Q=0:FORI=0TO3
  183. 2551 H9=FE(X,I,Z):X(I)=X:Y(I)=I:Z(I)=Z
  184. 2552 GOSUB2800:NEXT
  185. 2553 GOSUB2900:RY(X,Z)=H
  186. 2560 H=1:Q=0:FORI=0TO3
  187. 2561 H9=FE(X,Y,I):X(I)=X:Y(I)=Y:Z(I)=I
  188. 2562 GOSUB2800:NEXT
  189. 2563 GOSUB2900:RZ(X,Y)=H
  190. 2570 IFY<>ZTHEN2580
  191. 2571 H=1:Q=0:FORI=0TO3
  192. 2572 H9=FE(X,I,I):X(I)=X:Y(I)=I:Z(I)=I
  193. 2573 GOSUB2800:NEXT
  194. 2574 GOSUB2900:UX(X)=H
  195. 2580 IFX<>ZTHEN2590
  196. 2581 H=1:Q=0:FORI=0TO3
  197. 2582 H9=FE(I,Y,I):X(I)=I:Y(I)=Y:Z(I)=I
  198. 2583 GOSUB2800:NEXT
  199. 2584 GOSUB2900:UY(Y)=H
  200. 2590 IFX<>YTHEN2600
  201. 2591 H=1:Q=0:FORI=0TO3
  202. 2592 H9=FE(I,I,Z):X(I)=I:Y(I)=I:Z(I)=Z
  203. 2593 GOSUB2800:NEXT
  204. 2594 GOSUB2900:UZ(Z)=H
  205. 2600 IFY<>3-ZTHEN2610
  206. 2601 H=1:Q=0:FORI=0TO3
  207. 2602 H9=FE(X,I,3-I):X(I)=X:Y(I)=I:Z(I)=3-I
  208. 2603 GOSUB2800:NEXT
  209. 2604 GOSUB2900:OX(X)=H
  210. 2610 IFX<>3-ZTHEN2620
  211. 2611 H=1:Q=0:FORI=0TO3
  212. 2612 H9=FE(I,Y,3-I):X(I)=I:Y(I)=Y:Z(I)=3-I
  213. 2613 GOSUB2800:NEXT
  214. 2614 GOSUB2900:OY(Y)=H
  215. 2620 IFX<>3-YTHEN2630
  216. 2621 H=1:Q=0:FORI=0TO3
  217. 2622 H9=FE(I,3-I,Z):X(I)=I:Y(I)=3-I:Z(I)=Z
  218. 2623 GOSUB2800:NEXT
  219. 2624 GOSUB2900:OZ(Z)=H
  220. 2630 IF(X<>Y)OR(X<>Z)THEN2640
  221. 2631 H=1:Q=0:FORI=0TO3
  222. 2632 H9=FE(I,I,I):X(I)=I:Y(I)=I:Z(I)=I
  223. 2633 GOSUB2800:NEXT
  224. 2634 GOSUB2900:D1=H
  225. 2640 IF(X<>3-Y)OR(X<>Z)THEN2650
  226. 2641 H=1:Q=0:FORI=0TO3
  227. 2642 H9=FE(I,3-I,I):X(I)=I:Y(I)=3-I:Z(I)=I
  228. 2643 GOSUB2800:NEXT
  229. 2644 GOSUB2900:D2=H
  230. 2650 IF(X<>Y)OR(X<>3-Z)THEN2660
  231. 2651 H=1:Q=0:FORI=0TO3
  232. 2652 H9=FE(I,I,3-I):X(I)=I:Y(I)=I:Z(I)=3-I
  233. 2653 GOSUB2800:NEXT
  234. 2654 GOSUB2900:D3=H
  235. 2660 IF(Y<>Z)OR(X<>3-Z)THEN2670
  236. 2661 H=1:Q=0:FORI=0TO3
  237. 2662 H9=FE(3-I,I,I):X(I)=3-I:Y(I)=I:Z(I)=I
  238. 2663 GOSUB2800:NEXT
  239. 2664 GOSUB2900:D4=H
  240. 2670 Z=Z+1:IFZ=4THEN2700
  241. 2680 RX(Y,Z)=RX(Y,Z)*2
  242. 2681 RY(X,Z)=RY(X,Z)*2
  243. 2682 IFY=ZTHENUX(X)=UX(X)*2
  244. 2683 IFX=ZTHENUY(Y)=UY(Y)*2
  245. 2684 IFX=YTHENUZ(Z)=UZ(Z)*2
  246. 2685 IFY=3-ZTHENOX(X)=OX(X)*2
  247. 2686 IFX=3-ZTHENOY(Y)=OY(Y)*2
  248. 2687 IFX=3-YTHENOZ(Z)=OZ(Z)*2
  249. 2688 IF(X=Y)AND(X=Z)THEND1=2*D1
  250. 2689 IF(X=3-Y)AND(X=Z)THEND2=2*D2
  251. 2690 IF(X=Y)AND(X=3-Z)THEND3=2*D3
  252. 2691 IF(Y=Z)AND(X=3-Z)THEND4=2*D4
  253. 2700 RETURN
  254. 2800 IFH9=0THENH=H/2:RETURN
  255. 2810 IFH9=1THENRETURN
  256. 2820 IF(Q<2)OR(H9=Q)THENH=H*4:Q=H9:RETURN
  257. 2830 H=0:RETURN
  258. 2900 IFH=64THENH=H+PL/1E5
  259. 2910 IFH<>256THENRETURN
  260. 2920 FORJ=0TO3:GX(J)=X(J):GY(J)=Y(J):GZ(J)=Z(J):NEXT
  261. 2930 GW=PL:RETURN
  262. 3000 X0=6*X+Z+1:Y0=20-5*Y-Z
  263. 3010 POKE211,X0:POKE214,Y0:SYS58732
  264. 3020 PRINTX$;:RETURN
  265. 3100 POKE214,6:POKE211,30:SYS58732
  266. 3110 PRINT"[176][192][178][192][178][192][178][192][174]"
  267. 3120 GOSUB3180:PRINT"[221] [221] [221] [221] [221]"
  268. 3130 FORI=1TO3
  269. 3140 GOSUB3180:PRINT"[171][192][219][192][219][192][219][192][179]"
  270. 3150 GOSUB3180:PRINT"[221] [221] [221] [221] [221]":NEXT
  271. 3160 GOSUB3180:PRINT"[173][192][177][192][177][192][177][192][189]"
  272. 3170 RETURN
  273. 3180 POKE211,30:SYS58732:RETURN
  274. 3500 X$=CHR$(144)+CHR$(18)
  275. 3510 IFGW<>0THEN3540
  276. 3520 X$=X$+LEFT$(BL$,13)+"UNENTSCHIEDEN!"+LEFT$(BL$,13)
  277. 3530 GOTO3580
  278. 3540 H$="SIEGER: "+SP$(GW):H=LEN(H$)
  279. 3550 IFH>40THENH$=LEFT$(H$,40):H=40
  280. 3560 H=(40-H)/2
  281. 3570 X$=X$+LEFT$(BL$,H)+H$+LEFT$(BL$,H+.5)
  282. 3580 PRINTCHR$(19);X$:PRINTCHR$(19)
  283. 3590 F=4455:D=7:GOSUB3800
  284. 3591 F=5001:D=7:GOSUB3800
  285. 3592 F=5613:D=7:GOSUB3800
  286. 3593 F=5947:D=20:GOSUB3800
  287. 3594 F=4455:D=20:GOSUB3800
  288. 3595 F=5947:D=20:GOSUB3800
  289. 3596 F=4455:D=20:GOSUB3800
  290. 3597 F=5947:D=50:GOSUB3800
  291. 3600 IFGW<>0THEN3620
  292. 3610 POKE198,0:WAIT198,1:POKE198,0:GOTO100
  293. 3620 PRINTCO$(GW):GOSUB3750
  294. 3630 T=TI
  295. 3640 GETK$:IFK$<>""THEN100
  296. 3650 IFTI-T<30THEN3640
  297. 3660 PRINTCL$(GW):GOSUB3750
  298. 3670 T=TI
  299. 3680 GETK$:IFK$<>""THEN100
  300. 3690 IFTI-T<30THEN3680
  301. 3700 GOTO3620
  302. 3750 FORI=0TO3
  303. 3760 X=GX(I):Y=GY(I):Z=GZ(I):H=0
  304. 3770 IFZ=0THENH=H+1
  305. 3780 IFZ+1=BE(X,Y)THENH=H+2
  306. 3790 X$=W$(H):GOSUB3000
  307. 3795 NEXT:RETURN
  308. 3800 F0=INT(F/256):POKE54272,F-256*F0
  309. 3810 POKE54273,F0:POKE54276,65
  310. 3820 T=TI
  311. 3830 IFTI-T<DTHEN3830
  312. 3840 POKE54276,0:RETURN
  313.