home *** CD-ROM | disk | FTP | other *** search
/ Input 64 / Input_64_87-03_1987_Verlag_Heinz_Weise_de.d64 / tic-tac-toe (.txt) < prev    next >
Commodore BASIC  |  2023-02-26  |  4KB  |  197 lines

  1. 5 gosub30000:rem titel
  2. 10 gosub20000:rem init
  3. 1000 gosub12000:rem spielfeld
  4. 1010 ifwn=2then1600
  5. 1100 z=z+1
  6. 1200 gosub10000:rem computerzug
  7. 1300 gosub4500:rem gewonnen?
  8. 1400 ifgw=1thenz5$="c64":cw=cw+1:gosub14000:goto3000
  9. 1500 ifv=1then4000
  10. 1510 wn=2
  11. 1600 z=z+1
  12. 1700 gosub13000:rem spielerzug
  13. 1800 gosub4500:rem gewonnen?
  14. 1900 ifgw=1thenz5$="spieler":sw=sw+1:gosub15000:goto3000
  15. 2000 ifv=1then4000
  16. 2010 wn=1
  17. 2100 goto1100
  18. 3000 ze=20:sp=0:gosub11000:printz3$
  19. 3010 gosub11000
  20. 3020 print"gewonnen hat der ";z5$
  21. 3050 fori=1to9:bt(i)=0:tp(i)=0:next
  22. 3060 p=0
  23. 3070 getx$:ifx$=""then3070
  24. 3080 goto1000
  25. 4000 ze=20:sp=0:gosub11000:printz3$
  26. 4010 gosub11000
  27. 4020 print"unentschieden"
  28. 4030 uw=uw+1
  29. 4035 gosub14000
  30. 4040 goto3050
  31. 4500 ge=0:g1(1)=bt(1)+bt(2)+bt(3)
  32. 4510 g1(2)=bt(4)+bt(5)+bt(6)
  33. 4520 g1(3)=bt(7)+bt(8)+bt(9)
  34. 4530 g1(4)=bt(1)+bt(4)+bt(7)
  35. 4540 g1(5)=bt(2)+bt(5)+bt(8)
  36. 4550 g1(6)=bt(3)+bt(6)+bt(9)
  37. 4560 g1(7)=bt(1)+bt(5)+bt(9)
  38. 4570 g1(8)=bt(3)+bt(5)+bt(7)
  39. 4580 fori=1to8:ifg1(i)=3org1(i)=-3thengw=1
  40. 4590 next
  41. 4600 v=1
  42. 4610 fori=1to9
  43. 4620 ifbt(i)=0thenv=0
  44. 4630 next
  45. 4640 return
  46. 5000 print"[147]"
  47. 5010 ze=10:sp=1:gosub11000
  48. 5020 print"[150]mehr spiele kann ich mir nicht merken!"
  49. 5030 ze=13:sp=7:gosub11000
  50. 5040 print"bitte neu starten (taste)"
  51. 5050 getx$:ifx$=""then5050
  52. 5060 run10
  53. 10000 z4$="[154]x":pf=0:gf=0
  54. 10005 fora=1to9
  55. 10010 ifbt(a)<>0then10160
  56. 10012 pf=a
  57. 10020 iffs=0thenpf=0:gosub10200:goto10160: rem naechstmoeglichen zug
  58. 10030 gosub10300:rem naechsten zug suchen
  59. 10040 ifgn=1thengosub10200:goto10160
  60. 10160 next
  61. 10162 ifpf>0thengosub10500:goto10190
  62. 10170 ifa>=15thenv=0:goto10190
  63. 10180 ifa>=9thenv=1
  64. 10190 return
  65. 10200 ze=kw(a,0):sp=kw(a,1)+1
  66. 10210 gosub11000:rem cursor setzen
  67. 10220 printz4$
  68. 10230 p=p+za(a):tp(z)=p:bt(a)=1
  69. 10240 a=15
  70. 10250 return
  71. 10300 p1=p+za(a)
  72. 10310 fori=1tofs
  73. 10320 iff(i,z,0)=p1thengosub10360:goto10340
  74. 10330 gn=1
  75. 10340 next
  76. 10350 return
  77. 10360 iff(i,z,1)=0thenmk=i:gn=1:goto10380
  78. 10370 gn=0
  79. 10380 i=fs+10
  80. 10390 return
  81. 10500 ifa>=15then10850
  82. 10560 z1=z-2:ifz1<=0then10820
  83. 10570 p1=tp(z1):ab=0
  84. 10580 fori=1tofs
  85. 10590 iff(i,z1,0)=p1thenf(i,z1,1)=1:ab=1
  86. 10600 next
  87. 10820 fora=1to9
  88. 10830 ifbt(a)=0thengosub10200
  89. 10840 next
  90. 10842 ifab=0then10850
  91. 10845 gf=1
  92. 10850 return
  93. 11000 pokecs,sp:pokecz,ze:pokecp,0:syssc
  94. 11010 return
  95. 12000 iffs>=dfthen5000
  96. 12008 z=0
  97. 12010 z1$="[158]            [221]   [221]"
  98. 12020 z2$="         [192][192][192][219][192][192][192][219][192][192][192]"
  99. 12030 z3$="                                       "
  100. 12040 print"[147]"
  101. 12050 fori=1to3:printz1$:next
  102. 12060 printz2$
  103. 12070 fori=1to3:printz1$:next
  104. 12080 printz2$
  105. 12090 fori=1to3:printz1$:next
  106. 12100 fori=1to9:ze=kw(i,0):sp=kw(i,1)
  107. 12110 gosub11000
  108. 12120 printi:next
  109. 12130 ze=20:sp=0:gosub11000
  110. 12140 wn=1
  111. 12170 printz4$
  112. 12190 ze=20:sp=0:gosub11000
  113. 12200 printz3$
  114. 12210 gs=cw+sw+uw
  115. 12220 ze=1:sp=23:gosub11000
  116. 12230 print"[150]spiele ges.:";"[155]"gs
  117. 12240 ze=4:sp=23:gosub11000
  118. 12250 print"[150]davon gewonnen:"
  119. 12272 ze=7:sp=23:gosub11000
  120. 12274 print"c64:        ";"[155]"cw
  121. 12280 ze=8:sp=23:gosub11000
  122. 12290 print"[150]spieler:    ";"[155]"sw
  123. 12300 ze=11:sp=23:gosub11000
  124. 12310 print"[150]unentsch.:  ";"[155]"uw
  125. 12320 return
  126. 13000 ze=20:sp=0:gosub11000
  127. 13010 printz3$:gosub11000
  128. 13020 print"welches feld? ";
  129. 13030 getx$:ifx$=""then13030
  130. 13040 ifasc(x$)<49orasc(x$)>57then13030
  131. 13050 x=asc(x$)-48
  132. 13060 ifbt(x)=0then13120
  133. 13070 ze=20:sp=0:gosub11000
  134. 13080 printz3$:gosub11000
  135. 13090 print"feld ist schon besetzt!!  (taste) ";
  136. 13100 getx$:ifx$=""then13100
  137. 13110 goto13000
  138. 13120 bt(x)=-1:z4$="[209]"
  139. 13130 p1=za(x)*2:p=p+p1
  140. 13140 tp(z)=p
  141. 13150 ze=kw(x,0):sp=kw(x,1)+1
  142. 13160 gosub11000
  143. 13170 printz4$
  144. 13180 return
  145. 14000 gw=0
  146. 14008 ifgf=1thengf=0:goto14050
  147. 14010 fs=fs+1
  148. 14020 fori=1to9
  149. 14030 f(fs,i,0)=tp(i)
  150. 14040 next
  151. 14050 return
  152. 15000 gw=0
  153. 15008 ifgf=1thengf=0:goto16000
  154. 15010 fs=fs+1
  155. 15020 z=z-1
  156. 15030 fori=1to9
  157. 15040 f(fs,i,0)=tp(i)
  158. 15050 next
  159. 15060 f(fs,z,1)=1
  160. 15070 fori=1tofs
  161. 15080 iff(i,z,0)=tp(z)thenf(i,z,1)=1
  162. 15090 next
  163. 16000 return
  164. 20000 df=100
  165. 20010 dimf(df,9,1),kw(9,1)
  166. 20030 cs=782:cz=781:sc=65520:fs=0:cp=783
  167. 20040 kw(1,0)=2:kw(1,1)=9:kw(2,0)=2:kw(2,1)=13:kw(3,0)=2:kw(3,1)=17
  168. 20050 kw(4,0)=6:kw(4,1)=9:kw(5,0)=6:kw(5,1)=13:kw(6,0)=6:kw(6,1)=17
  169. 20060 kw(7,0)=10:kw(7,1)=9:kw(8,0)=10:kw(8,1)=13:kw(9,0)=10:kw(9,1)=17
  170. 20070 za(1)=1
  171. 20080 fori=2to9:za(i)=za(i-1)*3:next
  172. 25000 return
  173. 30000 ifpeek(50307)=120thenpoke50257,0
  174. 30010 printchr$(147)chr$(14)chr$(8);
  175. 30020 poke53280,0:poke53281,0
  176. 30030 rv$="                                        "
  177. 30040 print"[154]";rv$;"     [196]as selbstlernende [212]ic-[212]ac-[212]oe     ";rv$;
  178. 30050 print"     (c) [201][206][208][213][212]64   (w) [203].-[198]. [208]robst     ";rv$
  179. 30060 print:print"[159][213]m '[211]elbstlernende [208]rogramme' werden"
  180. 30070 print"viele grosse [215]orte gemacht. [196]ass dies"
  181. 30080 print"sogar mit kleinen [194][193][211][201][195]-[208]rogrammen"
  182. 30090 print"geht, zeigt dieses [211]piel.":print
  183. 30095 print"[196]as [208]rogramm versucht, aus seinen [198]eh-"
  184. 30100 print"lern zu lernen und die [218]uege nicht zu"
  185. 30110 print"wiederholen, mit denen es verloren hat."
  186. 30120 print"([193]uf '[211]ieg' zu spielen, ist bei diesem"
  187. 30130 print"[211]piel theoretisch unsinnig, weil es "
  188. 30140 print"bei richtiger [211]pielweise beider [211]pieler"
  189. 30150 print"nur ein '[213]nentschieden' geben kann.)"
  190. 30160 print
  191. 30170 print"[196]er [197]infachheit halber beginnt immer"
  192. 30180 print"der [195]omputer.":print
  193. 30190 print:print"[154][211]tart mit irgendeiner [212]aste!";
  194. 30195 poke198,0
  195. 30200 getw$:ifw$=""then30200
  196. 30210 printchr$(147)chr$(142):return
  197.