← Happy Computer 09 / 1986

Kampf dem Untier: Felix und der Maulwurf

Schneider Listing-Teil

Sind Sie KleingÀrtner? Nein? Auch gut. In jedem Falle sollten Sie sich an diesem pfiffigen Spiel versuchen.

Felix ist ein HobbygĂ€rtner wie es viele gibt. Eines Morgens traut Felix seinen Augen kaum: Ein Maulwurf ist dabei, die FrĂŒchte seines Fleißes zu untergraben. Und so muß er in die Rolle des JĂ€gers schlĂŒpfen und nebenbei die Blumen vor ihrem Schicksal retten. Da ist zum Beispiel das wĂŒhlende UngetĂŒm, dessen Löcher Felix zum Stolpern bringen. Wenn die Spielzeit einer Runde abgelaufen ist, bricht diese Mission ab, weil der Boden natĂŒrlich inzwischen ruiniert ist. Spielablauf

Auf dem Rasen als SpielflĂ€che verteilt der Computer die Blumen und RasenmĂ€her, die aufzusammeln sind. Dazu ist die Position des unterirdisch wĂŒhlenden Maulwurfs an einem Kreuz zu erkennen. Wenn dann unser Held Felix erscheint, haben Sie noch ein paar Sekunden Zeit, sich zu orientieren, bevor ein akustisches Signal und die VerfĂ€rbung des Bildschirm-Rahmens den Beginn der Hatz ankĂŒndigen.

Betritt Felix ein Feld zum zweiten Mal, hat das fĂŒnf Minuspunkte zur Folge. Ziel ist es, alle auf dem Rasen verteilten Dinge in Sicherheit zu bringen. FĂ€llt Felix in eines der Löcher, tritt er auf den grabenden Maulwurf oder betritt er ein RasenstĂŒck zum dritten Mal, endet sein Versuch und er bekommt eine weitere Chance. Nach drei Fehlversuchen hat er jedoch seine UnfĂ€higkeit bewiesen und wird zwangspensioniert. BewĂ€hrt er sich aber, dĂŒrfen Sie sich als sein SpĂ€her in die Annalen der Geschichte einschreiben.

Das Programm ist zwar fĂŒr Joysticks konzipiert, lĂ€ĂŸt sich jedoch leicht auf Steuerung ĂŒber die Tastatur umstellen, in dem Sie in den Zeilen 1030 bis 1060 die entsprechenden Tastencodes Ă€ndern. (Gerd Schröder/ja)

Steckbrief

Name: Felix und der Maulwurf
Computer: CPC 464/664/6128
Checksummer: Explora
DatentrÀger: Kassette, Diskette

