home *** CD-ROM | disk | FTP | other *** search
/ Profi Club / Profi_Club_5_1992_-_de.d64 / lotterie (.txt) < prev    next >
Commodore BASIC  |  2023-02-26  |  10KB  |  372 lines

  1. 10 rem lotterie ===============c64
  2. 20 rem (p) commodore disc
  3. 30 rem ===========================
  4. 40 rem (c) by g. kramer       v3.5
  5. 50 rem        emsdetten
  6. 60 rem
  7. 70 rem        a. mittelmeyer  v2.0
  8. 80 rem c64
  9. 90 rem ===========================
  10. 100 poke646,0:gosub2240:rem definitionen
  11. 110 gosub2980:rem spielregel
  12. 120 gosub2470:rem abfrage am anfang
  13. 130 gosub2730:rem anfangsbild aufbauen
  14. 140 gosub200:rem eingeben der einsaetze
  15. 150 gosub690:rem spiel laeuft
  16. 160 goto130
  17. 170 ------------------------------
  18. 180 eingeben der einsaetze
  19. 190 ------------------------------
  20. 200 fori=0to31:ka(i)=0:nexti
  21. 210 fori=1to8:sz(i,2)=0:sz(i,1)=1
  22. 220 ifi-int(i/2)*2=0thensz(i,1)=25
  23. 230 nexti:vk=0:cs=15
  24. 240 fori=1toan:z=sz(i,2):c=sz(i,1)
  25. 250 cz=4:printchr$(30);:gosub1370
  26. 260 printna$(i)" ":forj=1to99:nextj
  27. 270 cz=4:getz$:ifz$<>""then310
  28. 280 gosub1370:printchr$(18)na$(i)"[160]"
  29. 290 printchr$(146):ifvk=32then530
  30. 300 forj=1to99:nextj:goto250
  31. 310 forj=175to184:pokebi+j,160:nextj
  32. 320 ifz$=chr$(133)then590
  33. 330 ifz$="+"then530
  34. 340 ifz$<"0"orz$>"9"then270
  35. 350 j=1:b=val(z$):ifb=0thenb=10
  36. 360 cz=3+int((i-1)/2)*24/int((an+1)/2)
  37. 370 ifc=13thenc=1:z=z+3:ifan>6then530
  38. 380 ifc=37thenc=25:z=z+3:ifan>6then530
  39. 390 cz=cz+z:cs=c:ifz=6andan>4then530
  40. 400 ifz=9andan>2then530
  41. 410 vk=vk+1:ifvk>32then530
  42. 420 gosub1540:gosub1370
  43. 430 ka(a)=b*10+i+cp:printk0$
  44. 440 gosub1370:printz$
  45. 450 gosub1370:printz1$;
  46. 460 ifz>0andan>4then500
  47. 470 gosub1370:printk1$;
  48. 480 ifan>6orz>3andan>2then500
  49. 490 gosub1370:printk2$;
  50. 500 ge(i)=ge(i)+b*ei:gb=gb+b*ei
  51. 510 gs(i)=gs(i)-b*ei:gosub1680
  52. 520 c=c+2:cs=15:goto250
  53. 530 sz(i,1)=c:sz(i,2)=z:cs=15:nexti
  54. 540 ifvk<32then240
  55. 550 z2$=""
  56. 560 fori=1to10
  57. 570 z2$=chr$(32)+z2$
  58. 580 next
  59. 590 z$="f1 = spiel"
  60. 600 cz=4:printchr$(30);:gosub1370
  61. 610 printz$:forj=1to99:nextj:cz=cz-1
  62. 620 gosub1370:printcr$z2$co$
  63. 630 getz1$:ifz1$=chr$(133)thenreturn
  64. 640 forj=1to50:nextj
  65. 650 cz=cz-1:goto600
  66. 660 ------------------------------
  67. 670 spiel laeuft
  68. 680 ------------------------------
  69. 690 j=999999:cz=3:fori=1to4:aa=1.1
  70. 700 gosub1540
  71. 710 z2$=z$:z3$=z1$
  72. 720 b=peek(646)+1
  73. 730 c=a:gosub1540:cs=16:gosub1370
  74. 740 fb=peek(646)+1
  75. 750 poke646,b-1
  76. 760 printk0$;
  77. 770 poke646,fb-1
  78. 780 printk0$
  79. 790 gosub1370
  80. 800 poke646,b-1
  81. 810 printz2$;
  82. 820 poke646,fb-1
  83. 830 printz$
  84. 840 gosub1370
  85. 850 poke646,b-1
  86. 860 printz3$;
  87. 870 poke646,fb-1
  88. 880 printz1$
  89. 890 gosub1370
  90. 900 poke646,b-1
  91. 910 printk1$;
  92. 920 poke646,fb-1
  93. 930 printk1$
  94. 940 gosub1370
  95. 950 poke646,b-1
  96. 960 printk2$;
  97. 970 poke646,fb-1
  98. 980 printk2$
  99. 990 b=ka(a):ka(a)=j:z=cz
  100. 1000 a=ka(c):ka(c)=j:gosub1950
  101. 1010 getz$:ifz$<>chr$(133)then1010
  102. 1020 cz=z-2:nexti
  103. 1030 cs=18:gosub1540:gosub1370
  104. 1040 printk0$:gosub1370
  105. 1050 printz$:gosub1370
  106. 1060 printz1$:gosub1370
  107. 1070 printk1$:gosub1370
  108. 1080 printk2$:a=ka(a):i=10
  109. 1090 gosub1950
  110. 1100 cz=24:cs=15:gosub1370
  111. 1110 printchr$(30)cr$" f2 = ende";
  112. 1120 cz=20:gosub1370
  113. 1130 printchr$(150)cr$"f1=weiter "
  114. 1140 getz$:ifz$=chr$(133)then1210
  115. 1150 ifz$=chr$(137)thenprintcc$:goto1230
  116. 1160 fori=1to99:nexti:cz=20:gosub1370
  117. 1170 printchr$(30)cr$" f1=weiter"
  118. 1180 cz=24:cs=15:gosub1370
  119. 1190 printchr$(150)cr$"f2 = ende ";
  120. 1200 fori=1to99:nexti:goto1100
  121. 1210 fori=1toan:gw(i)=0:ge(i)=0:nexti
  122. 1220 vk=0:return
  123. 1230 printtab(12)"l o t t e r i e"c1$
  124. 1240 printtab(13)"endabrechnung"c1$
  125. 1250 fori=1toan:a=gs(i):gosub1420
  126. 1260 poke646,0
  127. 1270 ifgs(i)<0thenpoke646,10
  128. 1280 printtab(11)na$(i)z$c1$
  129. 1290 nexti:a=gb:gosub1420
  130. 1300 poke646,0
  131. 1310 ifgb<0thenpoke646,10
  132. 1320 printtab(11)"bank     "z$;
  133. 1330 end
  134. 1340 -----------------------------
  135. 1350 cursor setzen
  136. 1360 -----------------------------
  137. 1370 poke781,cz:poke782,cs:syscu
  138. 1380 cp=100*(cz*40+cs):cz=cz+1:return
  139. 1390 -----------------------------
  140. 1400 betragsfelder aufbereiten
  141. 1410 -----------------------------
  142. 1420 ifa<0thena=a*-1
  143. 1430 z$=str$(int(a/100))
  144. 1440 z$=right$(z$,len(z$)-1)
  145. 1450 z$=right$("    "+z$,5)
  146. 1460 ifright$(str$(a),2)<"10"then1490
  147. 1470 z$=z$+","+right$(str$(a),2)
  148. 1480 return
  149. 1490 z$=z$+",0"+right$(str$(a),1)
  150. 1500 return
  151. 1510 -----------------------------
  152. 1520 karte setzen
  153. 1530 -----------------------------
  154. 1540 a=int(rnd(a)*32)
  155. 1550 ifa=aathen1570
  156. 1560 ifka(a)<jthen1590
  157. 1570 a=a+1:ifa>31thena=0
  158. 1580 goto1550
  159. 1590 aa=a:fb=int(a/8):z$=fa$(fb)
  160. 1600 z1$=bi$(a-fb*8)
  161. 1610 z$=chr$(98)+z$+chr$(32)+chr$(98)
  162. 1620 z1$=chr$(98)+z1$+right$(z$,2)
  163. 1630 iffb>1thenpoke646,10:return
  164. 1640 poke646,0:return
  165. 1650 -----------------------------
  166. 1660 betraege ins bild setzen
  167. 1670 -----------------------------
  168. 1680 i=i-1:k=int((an+1)/2):fb=144
  169. 1690 cs=0:ifi-int(i/2)*2=1thencs=25
  170. 1700 cz=1+24/k*(int(i/2))
  171. 1710 gosub1370:a=ge(i+1):gosub1420
  172. 1720 a$=left$(na$(i+1)+right$(z$,6),14)
  173. 1730 poke646,0:printa$
  174. 1740 a$=right$(z$,1)
  175. 1750 pokebi+40*cz+cs-26,asc(a$)
  176. 1760 a=gs(i+1):ifa<0thenpoke646,10
  177. 1770 gosub1420:z1$=z$
  178. 1780 a=gw(i+1):gosub1420:gosub1370
  179. 1790 a$=z1$+chr$(144)
  180. 1800 a$=left$(a$+right$(z$,7),15)
  181. 1810 printa$
  182. 1820 a$=right$(z$,1)
  183. 1830 pokebi+40*cz+cs-26,asc(a$)
  184. 1840 a=gb:poke646,0
  185. 1850 ifa<0thenpoke646,10
  186. 1860 gosub1420:cz=1:cs=16:gosub1370
  187. 1870 printz$:poke646,0:i=i+1
  188. 1880 a=32-vk:z$=right$(str$(a),2)
  189. 1890 pokebi+979,asc(left$(z$,1))
  190. 1900 pokebi+980,asc(right$(z$,1))
  191. 1910 return
  192. 1920 -----------------------------
  193. 1930 gewinne speichern
  194. 1940 -----------------------------
  195. 1950 d=i:ifa=0then1970
  196. 1960 gosub2150
  197. 1970 ifb=0then2000
  198. 1980 ifd=10then2000
  199. 1990 a=b:gosub2150
  200. 2000 i=d:return
  201. 2010 -----------------------------
  202. 2020 gewinnkarte umschalten
  203. 2030 -----------------------------
  204. 2040 c=c+41+bi
  205. 2050 ifpeek(c)=66orpeek(c)=32thenc=c-1
  206. 2060 fori=1to10+d*3
  207. 2070 pokec,peek(c)and127
  208. 2080 c=c+40:pokec,peek(c)and127
  209. 2090 c=c-40:pokec,peek(c)or128
  210. 2100 c=c+40:pokec,peek(c)or128
  211. 2110 c=c-40:nexti:return
  212. 2120 -----------------------------
  213. 2130 gewinn verrechnen
  214. 2140 -----------------------------
  215. 2150 c=int(a/100):a=a-c*100:gosub2040
  216. 2160 c=int(a/10):i=a-c*10
  217. 2170 ifc=0thenc=10
  218. 2180 a=c:gw(i)=gw(i)+a*ei*d
  219. 2190 gs(i)=gs(i)+a*ei*d
  220. 2200 gb=gb-a*ei*d:gosub1680:return
  221. 2210 -----------------------------
  222. 2220 definitionen
  223. 2230 -----------------------------
  224. 2240 bi=1024:fa=55296:cu=65520
  225. 2250 dimka(31),na$(8),fa$(3),bi$(7)
  226. 2260 dimgs(8),ge(8),gw(8),sz(8,2)
  227. 2270 c1$=chr$(17):c2$=chr$(145)
  228. 2280 c3$=chr$(29):c4$=chr$(157)
  229. 2290 ch$=chr$(19):cc$=chr$(147)
  230. 2300 fa$(0)="[216]":fa$(1)="[193]"
  231. 2310 fa$(2)="[211]":fa$(3)="[218]"
  232. 2320 bi$(0)="7":bi$(1)="8"
  233. 2330 bi$(2)="9":bi$(3)="x"
  234. 2340 bi$(4)="b":bi$(5)="d"
  235. 2350 bi$(6)="k":bi$(7)="a"
  236. 2360 cr$=chr$(18):co$=chr$(146)
  237. 2370 poke53281,1:poke53280,0
  238. 2380 k0$=chr$(117)+chr$(96)+chr$(96)+chr$(105)
  239. 2390 k1$=chr$(98)+chr$(32)+chr$(32)+chr$(98)
  240. 2400 k2$=chr$(106)+chr$(96)+chr$(96)+chr$(107)
  241. 2430 return
  242. 2440 -----------------------------
  243. 2450 abfrage am anfang
  244. 2460 -----------------------------
  245. 2470 printcc$tab(11)"l o t t e r i e"
  246. 2480 printc1$c1$c1$
  247. 2490 printtab(10)"wieviele spieler ?"
  248. 2500 printc1$c1$
  249. 2510 a0$="*"
  250. 2520 fori=1to8
  251. 2530 a0$=chr$(32)+a0$
  252. 2540 next
  253. 2550 geta$:an=val(a$)
  254. 2560 ifan<1oran>8then2550
  255. 2570 fori=1toan:a$=str$(i)+str$(i)
  256. 2580 printi". name";:inputa$
  257. 2590 na$(i)=left$(a$+a0$,9)
  258. 2600 nexti:printc1$
  259. 2610 printtab(10)"einsatz dm 0,01 (1)"
  260. 2620 printtab(12)"oder dm 0,10 (2)"
  261. 2630 printtab(12)"oder dm 1,00 (3)"
  262. 2640 geta$:ei=val(a$)
  263. 2650 ifei=1then2690
  264. 2660 ifei=2thenei=10:goto2690
  265. 2670 ifei=3thenei=100:goto2690
  266. 2680 goto2640
  267. 2690 return
  268. 2700 -----------------------------
  269. 2710 anfangsbild
  270. 2720 -----------------------------
  271. 2730 z$=""
  272. 2740 fori=1to10
  273. 2750 z$=z$+chr$(32)
  274. 2760 next
  275. 2770 printcc$;
  276. 2780 printchr$(144)chr$(18)z$z$z$z$;
  277. 2790 z1$=z$+left$(z$,5)
  278. 2800 z1$=z1$+chr$(30)+z$+chr$(144)+z1$
  279. 2810 fori=1to23:printz1$;:nexti
  280. 2820 fori=960to999
  281. 2830 pokebi+i,160:pokefa+i,0
  282. 2840 next
  283. 2850 cz=0:cs=12:gosub1370
  284. 2860 print" l o t t e r i e "
  285. 2870 j=int((an+1)/2):fori=0toan-1:cs=0
  286. 2880 i=i+1:gosub1680:i=i-1:nexti
  287. 2890 a=ei:gosub1420
  288. 2900 cz=21:cs=16:gosub1370
  289. 2910 print"einsatz=":gosub1370
  290. 2920 printright$(z$,4)+"-   ":a=ei*10
  291. 2930 gosub1370:gosub1420
  292. 2940 printz$:return
  293. 2950 -----------------------------
  294. 2960 spielregel
  295. 2970 -----------------------------
  296. 2980 printcc$tab(12)"spielregel?(j/n)"
  297. 2990 getz$:ifz$="n"thenreturn
  298. 3000 ifz$<>"j"then2990
  299. 3010 printcc$tab(12)" l o t t e r i e "chr$(17)
  300. 3020 print"zuerst geben sie die anzahl der spieler"
  301. 3030 print"ein (1-8). anschliessend die namen."
  302. 3040 print"sie koennen bis neun stellen eingeben. "chr$(17)
  303. 3050 print"darauf geben sie eine ziffer (1-3) ein,"
  304. 3060 print"um den mindesteinsatz festzulegen.  sie"
  305. 3070 print"koennen spaeter bis zu 10-fach setzen. "
  306. 3080 getz$:ifz$=""then3080
  307. 3090 printcc$tab(12)" l o t t e r i e "chr$(17)
  308. 3100 print"jetzt koennen die spieler ihren einsatz"
  309. 3110 print"machen. der spieler, dessen name blinkt"
  310. 3120 print"drueckt eine der tasten 1 - 0 und kauft"
  311. 3130 print"damit eine karte aus einem satz von  32"
  312. 3140 print"karten. der einsatz ist je nach der ge-"
  313. 3150 print"drueckten taste einfach(1) bis zehnfach"
  314. 3160 print"(0). je nach einsatz ist nachher auch  "
  315. 3170 print"der gewinn ein- bis zehnfach.          "
  316. 3180 print"sie koennen weitere karten kaufen,  bis"
  317. 3190 print"ihr spielfeld voll ist. doch denken sie"
  318. 3200 print"auch daran, dass nach ihnen die anderen"
  319. 3210 print"spieler auch noch ihre einsaetze taeti-"
  320. 3220 print"gen wollen. wenn sie keine karten  mehr"
  321. 3230 print"kaufen wollen, geben sie + ein. darauf "
  322. 3240 print"ist der naechste dran.wenn alle spieler"
  323. 3250 print"ihre einsaetze getaetigt haben, aber es"
  324. 3260 print"sind noch nicht  alle  karten verkauft,"
  325. 3270 print"koennen die mitspieler noch nachkaufen."
  326. 3280 print"sind alle 32 karten verkauft, oder wird"
  327. 3290 print"die  f1-taste gedrueckt, koennen  keine"
  328. 3300 print"karten mehr gekauft werden - eine runde"
  329. 3310 print"beginnt."
  330. 3320 getz$:ifz$=""then3320
  331. 3330 printcc$tab(12)" l o t t e r i e "chr$(17)
  332. 3340 print"betaetigen sie nun die f1-taste."
  333. 3350 print"nun werden aus einem zweiten kartensatz"
  334. 3360 print"die ersten zwei karten aufgedeckt.     "
  335. 3370 print"wer eine der beiden karten gesetzt hat,"
  336. 3380 print"erhaelt seinen einsatz (1-10) zurueck. "
  337. 3390 print"nach weiterem druecken der f1-taste er-"
  338. 3400 print"scheinen weitere 2 karten, bis vier mal"
  339. 3410 print"zwei gewinne ausgezahlt wurden. der ge-"
  340. 3420 print"winn errechnet sich jeweils aus einsatz"
  341. 3430 print"mal reihennummer  fuer die entsprechen-"
  342. 3440 print"de karte. in  der dritten reihe also 3-"
  343. 3450 print"facher einsatz. zuletzt wird mit f1 der"
  344. 3460 print"haupgewinn gezogen. dafuer wird der 10-"
  345. 3470 print"fache einsatz ausgezahlt."
  346. 3480 print"nun ist eine runde zu ende. die naech- "
  347. 3490 print"ste runde beginnt, wenn sie f1 druecken"
  348. 3500 getz$:ifz$=""then3500
  349. 3510 printcc$tab(12)" l o t t e r i e "chr$(17)
  350. 3520 print"noch ein paar erklaerungen zum bild:   "chr$(17)
  351. 3530 print"in jedem feld erscheint links oben  der"
  352. 3540 print"anfangs eingegebene name. wurde jedoch "
  353. 3550 print"kein name eingegeben,sehen sie die num-"
  354. 3560 print"mer des spielers zweimal. daneben zeigt"
  355. 3570 print"der bildschirm die hoehe ihres gesamten"
  356. 3580 print"einsatzes in der laufenden runde.      "
  357. 3590 print"in der naechsten reihe wird rechts  der"
  358. 3600 print"gewinn in der laufenden runde angezeigt"
  359. 3610 print"links wird schwarz der von der bank zu-"
  360. 3620 print"zahlende gewinn angezeigt. ein rot  an-"
  361. 3630 print"gezeigter betrag ist an die bank zu zah"
  362. 3640 print"len."chr$(17)
  363. 3650 print"der betrag im mittleren spielfeld oben "
  364. 3660 print"ist gewinn (schwarz) oder verlust (rot)"
  365. 3670 print"der bank. unter dem bankfeld wird ange-"
  366. 3680 print"zeigt, wieviele karten noch zu  verkau-"
  367. 3690 print"en sind - und nun viel spass beim spiel"chr$(17)
  368. 3700 print"alles in ordnung ?"
  369. 3710 getz$:ifz$=""then3710
  370. 3720 return
  371. 3730 rem =programmende============
  372.