| 10 ' *** HIGH-SCORE-Tabelle ***
20 ' zum Verwalten Ihrer High-Scores 30 ' 40 ' written in June '86 50 ' by Jan-Mirko Maczewski 60 ' 70 'DDI-1,CPC 664/6128 User muessen statt "|CAS" "|TAPE" eingeben ! 80 '464 User ohne Disk lassen "|CAS" und "|DISC" einfach weg ! 90 ' 100 |CAS:OPENOUT"%":MEMORY HIMEM-1:CLOSEOUT:|DISC:INK 0,0:BORDER 0 110 DEFINT i,x,y,c,n:INK 1,26:INK 2,24 120 'Fuer Gruenmonitor : CALL &BC02:INK 3,15,17 130 DIM s(200,10) '200 Games,je 10 HSs 140 DIM n$(200,10) '... und je 10 Namen 150 DIM g$(200) 'Namen der 200 Games 160 r$=CHR$(24):z$=CHR$(34):DIM gn(200) 170 MODE 1:PRINT SPC(11)STRING$(18,"-") 180 PRINT SPC(11)"HIGH-SCORE-Tabelle" 190 PRINT SPC(11)STRING$(18,"-") 200 PEN 2:PRINT SPC(5)"written by Jan-Mirko Maczewski":PEN 1 210 WINDOW 1,40,5,25 220 PRINT:PRINT"Einen Augenblick bitte ..." 230 FOR i=1 TO 200:g$(i)="-":NEXT 240 FOR i=1 TO 200:FOR i1=1 TO 10 250 n$(i,i1)="-" 260 NEXT i1,i:GOTO 280 270 GOSUB 1670:GOSUB 1300 280 CLS:PRINT:a$="L":GOSUB 1630 290 PRINT"- Lesen der Tabelle ("z$"HI-SCORE.TAB"z$") 300 PRINT:a$="S":GOSUB 1630 310 PRINT"- Schreiben der Tabelle 320 PRINT:a$="E":GOSUB 1630 330 PRINT"- Eingabe neuer Scores,Score-Halter 340 PRINT:a$="A":GOSUB 1630 350 PRINT"- Anzeigen einer/mehrerer Tabelle(n) 360 PRINT:a$="D":GOSUB 1630 370 PRINT"- Drucken einer/mehrerer Tabelle(n) 380 PRINT:a$="F":GOSUB 1630 390 PRINT"- Finden eines Scores/Score-Halters 400 PRINT:a$="H":GOSUB 1630 410 PRINT"- High-Score-Anzeige aller Games 420 PRINT:a$="C":GOSUB 1630 430 PRINT"- CAT von Disk/Tape" 440 a$=INKEY$:IF a$="" GOTO 440 ELSE a$=LOWER$(a$) 450 IF a$="l" THEN GOSUB 1670:GOSUB 1300:GOTO 280 460 IF a$="s" THEN GOSUB 1670:GOSUB 1440:GOTO 280 470 IF a$="e" THEN 550 'Score-Eingabe 480 IF a$="a" THEN 750 'Tab.-Anzeige 490 IF a$="d" THEN 860 'Tab.-Druck 500 IF a$="f" THEN 970 'Sc./Nam-Finden 510 IF a$="h" THEN 1180 'HI-Anzeige 520 IF a$="c" THEN GOTO 1710 'CAT 530 PRINT CHR$(7)CHR$(11):GOTO 440 540 ' --- Eingabe neuer Scores ... --- 550 CLS:PRINT:PRINT SPC(2)"Eingabe neuer Scores,Score-Halter 560 PRINT:INPUT" Bei welchem Spiel wurde der Score erreicht ";game$ 570 game$=UPPER$(game$):PRINT 580 INPUT"Welcher Score ";sc 590 INPUT"Score-Halter ";name$:PRINT 600 PRINT"Game :";game$:PRINT"Score:";sc:PRINT"Name :";name$ 610 PRINT:PRINT" OK ? ";:GOSUB 1580 620 IF j=0 THEN 550 ELSE GOSUB 1790 630 g$(nr)=game$:CLS:PRINT 640 PRINT"Bisheriger Stand bei " 650 GOSUB 1850 660 FOR i=1 TO 10 670 IF sc>s(nr,i) THEN GOTO 2030 680 NEXT:PRINT:PRINT CHR$(7) 690 PRINT sc;"ist zu wenig," 700 PRINT" um in die 'TOP-TEN' zu kommen." 710 PRINT:PRINT"(TASTE DRUECKEN !)":CALL &BB18:GOTO 280 720 CLS:PRINT:PRINT"Die 'TOP-TEN' von" 730 LOCATE x,3:PRINTSTRING$(LEN(g$(nr)),"_") 740 GOSUB 1850:GOTO 280 750 ' --- Anzeigen der Tabelle(n) --- 760 CLS:PRINT:PRINT" Anzeigen einer/mehrerer Tabelle(n) 770 PRINT:y$="sehen ":GOSUB 2100 780 IF p=1 THEN 820 790 FOR j=1 TO c-1 800 CLS:nr=gn(j):GOSUB 1850 810 NEXT:GOTO 280 820 FOR j=1 TO 200 830 IF g$(j)="-" THEN 850 840 CLS:nr=j:GOSUB 1850 850 NEXT:GOTO 280 860 '--- Drucken e./m. Tabelle(n) --- 870 CLS:PRINT:PRINT" Drucken einer/mehrerer Tabelle(n) 880 PRINT:y$="drucken":GOSUB 2100 890 IF p=1 THEN 930 900 FOR j=1 TO c-1 910 CLS:nr=gn(j):GOSUB 1850:GOSUB 2270 920 NEXT j:GOTO 280 930 FOR j=1 TO 200 940 IF g$(j)="-" THEN 960 950 CLS:nr=j:GOSUB 1850:GOSUB 2270 960 NEXT:GOTO 280 970 '--- Finden eines Scores,... --- 980 CLS:PRINT:PRINT" Finden eines Score/Score-Halters 990 PRINT:INPUT"Bei welchem Spiel soll gesucht werden ";ga$:ga$=UPPER$(ga$) 1000 PRINT:PRINT"Ist ein Score gesucht ? ";:GOSUB 1580 1010 IF j=0 THEN 1110 ELSE PRINT 1020 INPUT"Name des Score-Halters ";na$ 1030 PRINT:PRINT"Sollen alle Scores von ";na$:PRINT"ausgegeben werden oder nur der beste ? (J=alle;N=nur der beste) ";:GOSUB 1580 1040 CLS:PRINT:IF j THEN PRINT na$"'s Scores" ELSE PRINT na$"'s bester Score" 1050 PRINT"bei "r$;ga$;r$" : 1060 PRINT:game$=ga$:GOSUB 1790 1070 FOR i=1 TO 10:snr=s(nr,i) 1080 IF n$(nr,i)=na$ THEN PRINT" Platz"i": "snr" Punkte":IF j=0 THEN 1100 1090 NEXT:PRINT:PRINT"(TASTE !) 1100 CALL &BB18:GOTO 280 1110 PRINT:INPUT"Score des zu suchenden Score-Halters ";sc:PRINT:game$=ga$:GOSUB 1790 1120 FOR i=1 TO 10:snr=s(nr,i) 1130 IF snr=sc THEN PRINT" Platz"i": "n$(nr,1);:GOTO 1150 1140 NEXT 1150 IF i<10 THEN IF s(nr,i+1)=sc THEN PRINT" und":PRINT SPC(11);n$(nr,i+1) 1160 PRINT:PRINT"(TASTE !)" 1170 CALL &BB18:GOTO 280 1180 '--- Hi's aller Games --- 1190 CLS:PRINT:PRINT"Die High-Scores aller vermerkten Spiele":PRINT 1200 PRINT"Soll mitgedruckt werden ? ";:GOSUB 1580 1210 IF g$(200)<>"-" THEN a=200 ELSE game$="?":GOSUB 1790:a=nr-1 1220 FOR i=1 TO a 1230 IF j THEN PRINT#8,CHR$(27)"x0"CHR$(27)"E 1240 PRINT:PRINT " "r$;g$(i);r$" :" 1250 IF j THEN PRINT#8,g$(i);CHR$(27)"F : ";s(i,1);" ";n$(i,1) 1260 PRINT:PRINT s(i,1);SPC(5);n$(i,1) 1270 PRINT:PRINT"(TASTE !)":CALL &BB18 1280 PRINT CHR$(11)CHR$(18)CHR$(11); 1290 NEXT:GOTO 280 1300 ' --- Einlesen der Tabelle --- 1310 OPENIN"hi-score.tab" 1320 INPUT#9,a 1330 FOR i=1 TO a 1340 INPUT#9,g$(i) 1350 NEXT i 1360 FOR i=1 TO a 1370 FOR i1=1 TO 10 1380 INPUT#9,s(i,i1):INPUT#9,n$(i,i1) 1390 NEXT i1 1400 NEXT i 1410 CLOSEIN 1420 RETURN 1430 ' --- Speichern der Tabelle --- 1440 OPENOUT"hi-score.tab" 1450 FOR i=1 TO 200 1460 IF g$(i)<>"-" THEN a=i 1470 NEXT:PRINT#9,a 1480 FOR i=1 TO a 1490 PRINT#9,g$(i) 1500 NEXT i 1510 FOR i=1 TO a 1520 FOR i1=1 TO 10 1530 PRINT#9,s(i,i1):PRINT#9,n$(i,i1) 1540 NEXT i1 1550 NEXT i 1560 CLOSEOUT 1570 RETURN 1580 'Ja/Nein-Abfrage 1590 x$=INKEY$:IF x$="" GOTO 1590 1600 x$=LOWER$(x$):IF x$="j" THEN j=-1:PRINT"Ja":RETURN 1610 IF x$<>"n" THEN GOTO 1590 1620 PRINT"Nein":j=0:RETURN 1630 PEN 2:PRINT " "r$;a$;r$; 1640 x=POS(#0):y=VPOS(#0) 1650 LOCATE x-1,y-1:PRINT"_":PEN 1 1660 LOCATE x+1,y:RETURN 1670 CLS:PRINT:PRINT" Bitte Disk/Kass. mit "z$"HI-SCORE.TAB"z$ 1680 PRINT" einlegen und dann eine TASTE druecken !":CALL &BB18 1690 RETURN 1700 ' --- CAT v. Disk o. Tape --- 1710 CLS:PRINT:PRINT SPC(9); 1720 PRINT"CAT von Disk oder Tape 1730 PRINT:PRINT:PRINT"J=Disk ; N=Tape 1740 GOSUB 1580:IF j THEN |DISC.IN ELSE |CAS.IN 1750 CAT:PRINT CHR$(11); 1760 PRINT"(TASTE DRUECKEN !)" 1770 CALL &BB18:GOTO 280 1780 ' --- Game suchen --- 1790 FOR i=1 TO 200:t$=UPPER$(g$(i)) 1800 IF t$=game$ THEN nr=i:RETURN 1810 NEXT:IF g$(200)<>"-" THEN PRINT CHR$(7)"*** TABELLE VOLL ***":END 1820 FOR i=1 TO 200:t$=g$(i) 1830 IF t$="-" THEN nr=i:RETURN 1840 NEXT i 1850 ' --- die 10 Hi-Scores --- 1860 y=LEN(g$(nr)):x=(40-y)/2:PEN 1 1870 LOCATE x,3:PRINT STRING$(y,"_") 1880 LOCATE x,4:PRINT r$;g$(nr);r$ 1890 PEN 3:LOCATE 1,6:PRINT "Platz 1"; 1900 snr=s(nr,1) 1910 IF INT(snr)-snr<0 THEN PRINT" "USING"########.##";snr:GOTO 1930 1920 PRINT" "USING"########";s(nr,1) 1930 LOCATE 22,6:PRINT n$(nr,1) 1940 PRINT:PEN 2:FOR i=2 TO 10 1950 PRINT SPC(6);USING"##";i; 1960 snr=s(nr,i) 1970 IF INT(snr)-snr<0 THEN 2080 1980 PRINT" "USING"########";snr 1990 LOCATE 22,i+6:PRINT n$(nr,i) 2000 NEXT i:PRINT:PRINT:PRINT"(TASTE !) 2010 CALL &BB18:RETURN 2020 ' --- neue Tab. erst. --- 2030 FOR j=10 TO i STEP -1 2040 s(nr,j)=s(nr,j-1) 2050 n$(nr,j)=n$(nr,j-1) 2060 NEXT j:s(nr,i)=sc 2070 n$(nr,i)=name$:GOTO 720 2080 PRINT" "USING"########.##";snr 2090 GOTO 1990 2100 PRINT"Wollen Sie die 'TOP-TEN' aller bisher eingetragenen Spiele "y$"?"; 2110 GOSUB 1580:PRINT:IF j THEN p=1:RETURN ELSE p=0 2120 PRINT"Bitte geben Sie 'J' ein,wenn Sie die TOP-TEN des angezeigten Spieles "y$ 2130 PRINT"moechten;'N',wenn Sie sie nicht "y$"wollen und '@' zum Beenden der Abfrage." 2140 PRINT:c=1 2150 FOR i=1 TO 200 2160 IF g$(i)="-" THEN 2240 2170 PRINT USING"###";i;:PRINT". "; 2180 PRINT g$(i)" ?" 2190 a$=INKEY$:IF a$="" GOTO 2190 2200 a$=LOWER$(a$):IF a$="n" THEN 2240 2210 IF a$="@" THEN 2250 2220 IF a$<>"j" THEN PRINT CHR$(7)CHR$(11);:GOTO 2190 2230 gn(c)=i:c=c+1 2240 NEXT 2250 RETURN 2260 ' --- Hi's auf den Drucker --- 2270 PRINT#8,CHR$(27)"x0"CHR$(27)"G 2280 PRINT#8,g$(nr):PRINT#8,CHR$(27)"H 2290 PRINT#8,"Platz 1";:snr=s(nr,1) 2300 IF INT(snr)-snr<0 THEN PRINT#8," "USING"########.##";snr:GOTO 2320 2310 PRINT#8," "USING"########";snr 2320 PRINT#8,SPACE$(22-PEEK(&AC23));n$(nr,1) 2330 '!!! CPC 664/6128: !!! PRINT#8,SPACE$(22-PEEK(&AC08))...! 2340 PRINT#8:FOR i=2 TO 10 2350 PRINT#8,SPACE$(6)USING"##";i; 2360 snr=s(nr,i) 2370 IF INT(snr)-snr<0 THEN 2440 2380 PRINT#8," "USING"########";snr; 2390 PRINT#8,SPACE$(22-PEEK(&AC23)); 2400 '664/6128:...(22-PEEK(&AC08));... 2410 PRINT#8,n$(nr,i) 2420 NEXT i:PRINT#8:PRINT#8:PRINT#8 2430 RETURN 2440 PRINT#8," "USING"########.##";snr; 2450 GOTO 2390 |