5/84, S. 76-77

Schmatzer

Wo gibt's denn das? Pacman für die Grundversion des VC 20? Schmatzer bietet sogar noch ein bißchen mehr.

265 Punkte sind bei »Schmatzer« zu sammeln, um eine Runde weiter zu kommen

Nach dem Start des Programms (siehe Listing) erscheint die Frage nach der Steuerung. Gibt man »J« ein, so spielt man mit Joystick, gibt man »N« ein, mit Tastatur. Dabei bedeuten die Tasten »,« nach links ».« nach rechts, »J« nach oben und »M« nach unten. Danach kommt die Frage nach dem Level (Schwierigkeitsgrad). Geben Sie zunächst am besten eine»1«ein. Es erscheint das Labyrinth mit Punkten, Herzen, dem »Schmatzer« und dem Monster. Die Position des Schmatzers und die des Monsters sind zufällig. Der Schmatzer hat den Mund abwechselnd offen und zu (Kaubewegung). Das Spiel beginnt bei Joysticksteuerung mit Bewegung des Knüppels in eine beliebige Richtung, bei Tastatursteuerung mit Betätigung einer beliebigen Taste. Der Schmatzer hinterläßt beim Laufen eine unsichtbare Spur. Das Monster fährt zunächst nach Zufall durch das Labyrinth; es läßt alle Punkte unberührt. Trifft das Monster auf die Spur des Schmatzers, so beginnt es. ihr — in größerer Geschwindigkeit als sich der Schmatzer bewegt — nachzulaufen was sich durch einen hohen Ton bemerkbar macht. Dabei löscht das Monster die Spur wieder. Das Monster geht nach einiger Zeit wieder von der Spur ab (Zufall). Diese Wahrscheinlichkeit wird aber von Runde zu Runde (zweistellige Zahl rechts oben, siehe Bildschirmfoto) geringer. Frißt der Schmatzer ein Herz, so wird das Monster an eine zufällige Position im Labyrinth katapultiert. Dies ist eine Möglichkeit, das Monster von der Spur des Schmatzers abzubringen.

Während des Spiels bedeutet die Zahl rechts oben die Rundenzahl, die darunter die Anzahl der Leben des Schmatzers. Schließt das Monster seine Verfolgung mit einem tieferen Ton ab, so bedeutet dies, daß es einer älteren Spur nachgelaufen war, die ein Ende gefunden hat. Wird der Schmatzer vom Monster erwischt, so wird ein Leben abgezogen, das Monster erscheint an einer zufälligen Stelle im Labyrinth und das Spiel geht durch Betätigung einer Taste beziehungsweise des Joysticks weiter. Ist die Zahl der Leben gleich Null, so ist das Spiel zu Ende. Ein neues Spiel kann mit Betätigung der Leertaste begonnen werden.

Hat man alle 265 Punkte im -Labyrinth aufgefressen, wird das Labyrinth wieder mit Punkten gefüllt, und man kommt in die nächste Runde. Die Positionen des Schmatzers und des Monsters sind wiederum zufällig und das Spiel ist etwas schwieriger. Nach der 3. Runde bekommt man noch ein Extra-Leben, von einer Tonfolge begleitet. Gibt man am Anfang für den Level eine Zahl zwischen 2 und 6 ein, erscheinen weniger Herzen auf dem Spielfeld, wodurch sich die Abwehr des Monsters schwieriger gestaltet. Ab Level 5 wird’s noch mühsamer, das Monster ist unsichtbar und nur dann zu erkennen, wenn es über Punkte läuft. Das verlangt besonders hohe Aufmerksamkeit und ist ein Nervenktizel, da man oft in Ungewißheit schwebt. Diese Levels 5 bis 8 sind eher für den geübteren Spieler gedacht.

Noch ein kleiner Tip: Um schneller durch die Kurven zu kommen, kann man auch schon vor einer Verzweigung die entsprechende Taste beziehungsweise den Joystickknüppel für die gewünschte Richtung betätigen.

