10 ' save "pusam.bas" ' (pu)nkte(sam)mler 20 ' ************************************************** 30 ' ****** J O Y C E - P U S A M . B A S ******* 40 ' ****** (c) 01/88 - J. Rott *********** 50 ' ********** 85oo N}rnberg 44 *************** 60 ' ************************************************** 70 ' 80 ' Vorbild zu diesem Spiel gab das Programm 'PERGO' 90 ' das f}r die CPC's geschrieben ist. 100 ' 110 ' ************************************************* 120 ' Bildschirmcode 130 ' ************************************************* 140 ' 150 PRINT CHR$(27)+"f" 160 home$ = CHR$(27)+"H" ' cursor in linke obere ecke 170 cls$ = CHR$(27)+"E"+home$ ' bildschirm l|schen 180 DEF FNcur$(y,x)=CHR$(27)+"Y"+CHR$(32+y)+CHR$(32+x): ' y=zeile und z=spalte 190 ine$=CHR$(27)+"p" ' Invers ein 200 ina$=CHR$(27)+"q" ' Invers aus 210 WIDTH 90 220 ' 230 ' ************************************************* 240 ' Spielfeldmatrix 250 ' ************************************************* 260 ' 270 DIM bi(71,24) 280 ' 290 ' ************************************************* 300 ' Titelbild 310 ' ************************************************* 320 ' 330 PRINT cls$ 340 GOSUB 3590 350 GOSUB 3160 360 RESTORE 370 PRINT ,,ine$" Zeichen Punkte "ina$:PRINT 380 FOR q=1 TO 4 390 READ fi,pu,p4 400 PRINT ,," ";CHR$(fi);" ";pu:PRINT 410 NEXT q 420 PRINT:PRINT" Dieses REAKTIONS-SPIEL wird mit den Cursor-Tasten oder mit dem Spielhebel der" 430 PRINT " im CP-Sonderheft Nr.1 beschrieben ist, gespielt. 440 PRINT:PRINT " Es m}ssen Zeichen (siehe oben) gesammelt werden f}r die es unterschiedliche Punkte gibt, die Anzahl der Punkte steigt von Level zu Level." 450 PRINT:PRINT " Hat man die erforderliche Anzahl Zeichen aufgesammelt gelangt man in das n{chste Level." 460 PRINT:PRINT " Aber Vorsicht, der Bewegungsraum wird immer kleiner. Man darf sich den Weg nicht selbst abschneiden." 470 PRINT:PRINT " Viel Spa~ und Unterhaltung wuensche ich euch." 480 PRINT:PRINT,,ine$" Spielstaerke 1-3 "ina$; 490 leben=3 500 ' 510 ' ************************************************* 520 ' Spielst{rke 530 ' ************************************************* 540 ' 550 paa$=INKEY$:IF paa$="" THEN 550 560 paa=VAL(paa$) 570 IF paa<1 OR paa>3 THEN 550 580 IF paa=1 THEN paa=0 590 IF paa=2 THEN paa=40 600 IF paa=3 THEN paa=99 610 PRINT:PRINT,,ine$" gleich geht's los "ina$; 620 ' 630 ' ************************************************* 640 ' Matrixvorbelegung 650 ' ************************************************* 660 ' 670 sp=sp+1:x=13:y=41 680 pz=0:ri=0:ra=0:strich$=CHR$(249) 690 FOR q=1 TO 23 700 FOR qq=1 TO 70 710 bi(qq,q)=0 720 NEXT qq 730 NEXT q 740 GOSUB 1070 750 GOSUB 2200 760 ' 770 ' ************************************************* 780 ' Abfrage mit Punktez{hler 790 ' ************************************************* 800 ' 810 IF x<1 OR x>23 OR y<1 OR y>70 OR bi(y,x)=5 THEN 2510 820 IF bi(y,x)<1 THEN 1030 830 PRINT CHR$(7); 840 pp=INT(punkte/1500) 850 IF bi(y,x)=1 THEN punkte=punkte+50 ELSE IF bi(y,x)=2 THEN punkte=punkte+25 860 IF bi(y,x)=3 THEN punkte=punkte+10 ELSE IF bi(y,x)=4 THEN punkte=punkte+5 870 IF INT(punkte/1500)=pp THEN 920 880 leben=leben+1 890 PRINT:PRINT FNcur$( 8,78); 900 PRINT leben; 910 ' 920 PRINT:PRINT FNcur$(2,76); 930 PRINT punkte; 940 st=st-1 950 PRINT:PRINT FNcur$(14,78); 960 PRINT st; 970 pz=pz+1 980 IF pz0 THEN 2440 2410 PRINT FNcur$(x,y); 2420 PRINT CHR$(249); 2430 RETURN 2440 GOSUB 2750 2450 bi(yy,xx)=5 2460 PRINT FNcur$(xx,yy); 2470 PRINT lin$; 2480 PRINT FNcur$( x,y ); 2490 PRINT ma$; 2500 RETURN 2510 ' 2520 ' ************************************************ 2530 ' Spielfeld verlassen 2540 ' ************************************************ 2550 ' 2560 IF x>80 THEN x=80 2570 IF x<1 THEN x=1 2580 IF y>23 THEN y=23 2590 IF y<1 THEN y=1 2600 GOSUB 2750 2610 PRINT FNcur$(xx,yy); 2620 PRINT lin$; 2630 PRINT FNcur$(xx,yy); 2640 PRINT CHR$(249); 2650 leben=leben-1 2660 IF leben<0 THEN 2820 2670 x=20:y=11 2680 pz=0:ri=0:ra=0:lin$=CHR$(249) 2690 GOTO 690 2700 ' 2710 ' ************************************************ 2720 ' Weg zeichner : Richtung bestimmen 2730 ' ************************************************ 2740 ' 2750 IF ra=ri AND ra<3 THEN lin$=CHR$(154):RETURN 2760 IF ra=ri AND ra>2 THEN lin$=CHR$(149):RETURN 2770 IF (ra=1 AND ri=4) OR (ra=3 AND ri=2) THEN lin$=CHR$(156):RETURN 2780 IF (ra=2 AND ri=4) OR (ra=3 AND ri=1) THEN lin$=CHR$(150):RETURN 2790 IF (ra=4 AND ri=1) OR (ra=2 AND ri=3) THEN lin$=CHR$(147):RETURN 2800 IF (ra=4 AND ri=2) OR (ra=1 AND ri=3) THEN lin$=CHR$(153) 2810 RETURN 2820 ' 2830 ' ************************************************ 2840 ' Spiel ende 2850 ' ************************************************ 2860 ' 2870 FOR q=1 TO 600:NEXT 2880 PRINT FNcur$(24,0); 2890 PRINT: PRINT ine$" PUNKTE : ",punkte 2900 IF hi255 THEN RETURN 3220 FOR i=0 TO 7 3230 READ x 3240 POKE tabstart+i,x 3250 NEXT i 3260 charstart=code*8+&HB800+2^16 3270 highaddr=INT(charstart/256) 3280 lowaddr=charstart-highaddr*256 3290 POKE &HF510,lowaddr 3300 POKE &HF511,highaddr 3310 CALL codestart:GOTO 3200 3320 DATA 240,8,16,110,255,255,255,254,100 3330 DATA 241,34,119,254,124,62,127,238,68 3340 DATA 242,6,8,16,16,120,252,254,108 3350 DATA 243,24,24,36,36,66,66,129,255 3360 DATA 245,24,60,126,255,24,24,24,24 3370 DATA 246,24,24,24,24,255,126,60,24 3380 DATA 247,16,48,112,255,255,112,48,16 3390 DATA 248,8,12,14,255,255,14,12,8 3400 DATA 249,255,129,191,129,253,253,129,255 3410 DATA 254,24,24,255,255,24,24,24,24 3420 DATA 224,24,24,255,255,255,255,24,24 3430 DATA -1 3440 MEMORY &HF4FF:RESTORE 3520 3450 codestart=&HF500 3460 tabstart=&HF515 3470 FOR i=0 TO 20 3480 READ x 3490 POKE codestart+i,x 3500 NEXT i 3510 RETURN 3520 DATA &H01,&H09,&Hf5,&HCD,&H5A 3530 DATA &HFC,&HE9,&H00,&HC9 3540 DATA &H21,&H15,&HF5,&H01,&H08 3550 DATA &H00,&H11,&H00,&H00,&HED 3560 DATA &HB0,&HC9 3570 ' 3580 ' ************************************************ 3590 ' Bildbalken 3600 ' ************************************************ 3610 ' 3620 PRINT cls$ 3630 PRINT ine$CHR$(150); 3640 FOR x=1 TO 88 3650 PRINT CHR$(154); 3660 NEXT x 3670 PRINT CHR$(156)CHR$(149)SPC(19); 3680 PRINT "* * R E A K T I O N S - S P I E L * * "; 3690 PRINT SPC(25);CHR$(149);CHR$(147); 3700 FOR x=1 TO 88 3710 PRINT CHR$(154); 3720 NEXT x 3730 PRINT CHR$(153)ina$ 3740 RETURN