home *** CD-ROM | disk | FTP | other *** search
/ 64'er 1984 November / 64er_Magazin_84-11_1984_Markt__Technik_de.d64 / schachmeister (.txt) < prev    next >
Commodore BASIC  |  2022-10-26  |  8KB  |  317 lines

  1. 10 rem ********************************
  2. 20 rem *      >> schachmeister <<     *
  3. 30 rem *                              *
  4. 40 rem * thomas behrend               *
  5. 50 rem * in der wanne 16    7900 ulm  *
  6. 60 rem *     (8.1984)                 *
  7. 70 rem ********************************
  8. 80 rem
  9. 90 rem  -- alle rem-zeilen koennen  --
  10. 100 rem -- weggelassen werden       --
  11. 110 rem
  12. 120 rem -- neue zeichen --
  13. 130 rem
  14. 140 poke53281,6:poke53280,1:print"[147]"chr$(5)
  15. 150 data120,169,51,133,1,169,0,133,95,133,90,133,88,169,208,133,96,169,240,133
  16. 160 data89,169,224,133,91,32,191,163,169,55,133,1,88,96
  17. 170 rem -- mc-programm --
  18. 180 j=4097:fori=832to865:reada:j=j-a:pokei,a:next
  19. 190 ifj<>0thenprint"data-fehler in zeile 15-20":stop
  20. 200 sys832:poke850,160:sys832:poke56576,peek(56576)and252:poke53272,8
  21. 210 poke648,192:print""tab(5)"> schachmeister <"
  22. 220 print""tab(5)"bitte einen moment warten..."
  23. 230 ad=57344:fori=64to91:b=ad+i*8:forj=0to7:readc:pokeb+j,c:next:next
  24. 240 fori=192to219:b=ad+i*8:forj=0to7:readc:pokeb+j,c:next:next
  25. 250 i=175:b=ad+i*8:forj=0to7:readc:pokeb+j,c:next
  26. 260 poke56,130
  27. 270 rem
  28. 280 rem -- data fuer schachfiguren --
  29. 290 rem
  30. 300 data0,0,60,60,255,255,60,60
  31. 310 data0,0,0,0,0,0,0,0
  32. 320 data0,0,0,0,60,255,255,255
  33. 330 data255,255,60,60,60,60,60,60
  34. 340 data0,0,3,3,15,10,0,0
  35. 350 data60,255,255,255,255,170,0,0
  36. 360 data0,0,192,192,240,160,0,0
  37. 370 data0,0,3,3,3,3,3,3
  38. 380 data0,0,60,60,60,255,255,255
  39. 390 data0,0,192,192,192,192,192,192
  40. 400 data3,0,0,0,0,0,0,0
  41. 410 data255,60,60,60,60,60,60,60
  42. 420 data255,255,255,255,255,255,255,255
  43. 430 data192,0,0,0,0,0,0,0
  44. 440 data0,0,60,60,240,195,255,255
  45. 450 data255,255,255,255,255,170,0,0
  46. 460 data0,0,0,0,192,192,0,0
  47. 470 data0,0,0,0,0,3,3,15
  48. 480 data0,48,48,63,255,207,207,255
  49. 490 data0,0,0,0,192,192,192,192
  50. 500 data63,63,63,60,0,0,0,3
  51. 510 data255,207,15,63,63,255,255,255
  52. 520 data192,192,0,0,0,0,0,192
  53. 530 data3,3,3,3,15,10,0,0
  54. 540 data192,240,240,240,240,160,0,0
  55. 550 data0,0,12,15,3,3,3,3
  56. 560 data0,0,48,240,192,192,192,192
  57. 570 data0,0,0,0,3,3,0,0
  58. 580 data85,85,125,125,255,255,125,125
  59. 590 data85,85,85,85,85,85,85,85
  60. 600 data85,85,85,85,125,255,255,255
  61. 610 data255,255,125,125,125,125,125,125
  62. 620 data85,85,87,87,95,90,85,85
  63. 630 data125,255,255,255,255,170,85,85
  64. 640 data85,85,213,213,245,165,85,85
  65. 650 data85,85,87,87,87,87,87,87
  66. 660 data85,85,125,125,125,255,255,255
  67. 670 data85,85,213,213,213,213,213,213
  68. 680 data87,85,85,85,85,85,85,85
  69. 690 data255,125,125,125,125,125,125,125
  70. 700 data255,255,255,255,255,255,255,255
  71. 710 data213,85,85,85,85,85,85,85
  72. 720 data85,85,125,125,245,215,255,255
  73. 730 data255,255,255,255,255,170,85,85
  74. 740 data85,85,85,85,213,213,85,85
  75. 750 data85,85,85,85,85,87,87,95
  76. 760 data85,117,117,127,255,223,223,255
  77. 770 data85,85,85,85,213,213,213,213
  78. 780 data127,127,127,125,85,85,85,87
  79. 790 data255,223,95,127,127,255,255,255
  80. 800 data213,213,85,85,85,85,85,213
  81. 810 data87,87,87,87,95,90,85,85
  82. 820 data213,245,245,245,245,165,85,85
  83. 830 data85,85,93,95,87,87,87,87
  84. 840 data85,85,117,245,213,213,213,213
  85. 850 data85,85,85,85,87,87,85,85
  86. 860 data126,189,215,231,231,215,189,126
  87. 870 rem
  88. 880 rem -- variablen und felder --
  89. 890 rem
  90. 900 b$(1)="abaacadef":rem bauer
  91. 910 b$(2)="ghijlmdof":rem turm
  92. 920 b$(3)="anaakadef":rem laeufer
  93. 930 b$(4)="qrstuvwox":rem pferd
  94. 940 b$(5)="yhzacadef":rem dame
  95. 950 b$(6)="[@pjcmdef":rem koenig
  96. 960 fori=1to6:forj=0to2:fork=1to3
  97. 970 a$=mid$(b$(i),j*3+k,1):a$(i)=a$(i)+chr$(asc(a$)+128):next
  98. 980 a$(i)=a$(i)+"[157][157][157]":next:next
  99. 990 dimb(8,8)
  100. 1000 fori=7to1step-2:forj=1to7step2:b(i,j)=1:next:next
  101. 1010 fori=8to2step-2:forj=2to8step2:b(i,j)=1:next:next
  102. 1020 dima(8,8)
  103. 1030 gosub2760
  104. 1040 z1$="[159]              "
  105. 1050 :
  106. 1060 rem
  107. 1070 rem -- multicolor-modus --
  108. 1080 rem -- einschalten      --
  109. 1090 rem
  110. 1100 poke53281,6:poke53282,7:poke53283,5
  111. 1110 poke53270,peek(53270)or16
  112. 1120 rem
  113. 1130 rem -- liste der partien --
  114. 1140 rem -- aufstellen        --
  115. 1150 rem
  116. 1160 data-1
  117. 1170 restore:da=0
  118. 1180 da=da+1:reada:ifa=-1then1200
  119. 1190 goto1180
  120. 1200 dimp(20),p$(20),p1$(20),ja$(20):p=0:d=0
  121. 1210 p=p+1:readp$(p),p1$(p),ja$(p):d=d+3
  122. 1220 reada$:d=d+1:ifa$="e"ora$="x"then1240
  123. 1230 goto1220
  124. 1240 ifa$="x"then1290
  125. 1250 p(p)=d:goto1210
  126. 1260 rem
  127. 1270 rem -- auswahlmenue --
  128. 1280 rem
  129. 1290 restore:fori=1toda:reada:next
  130. 1300 printchr$(5)"[147]   - auswahl -"
  131. 1310 print:print
  132. 1320 fori=1top:printi;tab(5)p$(i)tab(16)p1$(i),ja$(i):next
  133. 1330 poke198,0:input"";w:ifw<1orw>pthen1330
  134. 1340 print"[147]":ifw=1then1390
  135. 1350 fori=1top(w-1):reada$:next
  136. 1360 rem
  137. 1370 rem -- spielbrett --
  138. 1380 rem
  139. 1390 fori=1to24:printchr$(159)tab(0)" "tab(25)z1$:next
  140. 1400 printchr$(5)"";
  141. 1410 fory=8to1step-1:x=1:gosub2840:print"[157][157]"y:x=8:gosub2840
  142. 1420 print""y:next
  143. 1430 fory=8to1step-1:forx=1to8
  144. 1440 gosub2470
  145. 1450 next:next
  146. 1460 print""
  147. 1470 rem
  148. 1480 rem -- anfangsstellung --
  149. 1490 rem
  150. 1500 fory=7to8:forx=1to8
  151. 1510 gosub2530:next:next
  152. 1520 fory=1to2:forx=1to8:gosub2530:next:next
  153. 1530 printchr$(159)"":printtab(27)" spieler 1 "
  154. 1540 printtab(27)"           [146]"
  155. 1550 printtab(27)"[145]           "
  156. 1560 poke214,18:print:printtab(27)chr$(30)" spieler 2 "
  157. 1570 printtab(27)"           [146]"
  158. 1580 printtab(27)"[145]           "
  159. 1590 poke214,5:print:printtab(27)chr$(5)"zug:[146]  1"
  160. 1600 poke214,7:print:printtab(28)chr$(158)"       [146]"
  161. 1610 poke214,9:print:printtab(27)chr$(5)"          "
  162. 1620 printtab(27)"          "
  163. 1630 printtab(27)"[145]          "
  164. 1640 reada$:a$=left$(a$,9):poke214,20:print:printtab(28)""a$
  165. 1650 reada$:a$=left$(a$,9):poke214,2:print:printtab(28)""a$
  166. 1660 reada$:poke214,15:print:printtab(28)a$
  167. 1670 zu=1:z1=-1:aw=0
  168. 1680 rem
  169. 1690 rem ************************
  170. 1700 rem *  -- hauptprogramm -- *
  171. 1710 rem ************************
  172. 1720 rem
  173. 1730 print"":z1=z1+1:ifz1=2thenz1=0:zu=zu+1:poke214,5:print:printtab(32)chr$(5)zu
  174. 1740 reada$:iflen(a$)<>4then1950
  175. 1750 rem
  176. 1760 rem -- normaler zug --
  177. 1770 rem
  178. 1780 b$=left$(a$,2):gosub2620:x=x2:y=y2
  179. 1790 b2$=b$
  180. 1800 b$=right$(a$,2):gosub2620
  181. 1810 o$="-":ifa(x2,y2)<>0theno$="/"
  182. 1820 a$=b2$+o$+b$
  183. 1830 poke214,7:print:printtab(29)chr$(5)""a$
  184. 1840 fori=1to4:gosub2530:gosub2470:next
  185. 1850 a1=a(x,y):a(x,y)=0:a(x2,y2)=a1
  186. 1860 x=x2:y=y2:fori=1to4:gosub2470:gosub2530:next
  187. 1870 ifaw=3thenaw=0:return
  188. 1880 ifaw=2then2890:rem-matt oder remis-
  189. 1890 gosub2660
  190. 1900 ifaw=1thenaw=0:poke214,11:print:printtab(27)chr$(5)"        "
  191. 1910 goto1730
  192. 1920 rem
  193. 1930 rem -- besondere situationen --
  194. 1940 rem
  195. 1950 ifa$="e"then2890
  196. 1960 ifa$="sa"then2100
  197. 1970 ifa$="wa"then2120
  198. 1980 ifa$="kr"then2190
  199. 1990 ifa$="lr"then2250
  200. 2000 printchr$(5)
  201. 2010 b$=right$(a$,1):a$=left$(a$,4)
  202. 2020 ifb$="s"thenaw=1:poke214,11:print:printtab(27)"schach !":goto1780
  203. 2030 ifb$="m"thenaw=2:poke214,11:print:printtab(27)" matt !":goto1780
  204. 2040 ifb$="r"thenaw=2:poke214,11:print:printtab(27)" remis !":goto1780
  205. 2050 ifb$="d"then2340
  206. 2060 print"[147]datafehler !!!":stop
  207. 2070 rem
  208. 2080 rem -- aufgeben --
  209. 2090 rem
  210. 2100 a$="schwarz"
  211. 2110 goto2130
  212. 2120 a$="weiss"
  213. 2130 poke214,9:print:printtab(29)a$
  214. 2140 printtab(27)"gibt auf !"
  215. 2150 goto2890
  216. 2160 rem
  217. 2170 rem -- kurze rochade --
  218. 2180 rem
  219. 2190 y=1:t=0:ifz1=1theny=8:t=6
  220. 2200 a(5,y)=0:a(8,y)=0:a(6,y)=8-t:a(7,y)=12-t:x=5:gosub2470:x=8:gosub2470
  221. 2210 x=6:gosub2530:x=7:gosub2530:goto2280
  222. 2220 rem
  223. 2230 rem -- lange rochade --
  224. 2240 rem
  225. 2250 y=1:t=0:ifz1=1theny=8:t=6
  226. 2260 a(1,y)=0:a(5,y)=0:a(3,y)=12-t:a(4,y)=8-t
  227. 2270 x=1:gosub2470:x=5:gosub2470:x=3:gosub2530:x=4:gosub2530
  228. 2280 poke214,11:print:printtab(29)chr$(5)"rochade"
  229. 2290 gosub2660
  230. 2300 poke214,11:print:printtab(29)"       ":goto1730
  231. 2310 rem
  232. 2320 rem -- dametausch --
  233. 2330 rem
  234. 2340 aw=3:gosub1780
  235. 2350 ify2=8thena(x2,8)=11:goto2370
  236. 2360 a(x2,1)=5
  237. 2370 x=x2:y=y2:gosub2530
  238. 2380 poke214,10:print:printtab(29)chr$(5)"dame-"
  239. 2390 printtab(29)"tausch"
  240. 2400 gosub2660:poke214,10:print:printtab(29)"     "
  241. 2410 printtab(29)"      ":goto1730
  242. 2420 rem ****** unterprogramme ******
  243. 2430 rem
  244. 2440 rem -- einzelne felder --
  245. 2450 rem -- drucken         --
  246. 2460 rem
  247. 2470 ifb(x,y)=1then2490
  248. 2480 gosub2840:poke646,15:print"[193][193][193][157][157][157][193][193][193][157][157][157][193][193][193]":return
  249. 2490 gosub2840:print"   [157][157][157]   [157][157][157]   ":return
  250. 2500 rem
  251. 2510 rem -- figur drucken --
  252. 2520 rem
  253. 2530 f=a(x,y):iff=0thenreturn
  254. 2540 gosub2840
  255. 2550 poke646,9:iff>6andb(x,y)=0then:print""a$(f-6)"[145]":return
  256. 2560 iff>6andb(x,y)=1then:print"[146]"a$(f-6)"[145]":return
  257. 2570 poke646,8:ifb(x,y)=1thenprint"[146]"a$(f)"[145]":return
  258. 2580 print""a$(f)"[145]":return
  259. 2590 rem
  260. 2600 rem -- umrechnen --
  261. 2610 rem
  262. 2620 b1$=left$(b$,1):x2=asc(b1$)-64:y2=val(right$(b$,1)):return
  263. 2630 rem
  264. 2640 rem -- zeitschlaufe --
  265. 2650 rem
  266. 2660 poke198,0:fort=1to250:ifpeek(197)<>64then2680
  267. 2670 next:return
  268. 2680 ifpeek(197)=3then2700
  269. 2690 return
  270. 2700 ifpeek(197)<>64then2700
  271. 2710 ifpeek(197)=64then2710
  272. 2720 return
  273. 2730 rem
  274. 2740 rem -- grundstellung --
  275. 2750 rem
  276. 2760 a(1,1)=8:a(2,1)=10:a(3,1)=9:a(4,1)=11:a(5,1)=12:a(6,1)=9
  277. 2770 a(7,1)=10:a(8,1)=8
  278. 2780 fori=1to8:a(i,8)=a(i,1)-6:next
  279. 2790 forx=1to8:a(x,2)=7:a(x,7)=1:next
  280. 2800 return
  281. 2810 rem
  282. 2820 rem -- bildschirmposition --
  283. 2830 rem
  284. 2840 ify=8thenprint""tab((x-1)*3+1);:return
  285. 2850 x1=(x-1)*3+1:y1=(8-y)*3-1:poke214,y1:print:printtab(x1);:return
  286. 2860 rem
  287. 2870 rem -- spielende ---
  288. 2880 rem
  289. 2890 poke198,0:fori=1to10000:ifpeek(197)=64thennext
  290. 2900 fori=1to8:forj=1to8:a(i,j)=0:next:next
  291. 2910 gosub2760:goto1290
  292. 10000 rem
  293. 10010 rem -----  data fuer die   ------
  294. 10020 rem -----  partien         ------
  295. 10030 rem
  296. 10040 rem ** demo-partie 1 **
  297. 10050 datasiff,kashdan,1948
  298. 10060 datad2d4,g8f6,c2c4,e7e6,b1c3,f8b4,d1c2,d7d5,a2a3,b4e7,c4d5,e6d5,c1f4,c7c6
  299. 10070 datah2h3,kr,e2e3,f8e8,f1d3,b8d7,g1f3,d7f8,f3e5,e7d6,kr,f8e6,f4h2,g7g6
  300. 10080 datae5f3,e6g7,h2d6,d8d6,f1c1,c8f5,f3d2,e8e7,b2b4,a8e8,a1b1,f5h3,g2h3,e7e3
  301. 10090 datad3f1,g7f5,f2e3,d6g3s,f1g2,g3e3s,g1h1,f5g3s,h1h2,e3f4,d2f3,e8e2,c3e2
  302. 10100 datag3e2s,h2h1,f6h5,c2d2,h5g3s,h1h2,g3f1s,h2h1,f4h2s,f3h2,f1g3m
  303. 10110 datae
  304. 10120 rem ** demo-partie 2 **
  305. 10130 datageller,euwe,1953
  306. 10140 datad2d4,g8f6,c2c4,e7e6,b1c3,f8b4,e2e3,c7c5,a2a3,b4c3,b2c3,b7b6,f1d3,c8b7
  307. 10150 dataf2f3,b8c6,g1e2,kr,kr,c6a5,e3e4,f6e8,e2g3,c5d4,c3d4,a8c8,f3f4,a5c4
  308. 10160 dataf4f5,f7f6,f1f4,b6b5,f4h4,d8b6,e4e5,c4e5,f5e6,e5d3,d1d3,b6e6,d3h7s
  309. 10170 datag8f7,c1h6,f8h8,h7h8,c8c2,a1c1,c2g2s,g1f1,e6b3,f1e1,b3f3,wa
  310. 10180 datae
  311. 10190 rem ** demo-partie 3 **
  312. 10200 datarossetto,stahlberg,1947
  313. 10210 datae2e4,e7e6,d2d4,d7d5,b1c3,g8f6,c1g5,f8e7,e4e5,f6d7,h2h4,c7c5,c3b5,f7f6
  314. 10220 dataf1d3,a7a6,d1h5s,e8f8,h1h3,a6b5,g5h6,d8a5s,h6d2,a5c7,h3g3,c5d4,g1f3
  315. 10230 datad7e5,g3g7,h7h6,d3h7,f8g7,h5h6s,g7f7,h6h5s,f7g7r
  316. 10240 datax
  317.