10 '*********** [7B6C] 20 '* Ein Spiel von * [7FD2D 30 '* * [B2BC3 40 '* Gerd Schroeder * [BEC0]50 '* * [AAC03 60 ’* Heinsberg * [60B0] 70 '* * [42C4] 80 '* 1/86 * [A662] 90 *********** [4B7C3 100 REM **** VORSPANN **** [1678] 110 SPEED INK 15,15:ENV 1,13,-1,3:MODE 0 :BORDER 0:INK 12,3:PAPER 12:INK 13,2 6:PEN 13:INK 14,0:DIM farbe(11):FOR k=0 TO 10:INK k,0:NEXT k [F8E2] 120 FOR k=1 TO 5:LOCATE k+4,11:PRINT MID *("FELIX”,k,1):SOUND 4,300,30,13,l:F OR z»l TO 300:NEXT z,k [BA2C] 130 FOR k=1 TO 7:LOCATE k+6,14:PRINT MID M"und der" , k .1) :SOUND 4,200,30,13,1 }FOR z = l TO 300:NEXT zfk [468E] 140 FOR k=1 TO 8*LOCATE k*8,17sPRINT MID* '"MAULWURF",k,1):SOUND 4,150,30,13,1:FOR z-1 TO 300:NEXT z,k [B646] 150 INK 12,0: RESTORE 280:GOSUB 270-.EVERY 400,0 GOSUB 260:EVERY 550,1 GOSUB 2 90:EVER/ 40,2 GOSUB 310 [20C2] 160 LOCATE 1,1:PEN 14:PRINT "Start:Taste druecken":za»1 [224E] 170 FOR k-0 TO 90 STEP IO [4E80] 180 f =k /10+1:MOVE k,k:DRAWR 0,400-f*20,f :DRAWR 640-f*20,O,f:DRAWR 0,4*20-400 ,f:DRAWR f*20-640,0,f [OB7C] 190 NEXT k 138083 200 IF za=0 THEN f=10: f a—1: f b= 1 ELSE f = 1:fa=1:fb=11 [42EA] 210 FOR K=1 TO 11 [2BB0] 220 IF k+f<11 THEN INK k,farbe(k+f) ELSE INK k,4arbe(k—10+4) [885E] 230 NEXT k [F0FE] 240 f=f*fa:IF fOfb THEN 210 [F788] 250 a#=INkEY*:IF a$-"" THEN 200 ELSE 320 [F316] 260 IF zaehler-6 THEN RESTORE 280:zaehler-0 [8748] 270 FOR K=1 TO 10:READ x:farbe(k)=x:NEXT klzaehler=zaehler+l:RETURN [DA7A] 280 DATA 0,0,0,0,0,6,8,18,7,2,3,3,3.3,5, 3,3,3,3,3,0,6,0,8,0,18,0,7,0,2,0,0,0 ,0,2,0,0,0,0,6,0,0,0,6,6,6,6,6,6,6,0 ,0,0,24,6,0,0,0,24,6 [EA84] 290 INK 14,26:AFTER 100,3 GOSUB 300:RETURN [A8BE] 300 INK 14,0:IF za-0 THEN za=l:RETURN ELSE za-O:RETURN [3588] 310 v»INT(RND*26)+1:INK 13,v:RETURN [19A2] 320 REM **** VORBESETZUNGEN **«» [5C14] 330 CLS:4 4 -REMAIN(O):ff-REMAIN(1):ff=REM AIN(2):f f-REMAIN(3):RANDOMIZE TIME:P APER O:PEN 1:INK 0,3:INK 1,9:INK 2,2 O:INK 3,15:INK 4,18:INK 5,4:INK 6,26 :INK 7,0:INK 8,26,6:INK 9,26,1 [C2AA3 340 ENT -2,10,5,2,5,-11,2:ENV 2,15,1,5,15,-1,40 [B3A83 350 ENV 3,15,-1,7 [58E63 360 ENT -4,1,1,/:ENV 4,1,0,30,15,-1,40 [F852] 370 ENT -5,3,-1,1,3,1,1:ENV 5,1,0,30,15,-1,7 [4C82] 380 ENT 6,20,-5,1 [4EE2] 390 ENT 7,20,5,1 [428C3 400 ENT -8,10,-5,1,9,5,1 [F9763 410 DIM 4eld(20,22),4eld4a(20,22),pu(8), aname*(8),p(3),ze:le(25):p(l)=10:p(2 )=20:p(3)-50 [5BAC3 420 RESTORE 440:FOR K=1 TO 8:READ x,an$:pu(k)-x:anamel(k)=an$:NEXT k [DF683 430 RESTORE 450:FOR K=1 TO 25:READ x:zei1e(k)=x:NEXT k [025C3 440 DATA 5000,Maull,4000,Sesam,3500,Spie ler,3000,Ich,2500,Fatzke,2000,Hering ,1500,Letzter,1000,Hallo [D03E3 450 DATA 5,17,3,10,18,4,11,1,20,8,13,22,7, »2,19,2,14,9,16,21,6,15,»,24,35 [IAB41 460 SYMBOL 240,127,127,127,127,127,127,127,0 [A2183 470 SYMBOL 241,90,36,66,90,66,36,90,0 [257A3 480 SYMBOL 242,38,38,40,16,44,64,0,0 [B2FA3 490 SYMBOL 243,0,192,64,32,120,124,40,0 [0E0A3 500 SYMBOL 244,0,28,62,94,62,20,20,0 [3BE03 510 SYMBOL 245,28,42,20,73,62,20,20,54 [0FB03 520 SYMBOL 246,0,24,36,24,24,60,0,0 [0D74] 530 SYMBOL 247,0,0,28,8,28,20,0,0 [91B2] 540 SYMBOL 248,0,0,24,24,24,24,0,0 [200A3 550 SYMBOL 249,0,0,0,24,24,0,0,0 [70363 560 SYMBOL 250,0,0,0,0,8,0,0,0 [AB603 570 SYMBOL 251,62,93,107,119,107,93,62,0 [639A3 580 REM **** LEGENDE **** [BA8A3 590 PEN 2:BORDER 3:MODE 1:LOCATE 6,1:PRI NT"S P I EL—LEGEND E":LOCATE 5,2:PRINT STRING*(27,CHR*(154)) [2E6A3 600 LOCATE 1,4:PRINT CHR*(240)}TAB(5)"normales Spielfeld (gruen)" [D1EA3 610 LOCATE 1,6:PRINT CHR*(251);TAB(5)"einmal betretenes Feld" [3562] 620 LOCATE 1,8:PRINT CHR*(240);TAB(5)"Maulwurfloch (schwarz)" [B9783 630 LOCATE 1,10:PRINT CHR*(203);TAB(5)"Maulwurf unter Erde" [2F74] 640 LOCATE 1,12:PRINT CHR*(245);TAB(5)"-><2 SPACE>FELI X f 2 SPACEX-" [39DC3 650 LOCATE 1,14:PRINT CHR*(241);TAB(5)"Blume 1[5 SPACE3: 10 Punkte" [6172] 660 LOCATE 1,16:PRINT CHR*(242);TAB(5)”Blume 2[5 SPACE): 20 Punkte" [6F7E3 670 LOCATE 1,18:PRINT CHR*(243);TAB(5)"Rasenmaeher : 50 Punkte" [DDD4] 680 LOCATE 1,20:PRINT CHR*(244);TAB(5)"Maulwurf[4 SPACE): 100 Punkte" [A3B2] 690 PEN 3:LOCATE 5,23:PRINT"Spielbeginn: Leertaste druecken" [E6783 700 LOCATE 13,25:PRINT CHR*(164)j" Gerd Schroeder" [A074] 710 a$=INKEY*:IF a$<>" " THEN 710 [CAE2] 720 leben-3:level-1:pkte-0 [0894] 730 REM **** SPIELFELDAUFBAU **** [2D34] 740 MODE OiBORDER 0:SOUND 4,120,600,15,2.2 [2BBC3 750 PEN 1:F0R k-l TO 22:LOCATE l,k:PRINT STRING*(20,CHR*(240)):NEXT k [43B03 760 WINDOW #1,1,20,23,25:PEN #1,4:PAPER #1,5:CLS #1 [EE403 770 PRINT #1,"Level ";:PRINT #1,USING "#. #";level;:PRINT #1,"(4 SPACEJLeben "I STRING*(1 eben-1,CHR*(245))jSTRING*« 3-1 eben," ") [8CB2] 780 LOCATE #1,1,3:PRINT #l,"Punkte<6 SPA CE)Zeit 99":LOCATE #1,7,3:PRINT #l,p kte [8CF4] 790 FOR k-l TO 20:F0R 1-1 TO 22:feld(k,l>-240:feldfa(k,l)=l:NEXT 1,k [2C7A3 800 PEN 2 [47DA3 810 r=243:FOR k-l TO 3:G0SUB 910:NEXT k [8652] 820 r=242:FOR k-l TO 8:G0SUB 910:NEXT k [385C3 830 r-241:FOR k-l TO 10:G0SUB 910:NEXT k [8AAE3 840 IF 1evel=1 THEN 920 [A7F63 850 IF 1evel<5 THEN 1-<1evel-1)*8 ELSE 1 -24+<1evel-4)*5 [5504] 860 PEN 7»FOR k-l TO <level-l>«8 [ED3C3 870 x1=INT(RND*20)+1:yl-INT <RND*22) +1::S OUND 4,200,1,15:IF feldfa<xl,yl)<>1 THEN 870 [OB2C3 880 LOCATE xl,yl:PRINT CHR*(240)*feidfa(xl,vl)-7 [4564] 890 NEXT k [47163 900 GOTO 920 [DA5A3 910 xg=INT(RND*20)+l:yg-INT(RND*22)+l:S0 UND 4,60,1,15:IF feld(xg,yg><>240 TH EN 910 ELSE feld(xg,yg)-r:feldfa(xg, yg)-2:LOCATE xg,yg:PRINT CHR*<r):RET URN [C4503 920 xx-INT (RND*20)+l:yy=INT(RND*22)+l:IF feld (xx,yy> < >240 THEN 920 [E1C03 930 xmu-INT (RND*20) + 1: ymu=INT (RND*22) -*-1: IF feld(xx ,yy> < >240 OR(xmu-xx AND ym u=yy) THEN 930 [09D63 940 LOCATE xx,yy:PEN 9:PRINT CHR*(245):LOCATE xmu,ymu: PRINT CHR* (203) C725C3 950 FOR z-1 TO 3000:NEXT z:FOR k=l TO 7:SOUND 4,70,5,15:F0R z*l TO 80:NEXT z ,k:BORDER 3 [32403 960 EVERY 140-(1evel-1)*5,1 GOSUB 1220:EVERY 60,2 GOSUB 1510 [F3C83 970 zei t=99:sym=0 [3A563 980 REM **** BEWEGUNG FELIX **** [9382] 990 FOR k-l TO 3:DI [19FE3 1000 IF k*2 OR k-3 THEN FOR z-1 TO 50:NEXT z [2FBE3 1010 xv«0:yv-0 [41A63 1020 IF INKEY(73)—O THEN yv-liGOTO 1060 [71C03 1030 IF INKEY (72) —O THEN yv—lsGOTO 1060 [5C1A3 1040 IF INKEY(75)-O THEN xv«l*GOTO 1060 [82C63 1050 IF INKEY (74)-O THEN xv— 1 [176C3 1060 IF xx+xv>20 OR xx+xv<l OR yy+yv>22 OR yy+yv<l OR (xv-0 AND yv-0> THEN 1130 [1A5E 3 1070 IF leid(xx,yy> >239 AND feld(xx,yy)<244 THEN PEN 3:LOCATE xx,yy:PRINT C HR* (251 >: f el d (xx ,yy >-251: fel df a (xx , yy)-3:GOTO 1090 [CE6E3 1080 IF feldfa(xx,yy)-3 THEN PEN 7:L0CAT E xx,yy:PRINT CHR*(240):pkte-pkte-5 s-feld (xx ,yy>=240:feldfa(xx ,yy)=7:S0 UND 1,50,10,13 [61B4] 1090 xx-xx+xv:yy-yy+yv:IF feldfa(xx,yy)=7 THEN 1270 [22D83 1100 PEN 6:LOCATE xx,yy:PRINT CHR*(245): IF feldfa(xx,yy)-2 THEN SOUND 1,80-(feld(xx,yy>-240)*20,40,15,l:pkte«p kte+p (feld (xx ,yy) -240) : sym=sym+1 [59B03 1110 IF %ym-21 THEN 1430 [0E84] 1120 IF feldfa(xx,yy)-8 THEN SOUND 1,150 ,100,15,5,5: pkte=pkte+100: feld(xx,y y) =240: f el df a (>:x ,yy)-7:m-0 [8814 3 1130 LOCATE #1,7,3:PRINT #1,pkte:GOSUB 1330:EI:NEXT k [15B63 1140 REM #*** BEWEGUNG MAULWURF ***« [OBC2] 1150 DI:LOCATE xmu,ymu:PEN feldfa(xmu,ymu):PRINT CHR*(feld(xmu,ymu)) [AC7C3 1160 IF xx<xmu AND xmu>l THEN xmu-xmu-1 [EC6E3 1170 IF xx>>:mu AND xmu<20 THEN xmu=xmu+l [CBCE3 1180 IF yy<ymu AND ymu>l THEN ymu=ymu-l [E17E3 1190 IF yy>ymu AND ymu<22 THEN ymu=ymu+l [B0E2] 1200 PEN 9:LOCATE xmu,ymu:PRINT CHR*(203)sIF xmu=xx AND ymu-yy THEN 1270 [6F4C3 1210 EI:GOTO 980 [BC4C3 1220 REM **** MAULWURFLOECHER **+* [5BDC3 1230 x1 = INT(RND*20> >1:yl = INT(RND*22>+1:I F (x1—xx AND yl—yy) OR feldfa(xl,yl)—7 THEN 1230 [A132] 1240 IF feldfa(xl,yl)-2 THEN sym-sym+l [B6CE3 1250 IF sym=21 THEN 1430 [E88E3 1260 LOCATE xl,yl:PEN 7:PRINT CHR*(240): feld <xl,yl)=240:feldfa(xl,yl)-7:S0U ND 4,800,80,13,3:RETURN [406A3 1270 REM **** FALL IN MAULWURFLOCH **** [981A3 1280 ff-REMAIN(1):ff=REMAIN(2):m-0:PEN 6:SOUND 1,100,380,15,4,4 [8A4A3 1290 FOR k-245 TO 250 [E3603 1300 LOCATE xx,yy:PRINT CHR*(k):FOR z-l TO 600:NEXT z,k [7274] 1310 PEN 7:LOCATE xx,yy:PRINT CHR*(240):SOUND 1,200,100,13,1.,15:1eben=lebe n-1:IF leben-0 THEN GOSUB 1380:G0T0 1530 [91783 1320 GOSUB 1380-.GOTO 730 [97FE3 1330 REM **** MAULWURF AN OBERFLAECHE ? **** [3F583 1340 a=RND:IF m=l AND a>0.97 THEN 1370 [C0D03 1350 IF a>0.03 OR m=l OR xl=0 OR yl-0 THEN RETURN [D7D03 1360 xm=xl:ym=yl:PEN 8:LOCATE xm,ym:PRIN T CHR*(244):feld(xm,ym)=244:feldfa( xm,ym)=8:m=1:SOUND 2,120,20,15,,6:R ETURN [3A02] 1370 PEN 7:LOCATE xm,ym:PRINT CHR*(240): feld(xm,ym)=240:feldfa(xm,ym)-7:m-0 :SOUND 2,20,20,15,,7:RETURN [138A3 1380 REM **** BILD AUSBLENDEN **** [39383 1390 FOR k-l TO 50:v=RND*21+l:w=RND*21+ 1 :hg-zeile(v):zei1e(v)=zeile(w):zeil e(w)-hg:NEXT k [07263 1400 PEN O:FOR k-l TO 25 [9AFB3 1410 LOCATE 1,zeile(k):PRINT STRING*(20,CHR*(143)):SOUND 4,80+10*zei1e(k),5 ,13 [E084] 1420 FOR z-1 TO 30:NEXT z,k:RETURN [78C03 1430 REM **** NAECHSTER LEVEL **** [8F62] 1440 ff«REMAIN(1):ff-REMAIN(2):m-0:L0CAT E #1,7,3:PRINT #1,pkte:SOUND 4,200,500.15.. 8:F0R k-l TO 3:F0R 1-1 TO 1 1:FOR z-1 TO 15:INK 0,1:INK 1,1+2:I NK 3,1+5:BORDER 1+6:NEXT z,l,k:INK 0,3:INK 1,9:INK 3,15:BORDER 3 [51403 1450 FOR k-zeit TO 1 STEP -1 [A9863 1460 zeit-zeit-1:LOCATE #1,18,3:PRINT #1 ,USING "##"jzeit:SOUND 4,30+zeit,l, 14:pkte=pkte+l:LOCATE #1,7,3:PRINT #1,pkte [37BE3 1470 NEXT k [A36C3 1480 1evel=1evel+1:zeit=99:GOSUB 1380 [2602] 1490 PEN 2:FOR k-l TO 5:LOCATE 6+k,12:PR INT MID*("LEVEL",k,1):SOUND 4,200-k *20,30,14,1:FOR z-1 TO 300:NEXT z,k :PEN 9:LOCATE 13,12:PRINT 1evel:SOU ND 4,100,80,15,5,5 [603A3 1500 FOR z-1 TO 3000:NEXT z:GOTO 730 [OA763 1510 REM ***« ZEITBONUS **** [AE7C3 1520 zeit-zeit-1:LOCATE #1,18,3:PRINT #1 ,USING "##‱'; zei t: IF zeit-0 THEN 127 O ELSE RETURN [D8EE3 1530 REM **** HIGH-SCORE-TABELLE **** [D0D83 1540 SPEED INK 30,20:IF pkte<pu(7> THEN 1680 [E9E4] 1550 CLS:PEN 2:PRINT"Du{3 SPACE>bistI3 S PACE)in<3 SPACE)der":PRINT:PRINT "H igh Score Tabelle PRINT:PRINT:PRINT [18C2] 1560 RESTORE 1710:FOR k-l TO 12:READ s:R EAD t:SOUND 1,s,50,14:SOUND 4,t,50,14:NEXT k [73BC3 1570 PEN 8:PRINT "Bitte Namen eingeben": PRINT"(Max. 14 Buchstaben)":PRINT:P RINT:PEN 9 [A51E3 1580 a$—INKEY*:IF a$<>"" THEN 1580 IE77A3 1590 aname*(8)-""xpu(8)—pkte:INPUT "",an ame*(8):IF LEN(aname*(B>)>14 THEN 1 550 [C3CC 3 1600 FOR 1-1 TO 7 [09C4] 1610 h-pu(1):nr=l:ah$=aname*(1> [F672] 1620 FOR k=l+l TO 8 [42F63 1630 IF pu(k)<h THEN 1650 [A632] 1640 h«pu(k):nr=k:ah$=aname*(k) [A572] 1650 NEXT k [056C3 1660 pu(nr)=pu(1):pu(1)-h:aname*(nr)=aname*(1):aname*(1)-ah$ IFBB63 1670 NEXT 1 [A772] 1680 CLS:PEN 9:PRINT" HIGH SCORE TABELLE ":PEN 2:PRINT STRING*(20,CHR*(154)) [9FC63 1690 FOR k-l TO 7:LOCATE 1,k*3+2:PRINT a name*(k):LOCATE 15,k*3+2:PRINT pu(k ):PRINT:SOUND 2,120,2,15:NEXT k:LOCATE 3,25:PRINT"Spiel: Leertaste" [A914] 1700 a$-INKEY*:IF a$-H " THEN SPEED INK 15.15:GOTO 720 ELSE 1700 [C7683 1710 DATA 119,478,95,379,95,379,106,426,89,358.89,358,71,0, 95,0,89,358,106,379,119,478,119,478 [6092]