(Hannes Kaltenbach)
HI Hi-Score (höchste Punktzahl)
A$ Zur Eingabe des Levels und zur Wahl der Steuerung
L Level
J
A
B
C
D
Dienen zur Tastatur- bzw. Joysticksteuerung
Z Farbe des Monsters
I Dient zur Mundbewegung des Schmatzers
P Dient verschiedenen Zwecken
Q Tonadresse (35876)
MR Anzahl der Leben des Schmatzers
SC Score (Punktzahl) des Spielers
PU Anzahl der schon gefressenen Punkte
S Nummer der Runde
T Entscheidet, ob das Monster eine Spur hat
YM Bewegungsrichtung des Monsters
F Farbadresse, zur Bildschirmadresse addiert
X Position des Schmatzers
Y Position des Monsters
PO Zeichen, auf dem sich das Monster befindet
XT Zur Steuerung des Schmatzers
XM Bewegungsrichtung des Schmatzers
P(.) Bildschirmadressen der Herzen
Liste der Variablen von »Schmatzer«
5 rem schmatzer  von  hannes kaltenbach
10 hi=0:dimp(2):p(0)=7938:p(1)=7769:p(2)=8101:goto950
20 forp=1to500:next:return
30 poke36879,25:restore:fori=7616to7679:readp:pokei,p:next
40 q=36876:mr=3:sc=0:pu=0:poke36869,255:s=50
50 t=1:poke36878,15:ym=1:i=56:f=30720:gosub350
60 x=int(rnd(1)*506)+7680:ifpeek(x)<>174then60
70 gosub860:pokex,i:pokey,58:pokex+f,0:pokey+f,2
80 ifpeek(j)=64orpeek(j)=126andpeek(j+1)=247then80
90 ifx=ythen700
100 p=peek(j):ifp=athenxt=-1
110 ifp=bthenxt=1
120 ifpeek(j+1)=bthenxt=1
130 ifp=cthenxt=22
140 ifp=dthenxt=-22
150 ifpeek(x+xt)<>230thenxm=xt
160 p=peek(x+xm):ifp=230then210
170 ifp=211then820
180 ifp=174thenpu=pu+1:pokeq,240:pokeq,0:ifpu=265then610
190 pokex+f,1:pokex,xm+22:x=x+xm:pokex,i:pokex+f,0:if x=ythen690
200 i=i+1:ifi=58theni=56
210 ift=1then260
220 pokeq,250:pokeq,0:pokey,160:y=y+ym:ym=peek(y)-22:pokey+f,z:pokey,58
230 ifym>22then900
240 ifint(rnd(1)*s)=0thent=1:ym=-ym
250 goto90
260 p=peek(y+ym):ifp=230then300
270 pokey,po:pokey+f,6:y=y+ym:pokey+f,z:pokey,58:po=p
280 ifp<45thent=0:ym=p-22:po=160
290 goto90
300 p=int(rnd(1)*4):ifp=0thenym=-1
310 ifp=1thenym=1
320 ifp=2thenym=22
330 ifp=3thenym=-22
340 goto90
350 poke36865,156:print"{clr}{rvon}{blu}{CBM-+}{CBM-+}{CBM-+}{CBM-+}{CBM-+}{CBM-+}{CBM-+}{CBM-+}{CBM-+}{CBM-+}{CBM-+}{CBM-+}{CBM-+}{CBM-+}{CBM-+}{CBM-+}{CBM-+}{CBM-+}{CBM-+}{CBM-+}{CBM-+}{CBM-+}";
360 print"{CBM-+}.......{CBM-+}...........{CBM-+}{CBM-+}";
370 print"{CBM-+}.{CBM-+}.{CBM-+}.{CBM-+}.{CBM-+}.{CBM-+}.{CBM-+}.{CBM-+}.{CBM-+}.{CBM-+}.{CBM-+}{CBM-+}";
380 print"{CBM-+}...........{CBM-+}.{CBM-+}.{CBM-+}.{CBM-+}.{CBM-+}{CBM-+}";
390 print"{CBM-+}{yel}S{blu}{CBM-+}{CBM-+}.{CBM-+}{CBM-+}{CBM-+}{CBM-+}.....{CBM-+}.{CBM-+}....{CBM-+}";
400 print"{CBM-+}{CBM-+}{CBM-+}...{CBM-+}...{CBM-+}.{CBM-+}.{CBM-+}...{CBM-+}{CBM-+}.{CBM-+}";
410 print"{CBM-+}...{CBM-+}...{CBM-+}.{CBM-+}.{CBM-+}...{CBM-+}{CBM-+}{CBM-+}{CBM-+}.{CBM-+}";
420 print"{CBM-+}.{CBM-+}...{CBM-+}.......{CBM-+}{CBM-+}{CBM-+}....{CBM-+}";
430 print"{CBM-+}...{CBM-+}.{CBM-+}.{CBM-+}.{CBM-+}{CBM-+}......{CBM-+}{CBM-+}.{CBM-+}";
440 print"{CBM-+}.{CBM-+}.{CBM-+}........{CBM-+}{CBM-+}.{CBM-+}....{CBM-+}";
450 print"{CBM-+}...{CBM-+}..{CBM-+}.{CBM-+}.{CBM-+}.{CBM-+}{CBM-+}.{CBM-+}....{CBM-+}";
460 print"{CBM-+}.{CBM-+}.{CBM-+}{CBM-+}...{CBM-+}.{CBM-+}..{CBM-+}.{yel}S{blu}.{CBM-+}.{CBM-+}{CBM-+}";
470 print"{CBM-+}.{CBM-+}...{CBM-+}.{CBM-+}{CBM-+}.{CBM-+}{CBM-+}.{CBM-+}.{CBM-+}.{CBM-+}.{CBM-+}{CBM-+}";
480 print"{CBM-+}.{CBM-+}.{CBM-+}.{CBM-+}.....{CBM-+}...{CBM-+}.{CBM-+}.{CBM-+}{CBM-+}";
490 print"{CBM-+}.{CBM-+}.{CBM-+}.{CBM-+}{CBM-+}{CBM-+}.{CBM-+}...{CBM-+}.....{CBM-+}{CBM-+}";
500 print"{CBM-+}.{CBM-+}.......{CBM-+}.{CBM-+}.{CBM-+}{CBM-+}.{CBM-+}{CBM-+}.{CBM-+}{CBM-+}";
510 print"{CBM-+}.{CBM-+}{CBM-+}{CBM-+}{CBM-+}.{CBM-+}{CBM-+}.{CBM-+}.{CBM-+}.{CBM-+}.....{CBM-+}{CBM-+}";
520 print"{CBM-+}.{CBM-+}...........{CBM-+}.{CBM-+}.{CBM-+}..{CBM-+}";
530 print"{CBM-+}.{CBM-+}.{CBM-+}.{CBM-+}.{CBM-+}.{CBM-+}..{CBM-+}{CBM-+}.{CBM-+}.{CBM-+}{CBM-+}.{CBM-+}";
540 print"{CBM-+}.{CBM-+}{yel}S{blu}....{CBM-+}.{CBM-+}.....{CBM-+}....{CBM-+}";
550 print"{CBM-+}.{CBM-+}{CBM-+}{CBM-+}{CBM-+}{CBM-+}.{CBM-+}.{CBM-+}.{CBM-+}{CBM-+}{CBM-+}.{CBM-+}.{CBM-+}{CBM-+}.{CBM-+}";
560 print"{CBM-+}....................{CBM-+}";
570 print"{CBM-+}{CBM-+}{CBM-+}{CBM-+}{CBM-+}{CBM-+}{CBM-+}{CBM-+}{CBM-+}{CBM-+}{CBM-+}{CBM-+}{CBM-+}{CBM-+}{CBM-+}{CBM-+}{CBM-+}{CBM-+}{CBM-+}{CBM-+}{CBM-+}{home}";:poke8185,230:poke38905,6
580 poke7700,int(s/500)+176:poke7701,s/50-10*peek(7700)+1936:ifl=1then600
590 forp=0tol-2:pokep(p),160:next
600 poke7767,mr+176:poke36865,38:return
610 pokex,160:x=x+xm:pokex,i
620 sc=sc+pu:pu=0:forx=1to6:pokeq,240:forp=1to70:next:pokeq,0:forp=1to30:nextp,x
630 gosub 20:poke36877,130:x=15:pokey+f,2
640 fori=59to63:pokey,i:poke36878,x:x=x-3:forp=1to100:nextp,i:pokey,160
650 poke36877,0:poke36878,15
660 print"{home}{rvon}punkte:"sc:ifs<>150then680
670 gosub20:forx=1to6:fori=190to240:pokeq,i:next:pokeq,0:next:mr=mr+1:gosub600
680 forp=1to3000:next:s=s+50:goto50
690 ifpo=174thenpu=pu+1
700 pokex,58:pokex+f,2:forp=245to130step-1:poke36874,p:next:poke36874,0:pokex,56
710 fori=59to63:pokex,i:forp=1to100:nextp,i:pokex,160:i=56:t=1:ym=1
720 mr=mr-1:gosub600:ifmr=0then760
730 gosub20:gosub20:gosub860:pokex,56
740 ifpu=265then620
750 goto80
760 forx=0to19:fory=0to3:poke7680+x+22*y,160:nexty,x:sc=sc+pu
770 print"{home}{rvon}{red}spielende."tab(22)"{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}"tab(44)"punkte :"sctab(59)"{blu}leer-{red}";
780 ifsc>hithenhi=sc
790 printtab(66)"{rvon}hi-score:"hitab(81)"{blu}taste"
800 ifpeek(197)<>32then800
810 poke36869,240:pokej+3,255:goto950
820 pokex+f,1:pokex,xm+22:x=x+xm:pokex,i:pokex+f,0:pokey+f,7
830 pokeq,230:poke36876,0:t=1:gosub20:pokey+f,2
840 pokey,po:gosub860
850 gosub20:goto90
860 p=int(rnd(1)*20)+1:y=int(rnd(1)*21)+1:y=7680+p+22*y
870 po=peek(y):ifpo=230orx=ythen860
880 pokey,58:pokey+f,2:ifpo<45thent=0:ym=po-22:po=160
890 return
900 pokeq,244:poke36876,0:t=1:po=ym+22
910 goto300
920 data36,24,60,60,36,60,0,0,36,24,36,66,90,66,60,0,60,126,219,102,126,66,90
930 data126,36,24,52,28,36,60,0,0,36,24,52,28,32,60,0,0
940 data36,8,52,28,32,44,0,0,36,8,36,0,0,8,0,0,4,0,32,0,0,0,0,0
950 poke36879,27:print"{clr}{red}{down}schmatzer":print"{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}"
960 print"von hannes kaltenbach":print"{down}level? (1-8)";
970 geta$:l=val(a$):ifl<1orl>8then970
980 printa$:print"{down}joystick? (j/n) ";
990 geta$:ifa$<>"j"anda$<>"n"then990
1000 printa$:j=197:a=29:b=37:c=36:d=20
1010 ifa$="j"thenj=37151:pokej+3,127:a=110:b=119:c=118:d=122
1020 z=2:ifl>4thenl=l-4:z=1
1030 goto30
Listing des Basicprogramms »Schmatzer« für die Grundversion des VC 20
PDF Diesen Artikel als PDF herunterladen
Mastodon Diesen Artikel auf Mastodon teilen
← Vorheriger ArtikelNächster Artikel →