home *** CD-ROM | disk | FTP | other *** search
/ Commodore Disc 44 / Commodore_Disc_44_19xx_-_de.d64 / fischzucht (.txt) < prev    next >
Encoding:
Commodore BASIC  |  1990-01-01  |  9.7 KB  |  592 lines

  1. 10 rem *** fischzucht **************
  2. 20 rem (p) commodore disc        ***
  3. 30 rem                           ***
  4. 40 rem (c) 6/90 by g. kramer     ***
  5. 50 rem             emsdetten     ***
  6. 60 rem *****************************
  7. 70 rem ein programm fuer den     ***
  8. 80 rem commodore 64              ***
  9. 90 rem******************************
  10. 100 ifa$="1"then130
  11. 110 a$="1"
  12. 120 load"m.p. fischzucht",8,1
  13. 130 poke45,1:poke46,64
  14. 140 clr
  15. 150 gosub4120
  16. 160 gosub4660
  17. 170 gosub4300
  18. 180 gosub3360
  19. 190 gosub 260
  20. 200 gosub1040
  21. 210 ifa$="j"then170
  22. 220 end
  23. 230 ********************
  24. 240 *** spiel laeuft ***
  25. 250 ********************
  26. 260 r=0
  27. 270 r=r+1
  28. 280 ifr>50then1000
  29. 290 pokeze,19:pokesp,0:syscu
  30. 300 printchr$(159)rchr$(157);
  31. 310 print". runde"
  32. 320 s=0
  33. 330 s=s+1
  34. 340 ifs>anthen270
  35. 350 gosub1250
  36. 360 gosub3250
  37. 370 fi=0:fz=0
  38. 380 a=0:a0=0
  39. 390 fori=1to100:next
  40. 400 a1=a+(8*a0)+sd
  41. 410 a2=peek(a1)
  42. 420 pokea1,0
  43. 430 gosub1470
  44. 440 pokea1,a2
  45. 450 ifei=0then390
  46. 460 ifei=32then570
  47. 470 ifei=29thena=a+1
  48. 480 ifa>3thena=0
  49. 490 ifei=157thena=a-1
  50. 500 ifa<0thena=3
  51. 510 ifei=17thena0=a0+1
  52. 520 if(a0>(r-1))or(a0>5)thena0=0
  53. 530 ifei=145thena0=a0-1
  54. 540 ifa0<0thena0=a0+r
  55. 550 ifa0>5thena0=5
  56. 560 goto390
  57. 570 z=a:z0=a0
  58. 580 ifa0=0then620
  59. 590 a0=a+4*(a0-1)
  60. 600 a=s
  61. 610 goto640
  62. 620 a0=a:a=0
  63. 630 geta$:ifa$<>""then630
  64. 640 a2=zu(a,a0,0,0)
  65. 650 a3=zu(a,a0,0,1)
  66. 660 a4=int(rnd(1)*4)
  67. 670 a5=a3and15
  68. 680 a6=a3and240
  69. 690 if(a4and1)=0thena5=a2and15
  70. 700 if(a4and2)=0thena6=a2and240
  71. 710 a1=r-1:ifr>6thena1=5
  72. 720 a1=4*a1+fi
  73. 730 zu(s,a1,0,fz)=a5ora6
  74. 740 a2=zu(a,a0,1,0)
  75. 750 a3=zu(a,a0,1,1)
  76. 760 a4=int(rnd(1)*8)
  77. 770 a5=a3and1
  78. 780 if(a4and1)=0thena5=a2and1
  79. 790 a6=a3and2
  80. 800 if(a4and2)=0thena6=a2and2
  81. 810 a7=a3and4
  82. 820 if(a4and4)=0thena7=a2and4
  83. 830 a5=a5ora6
  84. 840 zu(s,a1,1,fz)=a5ora7
  85. 850 iffz=0then880
  86. 860 gosub2900
  87. 870 gosub1680
  88. 880 a=z:a0=z0
  89. 890 pokepu,0
  90. 900 iffz=0then960
  91. 910 fz=0:fi=fi+1
  92. 920 iffi<4then390
  93. 930 gosub1360
  94. 940 gosub1980
  95. 950 goto330
  96. 960 fz=1
  97. 970 pokesd+a1+a1-fi+12,255
  98. 980 pokesd+a1+a1-fi+8,71
  99. 990 goto390
  100. 1000 return
  101. 1010 *****************
  102. 1020 *** spielende ***
  103. 1030 *****************
  104. 1040 pokepu,0
  105. 1050 pokeze,19:pokesp,15:syscu
  106. 1060 printchr$(5)"ende - neues spiel?"
  107. 1070 geta$:ifa$="n"then1200
  108. 1080 ifa$<>"j"then1070
  109. 1090 fori=0toan
  110. 1100 fori0=0to3
  111. 1110 ms(i,i0)=0
  112. 1120 next
  113. 1130 fori0=0to23
  114. 1140 fori1=0to1
  115. 1150 fori2=0to1
  116. 1160 zu(i,i0,i1,i2)=0
  117. 1170 nexti2,i1,i0,i
  118. 1180 gosub5130
  119. 1190 printchr$(147)
  120. 1200 a=usr(8)
  121. 1210 return
  122. 1220 *********************
  123. 1230 *** neuer spieler ***
  124. 1240 *********************
  125. 1250 a=(s-1)*8+1
  126. 1260 a=b+840+a
  127. 1270 fori=atoa+5
  128. 1280 pokei,peek(i)or128
  129. 1290 pokei+40,peek(i+40)or128
  130. 1300 pokei+80,peek(i+80)or128
  131. 1310 next
  132. 1320 return
  133. 1330 *********************
  134. 1340 *** alter spieler ***
  135. 1350 *********************
  136. 1360 a=(s-1)*8+1
  137. 1370 a=b+840+a
  138. 1380 fori=atoa+5
  139. 1390 pokei,peek(i)and127
  140. 1400 pokei+40,peek(i+40)and127
  141. 1410 pokei+80,peek(i+80)and127
  142. 1420 next
  143. 1430 return
  144. 1440 *************************
  145. 1450 *** eingabe auswerten ***
  146. 1460 *************************
  147. 1470 ei=0
  148. 1480 geta$
  149. 1490 ifa$<>chr$(133)then1520
  150. 1500 gosub2390
  151. 1510 goto1470
  152. 1520 ifms(s,0)<3then1560
  153. 1530 fore=1to100:next
  154. 1540 ifa$<>""thenei=asc(a$)
  155. 1550 goto1640
  156. 1560 poke56322,224
  157. 1570 a3=peek(56322-ms(s,0))
  158. 1580 poke56322,255
  159. 1590 if(a3and1)=0thenei=145
  160. 1600 if(a3and2)=0thenei=17
  161. 1610 if(a3and4)=0thenei=157
  162. 1620 if(a3and8)=0thenei=29
  163. 1630 if(a3and16)=0thenei=32
  164. 1640 return
  165. 1650 ********************
  166. 1660 *** punktwertung ***
  167. 1670 ********************
  168. 1680 a1=aand15
  169. 1690 a2=(aand240)/16
  170. 1700 a=mu(a2,a1,a0)
  171. 1710 ifa=0then1940
  172. 1720 pokeze,19:pokesp,15:syscu
  173. 1730 printchr$(158)"praemie ="a
  174. 1740 gosub5330
  175. 1750 mu(a2,a1,a0)=int(a/3)
  176. 1760 ifa/3<100thenmu(a2,a1,a0)=0
  177. 1770 ms(s,1)=ms(s,1)+a
  178. 1780 a$=str$(ms(s,1))
  179. 1790 a$=right$("....."+right$(a$,len(a$)-1),6)
  180. 1800 fori0=1to6
  181. 1810 fori1=1to0step-1
  182. 1820 printchr$(18+128*i1);
  183. 1830 pokeze,23
  184. 1840 pokesp,8*(s-1)+1:syscu
  185. 1850 printchr$(158)a$
  186. 1860 nexti1,i0
  187. 1870 gosub5440
  188. 1880 a$=""
  189. 1890 fori=1to20
  190. 1900 a$=a$+chr$(32)
  191. 1910 next
  192. 1920 pokeze,19:pokesp,15:syscu
  193. 1930 printa$
  194. 1940 return
  195. 1950 *********************
  196. 1960 *** loeschen bild ***
  197. 1970 *********************
  198. 1980 poke53280,4
  199. 1990 ifr<6then2300
  200. 2000 a=0
  201. 2010 fori0=0to19
  202. 2020 a0=8*int(i0/4)+(i0and3)+8
  203. 2030 ifpeek(sd+a0+4)=248then2060
  204. 2040 a1=peek(sd+a0)
  205. 2050 ifint(a1/16)<>(a1and15)then2090
  206. 2060 a=a+1
  207. 2070 pokesd+a0,187
  208. 2080 ifa=4theni0=30
  209. 2090 next
  210. 2100 a1=4-a:a=0
  211. 2110 fori0=0to19
  212. 2120 a0=8*int((i0+a)/4)+((i0+a)and3)
  213. 2130 ifpeek(sd+a0+8)<>187then2160
  214. 2140 a=a+1
  215. 2150 goto2120
  216. 2160 ifa1=0then2250
  217. 2170 a0=8*int((i0+a)/4)+((i0+a)and3)
  218. 2180 ifpeek(sd+a0+8)<>187then2210
  219. 2190 a=a+1
  220. 2200 goto2170
  221. 2210 a1=a1-1
  222. 2220 ifa1<0then2250
  223. 2230 pokesd+a0+8,187
  224. 2240 goto2170
  225. 2250 fori1=0to1
  226. 2260 fori2=0to1
  227. 2270 zu(s,i0,i1,i2)=zu(s,i0+a,i1,i2)
  228. 2280 nexti2,i1
  229. 2290 next
  230. 2300 fori0=8to48step8
  231. 2310 fori1=0to4
  232. 2320 pokesd+i0+i1,0
  233. 2330 nexti1,i0
  234. 2340 poke53280,0
  235. 2350 return
  236. 2360 ***********************
  237. 2370 *** anzeigen farben ***
  238. 2380 ***********************
  239. 2390 fori=1to17
  240. 2400 pokezl,i
  241. 2410 syslo
  242. 2420 next
  243. 2430 pokeze,1:pokesp,31:syscu
  244. 2440 print"farbe?"
  245. 2450 print
  246. 2460 fori=0to4
  247. 2470 printtab(30);
  248. 2480 printi+1"="
  249. 2490 next
  250. 2500 fori=0to4
  251. 2510 a3=155+(40*i)
  252. 2520 pokef+a3,f(i)
  253. 2530 pokeb+a3,81
  254. 2540 next
  255. 2550 geta$
  256. 2560 if(a$<"1")or(a$>"5")then2550
  257. 2570 a4=1:a5=30
  258. 2580 fori=1to7
  259. 2590 pokezl,i
  260. 2600 syslo
  261. 2610 next
  262. 2620 a3=val(a$)-1
  263. 2630 fori=a3to4
  264. 2640 fori0=0to4
  265. 2650 ifi=i0then2850
  266. 2660 fori1=1to7
  267. 2670 ifmu(i,i0,i1)=0then2840
  268. 2680 a6=40*a4+a5
  269. 2690 pokef+a6,f(i)
  270. 2700 pokeb+a6,81
  271. 2710 pokef+a6+1,f(i0)
  272. 2720 if(i1and4)>0thenpokeb+a6+1,75
  273. 2730 pokef+a6+2,f(i0)
  274. 2740 if(i1and1)>0thenpokeb+a6+2,62
  275. 2750 pokef+a6+3,f(i0)
  276. 2760 if(i1and2)>0thenpokeb+a6+3,60
  277. 2770 a4=a4+1
  278. 2780 ifa4<18then2840
  279. 2790 ifa5=36then2830
  280. 2800 a5=36
  281. 2810 a4=1
  282. 2820 goto2840
  283. 2830 i=5:i0=5:i1=8
  284. 2840 nexti1
  285. 2850 nexti0,i
  286. 2860 return
  287. 2870 **********************
  288. 2880 *** gene verbinden ***
  289. 2890 **********************
  290. 2900 a=zu(s,a1,0,0)
  291. 2910 a0=zu(s,a1,1,0)
  292. 2920 a3=zu(s,a1,0,1)
  293. 2930 a4=zu(s,a1,1,1)
  294. 2940 ifa=a3then3070
  295. 2950 a5=aand240
  296. 2960 a6=a3and240
  297. 2970 ifa5=a6then3010
  298. 2980 ifa6<a5thena=(aand15)ora6
  299. 2990 ifa>15then3010
  300. 3000 ifa5+a6=48thena=aor64
  301. 3010 a5=aand15
  302. 3020 a6=a3and15
  303. 3030 ifa5=a6then3070
  304. 3040 ifa6<a5thena=(aand240)ora6
  305. 3050 if(aand15)>0then3070
  306. 3060 ifa5+a6=3thena=aor4
  307. 3070 a5=0
  308. 3080 ifa0+a4=0then3150
  309. 3090 a5=a0anda4
  310. 3100 ifa5>0then3140
  311. 3110 a5=(a0and1)or(a4and1)
  312. 3120 ifa5=0thena5=(a0and2)or(a4and2)
  313. 3130 ifa5=0thena5=(a0and4)or(a4and4)
  314. 3140 a0=a5
  315. 3150 a2=f(int(a/16))*16
  316. 3160 a3=f(aand15)
  317. 3170 ifa0=0thena3=a2/16
  318. 3180 a2=a2+a3
  319. 3190 pokesd+a1+a1-fi+12,248+a0
  320. 3200 pokesd+a1+a1-fi+8,a2
  321. 3210 return
  322. 3220 **********************
  323. 3230 *** anzeigen zucht ***
  324. 3240 **********************
  325. 3250 ifr=1then3320
  326. 3260 a=r-1
  327. 3270 ifa>5thena=5
  328. 3280 fora1=0to4*a-1
  329. 3290 fi=a1and3
  330. 3300 gosub2900
  331. 3310 next
  332. 3320 return
  333. 3330 *********************
  334. 3340 *** bild aufbauen ***
  335. 3350 *********************
  336. 3360 fori=0to39
  337. 3370 pokef+i,6
  338. 3380 pokeb+i,99
  339. 3390 pokef+i+720,6
  340. 3400 pokeb+i+720,99
  341. 3410 next
  342. 3420 fori=1toan
  343. 3430 a=800+8*(i-1)
  344. 3440 pokef+a,4
  345. 3450 pokeb+a,85
  346. 3460 forj=1to6
  347. 3470 pokef+a+j,4
  348. 3480 pokeb+a+j,64
  349. 3490 next
  350. 3500 pokef+a+7,4
  351. 3510 pokeb+a+7,73
  352. 3520 a=a+47
  353. 3530 forj=0to80step40
  354. 3540 pokef+a+j,4
  355. 3550 pokeb+a+j,66
  356. 3560 next
  357. 3570 a=a+120
  358. 3580 pokef+a,4
  359. 3590 pokeb+a,75
  360. 3600 forj=1to6
  361. 3610 pokef+a-j,4
  362. 3620 pokeb+a-j,64
  363. 3630 next
  364. 3640 a=a-7
  365. 3650 pokef+a,4
  366. 3660 pokeb+a,74
  367. 3670 forj=40to120step40
  368. 3680 pokef+a-j,4
  369. 3690 pokeb+a-j,66
  370. 3700 next
  371. 3710 a0=8*(i-1)+1
  372. 3720 pokeze,21:pokesp,a0:syscu
  373. 3730 printchr$(30)e$(ms(i,0))
  374. 3740 a$=".....0"
  375. 3750 pokeze,23:pokesp,a0:syscu
  376. 3760 printchr$(158)a$
  377. 3770 next
  378. 3780 fori=sdtosd+55
  379. 3790 pokei,0
  380. 3800 next
  381. 3810 fori=0to7
  382. 3820 pokesd+i,17*f(iand3)
  383. 3830 ifi>3thenpokesd+i,248
  384. 3840 next
  385. 3850 fori=0to3
  386. 3860 zu(0,i,0,0)=17*i
  387. 3870 zu(0,i,0,1)=17*i
  388. 3880 next
  389. 3890 fori=1to3
  390. 3900 a=int(rnd(1)*4)
  391. 3910 ifzu(0,a,1,0)>0then3900
  392. 3920 ifi=3theni=4
  393. 3930 zu(0,a,1,0)=i
  394. 3940 zu(0,a,1,1)=i
  395. 3950 next
  396. 3960 fori=0to3
  397. 3970 pokev+2*i,(24+56*i)and255
  398. 3980 pokev+2*(i+4),(24+56*i)and255
  399. 3990 next
  400. 4000 pokev+16,0
  401. 4010 pokev+27,0
  402. 4020 pokev+29,255
  403. 4030 pokev+21,255
  404. 4040 fori=2040to2047
  405. 4050 pokei,248
  406. 4060 next
  407. 4070 sys49152
  408. 4080 return
  409. 4090 *********************
  410. 4100 *** laden sprites ***
  411. 4110 *********************
  412. 4120 a=peek(61)+256*peek(62)
  413. 4130 poke65,aand255
  414. 4140 poke66,int(a/256)
  415. 4150 fori=15872toi+63
  416. 4160 reada:pokei,a
  417. 4170 next
  418. 4180 return
  419. 4190 data0,0,0,0,0,0,0,120
  420. 4200 data0,1,240,0,3,224,0,15
  421. 4210 data248,1,63,254,7,119,255,142
  422. 4220 data255,255,252,127,255,195,255,255
  423. 4230 data252,63,255,142,15,254,7,3
  424. 4240 data248,1,1,192,0,1,192,0
  425. 4250 data0,112,0,0,60,0,0,6
  426. 4260 data0,0,0,0,0,0,0,0
  427. 4270 *******************
  428. 4280 *** anfangsbild ***
  429. 4290 *******************
  430. 4300 pokeze,12:pokesp,12:syscu
  431. 4310 printchr$(153)"wieviele spieler?"
  432. 4320 geta$
  433. 4330 if(a$<"1")or(a$>"5")then4320
  434. 4340 an=val(a$)
  435. 4350 pokeze,14:pokesp,12:syscu
  436. 4360 printan"spieler - ok?"
  437. 4370 geta$:ifa$="j"then4410
  438. 4380 ifa$<>"n"then4370
  439. 4390 pokezl,14:syslo
  440. 4400 goto4320
  441. 4410 printchr$(147)chr$(30)
  442. 4420 printtab(12)"bitte eingeben:"
  443. 4430 print
  444. 4440 printtab(12)"1 = "e$(1)
  445. 4450 printtab(12)"2 = "e$(2)
  446. 4460 printtab(12)"3 = "e$(3)
  447. 4470 printchr$(156)
  448. 4480 fori=1toan
  449. 4490 printtab(12)"spieler"i" = ";
  450. 4500 pokepu,0
  451. 4510 geta$
  452. 4520 if(a$<"1")or(a$>"3")then4510
  453. 4530 ms(i,0)=val(a$)
  454. 4540 printe$(ms(i,0))
  455. 4550 next
  456. 4560 printchr$(30)"in ordnung?"
  457. 4570 geta$:ifa$="j"then4600
  458. 4580 ifa$="n"then4410
  459. 4590 goto4570
  460. 4600 printchr$(147)
  461. 4610 a=rnd(-ti)
  462. 4620 return
  463. 4630 *************
  464. 4640 *** titel ***
  465. 4650 *************
  466. 4660 gosub4960
  467. 4670 printchr$(147)
  468. 4680 sys49152
  469. 4690 a=usr(8)
  470. 4700 poke2040,13
  471. 4710 poke53280,0
  472. 4720 poke53281,0
  473. 4730 pokev+39,1
  474. 4740 pokev+23,1:pokev+29,1
  475. 4750 a$="":a0$=""
  476. 4760 fori=1to14
  477. 4770 a$=a$+chr$(32)
  478. 4780 next
  479. 4790 fa=14:r=128
  480. 4800 forz1=1to3
  481. 4810 z=z1:gosub5630
  482. 4820 nextz1
  483. 4830 a$="fischzucht"
  484. 4840 z=2
  485. 4850 gosub5630
  486. 4860 pokeze,6:pokesp,12:syscu
  487. 4870 print"ein programm von"
  488. 4880 a$="guenter kramer"
  489. 4890 z=8:fa=3:a0$="s":r=0
  490. 4900 pokev+23,0:pokev+29,0
  491. 4910 gosub5630
  492. 4920 return
  493. 4930 ************************
  494. 4940 *** variable + werte ***
  495. 4950 ************************
  496. 4960 v=53248        :rem vic
  497. 4970 t=54272        :rem sid
  498. 4980 n=51200        :rem zeichen
  499. 4990 f=55296        :rem farbram
  500. 5000 b=1024         :rem bildram
  501. 5010 cu=58640       :rem cursor
  502. 5020 ze=214         :rem cu-zeile
  503. 5030 sp=211         :rem cu-spalte
  504. 5040 pu=198         :rem tastatur
  505. 5050 zl=781         :rem loesch ze
  506. 5060 lo=59903       :rem sys zl
  507. 5070 sd=50176       :rem spritedaten
  508. 5080 dime$(3)       :rem eingabe
  509. 5090 dimms(5,3)     :rem spieler
  510. 5100 dimf(4)        :rem farben
  511. 5110 dimmu(4,4,7)   :rem wert
  512. 5120 dimzu(5,23,1,1):rem zuchtgene
  513. 5130 fori=0to4
  514. 5140 forj=0to4
  515. 5150 ifi=jthen5200
  516. 5160 a=(i+1)*(i+1)+2*(j+1)*(j+1)
  517. 5170 fork=1to7
  518. 5180 mu(i,j,k)=(50+k*k)*(a+k)
  519. 5190 next
  520. 5200 nextj,i
  521. 5210 e$(1)="joy 1"
  522. 5220 e$(2)="joy 2"
  523. 5230 e$(3)="taste"
  524. 5240 f(0)=1
  525. 5250 f(1)=7
  526. 5260 f(2)=2
  527. 5270 f(3)=6
  528. 5280 f(4)=14
  529. 5290 return
  530. 5300 ************
  531. 5310 *** (NULL)ng ***
  532. 5320 ************
  533. 5330 gosub5440
  534. 5340 poket+1,8:poket,180:poket+5,12
  535. 5350 poket+8,15:poket+7,247
  536. 5360 poket+15,13:poket+14,10
  537. 5370 poket+12,12:poket+19,12
  538. 5380 poket+24,15:poket+4,23
  539. 5390 poket+11,23:poket+18,23
  540. 5400 return
  541. 5410 ********************
  542. 5420 *** loeschen sid ***
  543. 5430 ********************
  544. 5440 fort0=0to24:poket+t0,0:nextt0
  545. 5450 return
  546. 5460 **************
  547. 5470 *** heulen ***
  548. 5480 **************
  549. 5490 gosub5440
  550. 5500 poket,t1-256*int(t1/256)
  551. 5510 poket+1,int(t1/256):poket+6,240
  552. 5520 poket+24,15:poket+4,33:return
  553. 5530 **************
  554. 5540 *** schuss ***
  555. 5550 **************
  556. 5560 gosub5440
  557. 5570 poket+5,9:poket+1,21
  558. 5580 poket+24,15:poket+4,129
  559. 5590 return
  560. 5600 **********************
  561. 5610 *** sprites laufen ***
  562. 5620 **********************
  563. 5630 y=z*8+50:s=13*64
  564. 5640 z=19+b+z*40-len(a$)/2
  565. 5650 fori=1tolen(a$)
  566. 5660 pokev+1,230
  567. 5670 pokev,0:t1=34*256
  568. 5680 a=asc(mid$(a$,i,1))
  569. 5690 ifa=32then5870
  570. 5700 ifa>63thena=a-64
  571. 5710 ifa0$="s"then5860
  572. 5720 a0=168-(4*(len(a$)+1and254))+i*8
  573. 5730 forj=stos+62:pokej,0:nextj
  574. 5740 forj=0to7
  575. 5750 pokes+3*j+1,peek(n+j+a*8)
  576. 5760 nextj:t1=0:gosub5490
  577. 5770 pokev+21,1
  578. 5780 forj=0toa0step4
  579. 5790 pokev,jand255
  580. 5800 pokev+16,int(j/256)
  581. 5810 poket+1,jand255:nextj
  582. 5820 forj=230toystep-2
  583. 5830 pokev+1,j
  584. 5840 poket+1,j-34
  585. 5850 nextj
  586. 5860 gosub5560
  587. 5870 pokez+i+f-b,fa
  588. 5880 pokez+i,a+r
  589. 5890 pokev+21,0
  590. 5900 nexti
  591. 5910 return
  592.