10 REM LOTTERIE ===============C64 20 REM (P) COMMODORE DISC 30 REM =========================== 40 REM (C) BY G. KRAMER V3.5 50 REM EMSDETTEN 60 REM 70 REM A. MITTELMEYER V2.0 80 REM C64 90 REM =========================== 100 POKE646,0:GOSUB2240:REM DEFINITIONEN 110 GOSUB2980:REM SPIELREGEL 120 GOSUB2470:REM ABFRAGE AM ANFANG 130 GOSUB2730:REM ANFANGSBILD AUFBAUEN 140 GOSUB200:REM EINGEBEN DER EINSAETZE 150 GOSUB690:REM SPIEL LAEUFT 160 GOTO130 170 ------------------------------ 180 EINGEBEN DER EINSAETZE 190 ------------------------------ 200 FORI=0TO31:KA(I)=0:NEXTI 210 FORI=1TO8:SZ(I,2)=0:SZ(I,1)=1 220 IFI-INT(I/2)*2=0THENSZ(I,1)=25 230 NEXTI:VK=0:CS=15 240 FORI=1TOAN:Z=SZ(I,2):C=SZ(I,1) 250 CZ=4:PRINTCHR$(30);:GOSUB1370 260 PRINTNA$(I)" ":FORJ=1TO99:NEXTJ 270 CZ=4:GETZ$:IFZ$<>""THEN310 280 GOSUB1370:PRINTCHR$(18)NA$(I)"[160]" 290 PRINTCHR$(146):IFVK=32THEN530 300 FORJ=1TO99:NEXTJ:GOTO250 310 FORJ=175TO184:POKEBI+J,160:NEXTJ 320 IFZ$=CHR$(133)THEN590 330 IFZ$="+"THEN530 340 IFZ$<"0"ORZ$>"9"THEN270 350 J=1:B=VAL(Z$):IFB=0THENB=10 360 CZ=3+INT((I-1)/2)*24/INT((AN+1)/2) 370 IFC=13THENC=1:Z=Z+3:IFAN>6THEN530 380 IFC=37THENC=25:Z=Z+3:IFAN>6THEN530 390 CZ=CZ+Z:CS=C:IFZ=6ANDAN>4THEN530 400 IFZ=9ANDAN>2THEN530 410 VK=VK+1:IFVK>32THEN530 420 GOSUB1540:GOSUB1370 430 KA(A)=B*10+I+CP:PRINTK0$ 440 GOSUB1370:PRINTZ$ 450 GOSUB1370:PRINTZ1$; 460 IFZ>0ANDAN>4THEN500 470 GOSUB1370:PRINTK1$; 480 IFAN>6ORZ>3ANDAN>2THEN500 490 GOSUB1370:PRINTK2$; 500 GE(I)=GE(I)+B*EI:GB=GB+B*EI 510 GS(I)=GS(I)-B*EI:GOSUB1680 520 C=C+2:CS=15:GOTO250 530 SZ(I,1)=C:SZ(I,2)=Z:CS=15:NEXTI 540 IFVK<32THEN240 550 Z2$="" 560 FORI=1TO10 570 Z2$=CHR$(32)+Z2$ 580 NEXT 590 Z$="F1 = SPIEL" 600 CZ=4:PRINTCHR$(30);:GOSUB1370 610 PRINTZ$:FORJ=1TO99:NEXTJ:CZ=CZ-1 620 GOSUB1370:PRINTCR$Z2$CO$ 630 GETZ1$:IFZ1$=CHR$(133)THENRETURN 640 FORJ=1TO50:NEXTJ 650 CZ=CZ-1:GOTO600 660 ------------------------------ 670 SPIEL LAEUFT 680 ------------------------------ 690 J=999999:CZ=3:FORI=1TO4:AA=1.1 700 GOSUB1540 710 Z2$=Z$:Z3$=Z1$ 720 B=PEEK(646)+1 730 C=A:GOSUB1540:CS=16:GOSUB1370 740 FB=PEEK(646)+1 750 POKE646,B-1 760 PRINTK0$; 770 POKE646,FB-1 780 PRINTK0$ 790 GOSUB1370 800 POKE646,B-1 810 PRINTZ2$; 820 POKE646,FB-1 830 PRINTZ$ 840 GOSUB1370 850 POKE646,B-1 860 PRINTZ3$; 870 POKE646,FB-1 880 PRINTZ1$ 890 GOSUB1370 900 POKE646,B-1 910 PRINTK1$; 920 POKE646,FB-1 930 PRINTK1$ 940 GOSUB1370 950 POKE646,B-1 960 PRINTK2$; 970 POKE646,FB-1 980 PRINTK2$ 990 B=KA(A):KA(A)=J:Z=CZ 1000 A=KA(C):KA(C)=J:GOSUB1950 1010 GETZ$:IFZ$<>CHR$(133)THEN1010 1020 CZ=Z-2:NEXTI 1030 CS=18:GOSUB1540:GOSUB1370 1040 PRINTK0$:GOSUB1370 1050 PRINTZ$:GOSUB1370 1060 PRINTZ1$:GOSUB1370 1070 PRINTK1$:GOSUB1370 1080 PRINTK2$:A=KA(A):I=10 1090 GOSUB1950 1100 CZ=24:CS=15:GOSUB1370 1110 PRINTCHR$(30)CR$" F2 = ENDE"; 1120 CZ=20:GOSUB1370 1130 PRINTCHR$(150)CR$"F1=WEITER " 1140 GETZ$:IFZ$=CHR$(133)THEN1210 1150 IFZ$=CHR$(137)THENPRINTCC$:GOTO1230 1160 FORI=1TO99:NEXTI:CZ=20:GOSUB1370 1170 PRINTCHR$(30)CR$" F1=WEITER" 1180 CZ=24:CS=15:GOSUB1370 1190 PRINTCHR$(150)CR$"F2 = ENDE "; 1200 FORI=1TO99:NEXTI:GOTO1100 1210 FORI=1TOAN:GW(I)=0:GE(I)=0:NEXTI 1220 VK=0:RETURN 1230 PRINTTAB(12)"L O T T E R I E"C1$ 1240 PRINTTAB(13)"ENDABRECHNUNG"C1$ 1250 FORI=1TOAN:A=GS(I):GOSUB1420 1260 POKE646,0 1270 IFGS(I)<0THENPOKE646,10 1280 PRINTTAB(11)NA$(I)Z$C1$ 1290 NEXTI:A=GB:GOSUB1420 1300 POKE646,0 1310 IFGB<0THENPOKE646,10 1320 PRINTTAB(11)"BANK "Z$; 1330 END 1340 ----------------------------- 1350 CURSOR SETZEN 1360 ----------------------------- 1370 POKE781,CZ:POKE782,CS:SYSCU 1380 CP=100*(CZ*40+CS):CZ=CZ+1:RETURN 1390 ----------------------------- 1400 BETRAGSFELDER AUFBEREITEN 1410 ----------------------------- 1420 IFA<0THENA=A*-1 1430 Z$=STR$(INT(A/100)) 1440 Z$=RIGHT$(Z$,LEN(Z$)-1) 1450 Z$=RIGHT$(" "+Z$,5) 1460 IFRIGHT$(STR$(A),2)<"10"THEN1490 1470 Z$=Z$+","+RIGHT$(STR$(A),2) 1480 RETURN 1490 Z$=Z$+",0"+RIGHT$(STR$(A),1) 1500 RETURN 1510 ----------------------------- 1520 KARTE SETZEN 1530 ----------------------------- 1540 A=INT(RND(A)*32) 1550 IFA=AATHEN1570 1560 IFKA(A)31THENA=0 1580 GOTO1550 1590 AA=A:FB=INT(A/8):Z$=FA$(FB) 1600 Z1$=BI$(A-FB*8) 1610 Z$=CHR$(98)+Z$+CHR$(32)+CHR$(98) 1620 Z1$=CHR$(98)+Z1$+RIGHT$(Z$,2) 1630 IFFB>1THENPOKE646,10:RETURN 1640 POKE646,0:RETURN 1650 ----------------------------- 1660 BETRAEGE INS BILD SETZEN 1670 ----------------------------- 1680 I=I-1:K=INT((AN+1)/2):FB=144 1690 CS=0:IFI-INT(I/2)*2=1THENCS=25 1700 CZ=1+24/K*(INT(I/2)) 1710 GOSUB1370:A=GE(I+1):GOSUB1420 1720 A$=LEFT$(NA$(I+1)+RIGHT$(Z$,6),14) 1730 POKE646,0:PRINTA$ 1740 A$=RIGHT$(Z$,1) 1750 POKEBI+40*CZ+CS-26,ASC(A$) 1760 A=GS(I+1):IFA<0THENPOKE646,10 1770 GOSUB1420:Z1$=Z$ 1780 A=GW(I+1):GOSUB1420:GOSUB1370 1790 A$=Z1$+CHR$(144) 1800 A$=LEFT$(A$+RIGHT$(Z$,7),15) 1810 PRINTA$ 1820 A$=RIGHT$(Z$,1) 1830 POKEBI+40*CZ+CS-26,ASC(A$) 1840 A=GB:POKE646,0 1850 IFA<0THENPOKE646,10 1860 GOSUB1420:CZ=1:CS=16:GOSUB1370 1870 PRINTZ$:POKE646,0:I=I+1 1880 A=32-VK:Z$=RIGHT$(STR$(A),2) 1890 POKEBI+979,ASC(LEFT$(Z$,1)) 1900 POKEBI+980,ASC(RIGHT$(Z$,1)) 1910 RETURN 1920 ----------------------------- 1930 GEWINNE SPEICHERN 1940 ----------------------------- 1950 D=I:IFA=0THEN1970 1960 GOSUB2150 1970 IFB=0THEN2000 1980 IFD=10THEN2000 1990 A=B:GOSUB2150 2000 I=D:RETURN 2010 ----------------------------- 2020 GEWINNKARTE UMSCHALTEN 2030 ----------------------------- 2040 C=C+41+BI 2050 IFPEEK(C)=66ORPEEK(C)=32THENC=C-1 2060 FORI=1TO10+D*3 2070 POKEC,PEEK(C)AND127 2080 C=C+40:POKEC,PEEK(C)AND127 2090 C=C-40:POKEC,PEEK(C)OR128 2100 C=C+40:POKEC,PEEK(C)OR128 2110 C=C-40:NEXTI:RETURN 2120 ----------------------------- 2130 GEWINN VERRECHNEN 2140 ----------------------------- 2150 C=INT(A/100):A=A-C*100:GOSUB2040 2160 C=INT(A/10):I=A-C*10 2170 IFC=0THENC=10 2180 A=C:GW(I)=GW(I)+A*EI*D 2190 GS(I)=GS(I)+A*EI*D 2200 GB=GB-A*EI*D:GOSUB1680:RETURN 2210 ----------------------------- 2220 DEFINITIONEN 2230 ----------------------------- 2240 BI=1024:FA=55296:CU=65520 2250 DIMKA(31),NA$(8),FA$(3),BI$(7) 2260 DIMGS(8),GE(8),GW(8),SZ(8,2) 2270 C1$=CHR$(17):C2$=CHR$(145) 2280 C3$=CHR$(29):C4$=CHR$(157) 2290 CH$=CHR$(19):CC$=CHR$(147) 2300 FA$(0)="[216]":FA$(1)="[193]" 2310 FA$(2)="[211]":FA$(3)="[218]" 2320 BI$(0)="7":BI$(1)="8" 2330 BI$(2)="9":BI$(3)="X" 2340 BI$(4)="B":BI$(5)="D" 2350 BI$(6)="K":BI$(7)="A" 2360 CR$=CHR$(18):CO$=CHR$(146) 2370 POKE53281,1:POKE53280,0 2380 K0$=CHR$(117)+CHR$(96)+CHR$(96)+CHR$(105) 2390 K1$=CHR$(98)+CHR$(32)+CHR$(32)+CHR$(98) 2400 K2$=CHR$(106)+CHR$(96)+CHR$(96)+CHR$(107) 2430 RETURN 2440 ----------------------------- 2450 ABFRAGE AM ANFANG 2460 ----------------------------- 2470 PRINTCC$TAB(11)"L O T T E R I E" 2480 PRINTC1$C1$C1$ 2490 PRINTTAB(10)"WIEVIELE SPIELER ?" 2500 PRINTC1$C1$ 2510 A0$="*" 2520 FORI=1TO8 2530 A0$=CHR$(32)+A0$ 2540 NEXT 2550 GETA$:AN=VAL(A$) 2560 IFAN<1ORAN>8THEN2550 2570 FORI=1TOAN:A$=STR$(I)+STR$(I) 2580 PRINTI". NAME";:INPUTA$ 2590 NA$(I)=LEFT$(A$+A0$,9) 2600 NEXTI:PRINTC1$ 2610 PRINTTAB(10)"EINSATZ DM 0,01 (1)" 2620 PRINTTAB(12)"ODER DM 0,10 (2)" 2630 PRINTTAB(12)"ODER DM 1,00 (3)" 2640 GETA$:EI=VAL(A$) 2650 IFEI=1THEN2690 2660 IFEI=2THENEI=10:GOTO2690 2670 IFEI=3THENEI=100:GOTO2690 2680 GOTO2640 2690 RETURN 2700 ----------------------------- 2710 ANFANGSBILD 2720 ----------------------------- 2730 Z$="" 2740 FORI=1TO10 2750 Z$=Z$+CHR$(32) 2760 NEXT 2770 PRINTCC$; 2780 PRINTCHR$(144)CHR$(18)Z$Z$Z$Z$; 2790 Z1$=Z$+LEFT$(Z$,5) 2800 Z1$=Z1$+CHR$(30)+Z$+CHR$(144)+Z1$ 2810 FORI=1TO23:PRINTZ1$;:NEXTI 2820 FORI=960TO999 2830 POKEBI+I,160:POKEFA+I,0 2840 NEXT 2850 CZ=0:CS=12:GOSUB1370 2860 PRINT" L O T T E R I E " 2870 J=INT((AN+1)/2):FORI=0TOAN-1:CS=0 2880 I=I+1:GOSUB1680:I=I-1:NEXTI 2890 A=EI:GOSUB1420 2900 CZ=21:CS=16:GOSUB1370 2910 PRINT"EINSATZ=":GOSUB1370 2920 PRINTRIGHT$(Z$,4)+"- ":A=EI*10 2930 GOSUB1370:GOSUB1420 2940 PRINTZ$:RETURN 2950 ----------------------------- 2960 SPIELREGEL 2970 ----------------------------- 2980 PRINTCC$TAB(12)"SPIELREGEL?(J/N)" 2990 GETZ$:IFZ$="N"THENRETURN 3000 IFZ$<>"J"THEN2990 3010 PRINTCC$TAB(12)" L O T T E R I E "CHR$(17) 3020 PRINT"ZUERST GEBEN SIE DIE ANZAHL DER SPIELER" 3030 PRINT"EIN (1-8). ANSCHLIESSEND DIE NAMEN." 3040 PRINT"SIE KOENNEN BIS NEUN STELLEN EINGEBEN. "CHR$(17) 3050 PRINT"DARAUF GEBEN SIE EINE ZIFFER (1-3) EIN," 3060 PRINT"UM DEN MINDESTEINSATZ FESTZULEGEN. SIE" 3070 PRINT"KOENNEN SPAETER BIS ZU 10-FACH SETZEN. " 3080 GETZ$:IFZ$=""THEN3080 3090 PRINTCC$TAB(12)" L O T T E R I E "CHR$(17) 3100 PRINT"JETZT KOENNEN DIE SPIELER IHREN EINSATZ" 3110 PRINT"MACHEN. DER SPIELER, DESSEN NAME BLINKT" 3120 PRINT"DRUECKT EINE DER TASTEN 1 - 0 UND KAUFT" 3130 PRINT"DAMIT EINE KARTE AUS EINEM SATZ VON 32" 3140 PRINT"KARTEN. DER EINSATZ IST JE NACH DER GE-" 3150 PRINT"DRUECKTEN TASTE EINFACH(1) BIS ZEHNFACH" 3160 PRINT"(0). JE NACH EINSATZ IST NACHHER AUCH " 3170 PRINT"DER GEWINN EIN- BIS ZEHNFACH. " 3180 PRINT"SIE KOENNEN WEITERE KARTEN KAUFEN, BIS" 3190 PRINT"IHR SPIELFELD VOLL IST. DOCH DENKEN SIE" 3200 PRINT"AUCH DARAN, DASS NACH IHNEN DIE ANDEREN" 3210 PRINT"SPIELER AUCH NOCH IHRE EINSAETZE TAETI-" 3220 PRINT"GEN WOLLEN. WENN SIE KEINE KARTEN MEHR" 3230 PRINT"KAUFEN WOLLEN, GEBEN SIE + EIN. DARAUF " 3240 PRINT"IST DER NAECHSTE DRAN.WENN ALLE SPIELER" 3250 PRINT"IHRE EINSAETZE GETAETIGT HABEN, ABER ES" 3260 PRINT"SIND NOCH NICHT ALLE KARTEN VERKAUFT," 3270 PRINT"KOENNEN DIE MITSPIELER NOCH NACHKAUFEN." 3280 PRINT"SIND ALLE 32 KARTEN VERKAUFT, ODER WIRD" 3290 PRINT"DIE F1-TASTE GEDRUECKT, KOENNEN KEINE" 3300 PRINT"KARTEN MEHR GEKAUFT WERDEN - EINE RUNDE" 3310 PRINT"BEGINNT." 3320 GETZ$:IFZ$=""THEN3320 3330 PRINTCC$TAB(12)" L O T T E R I E "CHR$(17) 3340 PRINT"BETAETIGEN SIE NUN DIE F1-TASTE." 3350 PRINT"NUN WERDEN AUS EINEM ZWEITEN KARTENSATZ" 3360 PRINT"DIE ERSTEN ZWEI KARTEN AUFGEDECKT. " 3370 PRINT"WER EINE DER BEIDEN KARTEN GESETZT HAT," 3380 PRINT"ERHAELT SEINEN EINSATZ (1-10) ZURUECK. " 3390 PRINT"NACH WEITEREM DRUECKEN DER F1-TASTE ER-" 3400 PRINT"SCHEINEN WEITERE 2 KARTEN, BIS VIER MAL" 3410 PRINT"ZWEI GEWINNE AUSGEZAHLT WURDEN. DER GE-" 3420 PRINT"WINN ERRECHNET SICH JEWEILS AUS EINSATZ" 3430 PRINT"MAL REIHENNUMMER FUER DIE ENTSPRECHEN-" 3440 PRINT"DE KARTE. IN DER DRITTEN REIHE ALSO 3-" 3450 PRINT"FACHER EINSATZ. ZULETZT WIRD MIT F1 DER" 3460 PRINT"HAUPGEWINN GEZOGEN. DAFUER WIRD DER 10-" 3470 PRINT"FACHE EINSATZ AUSGEZAHLT." 3480 PRINT"NUN IST EINE RUNDE ZU ENDE. DIE NAECH- " 3490 PRINT"STE RUNDE BEGINNT, WENN SIE F1 DRUECKEN" 3500 GETZ$:IFZ$=""THEN3500 3510 PRINTCC$TAB(12)" L O T T E R I E "CHR$(17) 3520 PRINT"NOCH EIN PAAR ERKLAERUNGEN ZUM BILD: "CHR$(17) 3530 PRINT"IN JEDEM FELD ERSCHEINT LINKS OBEN DER" 3540 PRINT"ANFANGS EINGEGEBENE NAME. WURDE JEDOCH " 3550 PRINT"KEIN NAME EINGEGEBEN,SEHEN SIE DIE NUM-" 3560 PRINT"MER DES SPIELERS ZWEIMAL. DANEBEN ZEIGT" 3570 PRINT"DER BILDSCHIRM DIE HOEHE IHRES GESAMTEN" 3580 PRINT"EINSATZES IN DER LAUFENDEN RUNDE. " 3590 PRINT"IN DER NAECHSTEN REIHE WIRD RECHTS DER" 3600 PRINT"GEWINN IN DER LAUFENDEN RUNDE ANGEZEIGT" 3610 PRINT"LINKS WIRD SCHWARZ DER VON DER BANK ZU-" 3620 PRINT"ZAHLENDE GEWINN ANGEZEIGT. EIN ROT AN-" 3630 PRINT"GEZEIGTER BETRAG IST AN DIE BANK ZU ZAH" 3640 PRINT"LEN."CHR$(17) 3650 PRINT"DER BETRAG IM MITTLEREN SPIELFELD OBEN " 3660 PRINT"IST GEWINN (SCHWARZ) ODER VERLUST (ROT)" 3670 PRINT"DER BANK. UNTER DEM BANKFELD WIRD ANGE-" 3680 PRINT"ZEIGT, WIEVIELE KARTEN NOCH ZU VERKAU-" 3690 PRINT"EN SIND - UND NUN VIEL SPASS BEIM SPIEL"CHR$(17) 3700 PRINT"ALLES IN ORDNUNG ?" 3710 GETZ$:IFZ$=""THEN3710 3720 RETURN 3730 REM =PROGRAMMENDE============