C 64
Listing des Monats

Spring Vogel, Spring

Kennen Sie Jumpman, Miner 2049 oder Mister Robot and his Factory? Dann haben Sie sich sicherlich geärgert, daß Sie nie die letzten Bilder erreicht haben. Oder Sie haben sich über die eintönigen Spielszenen geärgert. Mit dem Listing des Monats wäre das nicht passiert. Spring-Vogel ist eine Kombination aus den drei Spielen. Eines kann jedoch nicht mehr passieren! Wird eines der Bilder langweilig, dann machen Sie sich einfach ein neues.

Bild 1. So sieht das Titelbild mit den Wahlmöglichkeiten und der Funktionstastenbeschreibung aus

Tatsächlich kann man Spring-Vogel fast als Spielgenerator bezeichnen. Mit Spring-Vogel gelingt es Ihnen, sich jedes beliebige Spielfeld aufzubauen. Das klingt sehr vielversprechend, und das ist es auch. Spring-Vogel ist ein Vertreter der Jump and Run-Kategorie. Damit lassen sich also keine Schieß- oder Abenteuerspiele erzeugen, aber innerhalb der Spring- und Laufgruppe bleibt kein Wunsch offen. Worum handelt es sich bei Spring-Vogel nun eigentlich? Zunächst die Story.

Bild 2. Die erste Spielszene ist relativ leicht zu bewältigen

Ein heftiger Sturm hat einen Vogel – unseren Helden – mitsamt seinen Eiern aus dem Nest geweht. Durch den harten Aufprall auf die Erde hat er sich seine Flügel gebrochen. Er kann also nicht mehr richtig fliegen, sondern nur noch auf dem Boden laufen, hüpfen und springen. Die Aufgaben des Vogels (die genaue Klassifizierung bleibt Ihnen überlassen) besteht nun darin, in einem Labyrinth aus Aufzügen, Transportbändern, Seilen, Einbahnstraßen, Trampolinen, Rutschbahnen, Gummiwänden, magischen Flügeln, gemeinen Vogelfallen und mißgestimmten Monstern alle Eier wieder einzusammeln. Gelingt es dem Vogel, die Eier in einer Spielszene aufzunehmen, muß er mit der nächsten Überraschung fertig werden; es waren nicht alle. Das nächste vom Winde verwehte Bild erwartet ihn mit weiteren schwierigen Aufgaben.

Bild 3. Die dritte Spiel-szene zeigt bereits neue Elemente wie Rutschbahn und Förderbänder

Die Anzahl der Torturen für unseren leidgeprüften Helden bestimmen Sie selbst. Doch Vorsicht, unser Vogel verfügt nicht wie eine Katze über sieben, sondern »nur« über sechs Leben. Und diese sechs Leben sind schnell, durch Kontakt mit den Monstern oder Verzehrern einer roten Tollkirsche, ausgehaucht.

Bild 4. Szene vier. Nicht einfach und dadurch reizvoll

Der Sturz über mehr als vier Etagen ist ebenfalls für den flugunfähigen Vogel lebensbedrohend. Es sei denn, er findet die von seinem Tierschützer verstreuten »magischen Flügel«. Ausgestattet mit deren zauberhaften Fähigkeiten kann er in einem ökologischen Flecken beliebig umherfliegen. Durch Betätigen des Feuerknopfes wird er wieder in seinen behinderten Zustand zurückversetzt, erlangte allerdings vorher die Fähigkeit an unzugänglichen Stellen landen zu können. Diese magischen Flügel gestatten es, Bilder so aufzubauen, daß nur der taktisch gezielte Einsatz dieser Flughilfe es ermöglicht, ein Bild vollständig abzuräumen. Dabei kann es vorkommen, daß sich der Vogel in eine völlig aussichtslose Situation manövriert, und in einer Sackgasse landet. Auch hier bietet das Programm einen Ausweg an, die Funktionstasten. Diese können jederzeit (außer während der Flugphase) benutzt werden.

Bild 5. Szene fünf ist nicht unlösbar, man braucht aber Ausdauer.

Die genaue Bedeutung können Sie der Beschreibung zum Listing entnehmen. Um zu sehen, welcher Vogel von welchem Spieler der bessere ist, gibt es auch hier eine Punktezählung. Bei den bereits mitgelieferten Bildern ist diese in Zehnerschritten ab dem ersten Bild gestaffelt.
Entscheidungskriterien

Weshalb wurde dieses Programm zum Listing des Monats auserkoren? Das Hauptkriterium war die Realisierung eines Spielegenerators. Mit dem Editiermodus von Spring-Vogel lassen sich nahezu beliebig viele Bilder konstruieren. Wird ein Bild langweilig, so kann man ohne großen Aufwand ein neues mit noch größeren Schwierigkeiten entwickeln (versuchen Sie aber erst einmal, die beiden bereits existierenden Bilder 5 und 6 zu bewältigen). Der Phantasie sind keine Grenzen gesetzt.

Warum alleine spielen?

Vorstellbar ist ein Wettbewerb unter Freunden, wer das lustigste, das interessanteste, das schwierigste oder das raffinierteste Bild entwirft. Der Programmieraufwand hält sich für ein solch komplexes Programm in relativ bescheidenen Grenzen. Die vorgegebenen Bausteine bieten eine derartige Vielfalt an verschiedenen Bildern, daß jeder nach seinem eigenen Geschmack entwerfen kann. Insgesamt ein Programm, das durch Witz und Programmierkunst überzeugt.

(aa/Matthias Törk)

Bei dem ersten Start des Progrmms dauert es einige Zeit (bei weiteren Starts geht es dann schneller), bis sich das Programm mit der Frage »Edit, Wahl oder Spiel?« meldet.

Mit »W« kann man eines der sechs Bilder zum Spielen auswählen, mit »S« wird ein vollständiges Spiel ab Bild 1 gewählt.

Die Funktionstasten haben folgende Bedeutung:
f1: Dieses Spiel aufgeben, zurück zum Menü
f2: diesen Vogel opfern und mit dem nächsten Vogel neu an der Startposition beginnen
f3: mit dem nächsten Bild weitermachen
f5: Pause (weiter mit SPACE)

Für jedes Ei gibt es je nach Bild 10, 20… 60 Punkte. Wird ein Bild in einer bestimmten Zeit beendet, so erhält der Spieler einen Bonus, der um so größer ist, je schneller das Bild beendet wurde.

Der Editor

Der Editor dient dazu, eigene Spiele zu entwickeln. Mit ihm können neue Bilder erstellt werden, die im Programmtext selbst die alten Bilder überschreiben. Deshalb sollte das Programm vor dem Editieren, das neue Spiel nach dem Editieren unter neuem Namen gespeichert werden. Dazu einfach das Programm mit »STOP« abbrechen. Der Editor fragt zunächst, welches Bild geändert werden soll. Dann erscheint dieses Bild mit einem Cursor. Es stehen folgende Funktionen zur Verfügung:

←: die vorgenommenen Änderungen endgültig in den Programmtext übernehmen
f1: Editor verlassen, ohne Änderungen zu übernehmen. Das Bild bleibt erhalten, wie es vor dem Editoraufruf war. In beiden Fällen fragt das Programm, ob das Bild ausprobiert werden soll. Aus dem Spiel gelangt man mit f1 und E jederzeit in den Editor zurück.

Die Cursorsteuerung erfolgt wie gewohnt über die Cursortasten. SHIFT CLR: Bild löschen

Die Startposition des Vogels wird durch »0« festgelegt. In jedes Bild können zwischen 0 und 7 Monster gesetzt werden, die sich horizontal auf einer Breite von acht Spalten hin und her bewegen. Das linkte Ende dieser Bewegungsbahn kann mit den Tasten 1 bis 7 festgelegt werden.

Mit den Tasten A bis T können die 20 verschiedenen Bausteine, die zur Verfügung stehen, gesetzt werden. Der Vogel reagiert immer nur auf das Zeichen unter seinen Füßen. Bei Sprüngen reagiert er (außer bei Wänden) erst in der absteigenden Phase wieder auf Zeichen. Eine Übersicht über die Bausteine bietet die Tabelle 1. Dazu einige ergänzende Bemerkungen:

TASTE : BAUSTEIN
A : BODEN
B : LEITER UNTERES ENDE
C : LEITER OBERES ENDE
D : LEITER MITTELSTÜCK
E : SEIL HOCH
F : SEIL RUNTER
G : EINBAHNSTRASSE RECHTS
H : EINBAHNSTRASSE LINKS
I : TRANSPORTBAND RECHTS
J : TRANSPORTBAND LINKS
K : AUFZUG HOCH
L : AUFZUG RUNTER
M : RUTSCHBAHN RECHTS RUNTER
N : RUTSCHBAHN LINKS RUNTER
O : TRAMPOLIN
P : LUFT, FREIER FALL
Q : TOEDLICHE FALLE
R : EI
S : GUMMI-WAND
T :MAGISCHE FLÜGEL
Tabelle 1. Die verschiedenen Bausteine und ihre Bedeutung

Die Bausteine A bis D sind durch verschiedene Bewegungsmöglichkeiten gekennzeichnet. Springen ist möglich:
A: rechts, links
B: rechts, links, runter
C: rechts, links, rauf
D: alle vier Richtungen

Bei E bis H ist eine Bewegung nur in jeweils eine Richtung und kein Sprung möglich.

Bei I bis N wird der Vogel automatisch bewegt. Er selbst kann nur springen.

Der Trampolin O bewirkt einen zufälligen Sprung nach rechts oder links.

Bei der Gummiwand S wird der Vogel auf das letzte Zeichen, das weder Wand noch Luft war, zurückgeworfen.

Hinweise zum Eintippen

Da das Problem in die Interruptroutine eingreift und seinen eigenen Programmtext verändert, sollte es auf jeden Fall vor dem ersten Start abgespeichert werden.

Um das Abtippen des Listings zu erleichtern, wurden im Listing alle Steuerzeichen innerhalb von Printbefehlen durch leicht lesbare Worte entsprechend Tabelle 2 ersetzt. Wenn zum Beispiel im Listing <CD> steht, dann ist an dieser Stellle CURSOR DOWN einzugeben.

Im Listing : zu drückende Taste
<HO> :HOME
<CLR> :CLR
<RON> :RVS ON
<ROF> :RVS OFF
<CD> :CURSOR DOWN
<CU> :CURSOR UP
<CR> :CURSOR RIGHT
<CL> :CURSOR LEFT
<F1 >...<F8> :FUNKTIONSTASTEN
<BLK>...<YEL> :FARBEN 0-7
[1]...[8] :FARBEN 8-15, ZIFFER + COMMODORE-TASTE
Tabelle 2. Darstellung der Steuerzeichen im Listing

Um Tippfehler bei den zahlreichen DATA-Zeilen besser lokalisieren zu können, wurden diese in verschiedene Blöcke mit jeweils eigener Prüfsumme aufgeteilt.

Um das Eintippen der sechs Bilder zu erleichtern, wurden die Zeilen ab 60000 im Kleinschriftmodus gelistet. Hier ist für jeden Großbuchstaben (nicht bei den Ziffern!) die entsprechende Taste zusammen mit SHIFT zu drücken. Hier ist vor allem darauf zu achten, daß jeder PRINT-Befehl genau 39 Zeichen enthält. Fehlende Zeichen können zur Zerstörung des Programms führen, da der Editor diese Zeilen überschreibt.

Daß die jeweils 39 Zeichen genau mit dem Listing übereinstimmen, ist dagegen nicht so wichtig. Durch Abweichungen wird hier allenfalls die Spielbarkeit des vorgegebenen Spiels beeinflußt, ein Mangel, der jederzeit mit dem Editor behoben werden kann. Im Prinzip ist es auch möglich, auf das Abtippen der Bilder 2 bis 6 zu verzichten und an anderer Stelle einfach mit Hilfe des Bildschirmeditors fünfmal das erste Bild zu kopieren. Auf jeden Fall aber muß die Zahl der Zeilen, die Zeilennummer und die Länge der Zeilen mit dem Listing übereinstimmen.

Um das Eintippen der Bilder zu erleichtern, wurden diese in der vorliegenden Programmversion in den Programmtext selbst gelegt. Deshalb ist die Zahl der Bilder auf sechs (diese Zahl wurde gewählt, um die Tipparbeit in erträglichen Grenzen zu halten) festgelegt. Die Anzahl der Bilder kann aber folgendermaßen erhöht werden:

Der Variablen BM in Zeile 50070 ist die gewünschte Anzahl zuzuweisen. Für jedes weitere Bild sind dem Programm entsprechend dem Schema der ersten sechs Bilder 22 PRINT-Zeilen, die jeweils 39 beliebige Zeichen ausgeben, und ein abschließendes RETURN, anzufügen. Die erste Zeilennummer eines Bildes berechnet sich nach der Formel 59900 + Bildnummer*100 + 1, zum Beispiel 60601 für Bild 7.

(Matthias Törk/aa)
XS,YS : Spritekoordinaten des Helden
XG,YG : Koordinatengrenzen
OX,OY : Koordinatenoffset Sprite/Zeichen
TG : Zeitlimit
BM : maximale Bildzahl
BI : aktuelles Bild
UP(), DO(), RI(), LE(), DX(), DY() : Bewegungstabellen
JU() : Sprungtabelle
CO() : Farbtabelle
JP,JS : Joystick
EZ,EM : Anzahl Eier
SC : Punkte
MZ : Anzahl Leben
CP : Cursorposition
BS : Bildschirmadresse
FR : Adresse Farb-RAM
KO : Sprite-Kollisionsregister
V : VIC-Chip
ZS : Adresse Zeichensatz
EA : Adresse Bilder
SI,W1,GL,GH : Sound
Tabelle 3. Die wichtigsten Variablen von Spring-Vogel
50000: INITIALISIERUNG
48000: MENUE
49000: EDITOR
45000: AB BILD BI SPIELEN
1050: EIN BILD SPIELEN
46000: BILD BI INITIALISIEREN
500: JOYSTICK
600: FIGUREN BEWEGEN
40000: SPRINGEN
11000: EI
2000: LUFT
12000: TOEDLICHE FALLE
15000: FLIEGEN
Tabelle 4. Die wichtigsten Routinen nach Zeilennummern aufgeschlüsselt
10 rem *** spring-vogel 9.3.list
11 rem *** m.toerk     17.6.84
20 poke53280,0:poke53281,0
25 print"{clr}nicht wundern und warten!!"
30 gosub50000:goto48000
499 rem ** joystick **
500 js=peek(jp):if(jsand16)=0thengosub40000:goto600
505 if(jsandq1)=q0thenpokew1,sw:ifup(cm)thenys=ys-q8:goto590
510 if(jsandq2)=q0thenpokew1,sw:ifdo(cm)thenys=ys+q8:goto590
520 if(jsandq4)=q0thenpokew1,sw:ifle(cm)thenxs=xs-q4:goto590
530 if(jsandq8)=q0thenpokew1,sw:ifri(cm)thenxs=xs+q4
590 pokew1,q0
600 ifxs<oxthenxs=ox
620 sys(sr)q0,xs,ys:return
1000 rem *** main loop **
1050 ifpeek(ta)then1200
1055 ifpeek(ko)andq1thencm=16:pokeko,0:goto1100
1060 cm=usr(xs-ox),ys-oy:ifcm=z8thenxs=8*peek(49426)+ox:ys=8*peek(49427)+oy
1070 ifcm>q7thenxs=xs+dx(cm):ys=ys+dy(cm)
1075 ifti<tgthenprint"{home}",int(ti/100)
1080 ifcm<z4thengosub500:goto1050
1100 oncm-13goto3000,2000,12000,11000,1050,15000
1200 getb$:ifb$="{f1}"thenreturn
1210 ifb$="{f3}"thencm=16:goto1100
1215 ifb$="{f5}"then11040
1217 ifb$="{f7}"thenpoke198,0:wait198,1
1220 goto1050
2000 i=0:pokew1,33
2010 i=i+1:ys=ys+4:ifi>8orys>ygthencm=16:pokew1,0:pokesi+1,gh:goto1100
2015 pokesi+1,40-2*i
2020 gosub600:cm=usr(xs-ox),ys-oy:ifcm=15then2010
2025 ifcm=18thenxs=fnx(xs)
2030 pokew1,0:pokesi+1,gh:ys=fny(ys):goto1050
3000 rx=2-4*int(rnd(1)*2):gosub40100:gosub600:goto1050
10999 rem ** gegenstand positiv, ei**
11000 pokebs+40*peek(49427)+peek(49426),80:sc=sc+bi*10:ez=ez+1
11030 ifez<emthenprint"{home}",,sc:goto1050
11035 ifti<tgthensc=sc+int((tg-ti)/10)
11040 bi=bi+1:ifbi>bmthenreturn
11050 gosub46000:goto1050
11999 :
12000 mz=mz-1:ifmz=0thenreturn
12050 print"{home}",,sc,mid$("******      ",7-mz,6)
12052 pokew1,17
12055 forxs=xstoxxstepsgn(xx-xs):gosub600:pokesi+1,49+(xsand1):next
12057 forys=ystoyystepsgn(yy-ys):gosub600:pokesi+1,52+(ysand1):next
12060 xs=xx:ys=yy:pokeko,0:pokew1,0
12070 goto1050
15000 pokev+29,255:pokebs+40*peek(49427)+peek(49426),80:cm=3:xs=xs-10:sw=17
15050 js=peek(56320)
15052 if(jsand16)=0thenxs=xs+10:pokev+29,254:gosub600:pokeko,0:sw=129:goto1050
15055 ifys<oythenys=oy
15056 ifys>ygthenys=yg
15057 ifxs>xgthenxs=xg
15060 gosub505:goto15050
39999 rem **** jump ****
40000 ifcm>3andcm<8thenreturn
40005 rx=0:if(jsand4)=0thenrx=-2
40010 if(jsand8)=0thenrx=2
40100 pokesi+6,16*15+13:pokew1,17:pokew1,16:fori=0to13
40120 pokesi+1,104-ju(i):ys=ys-ju(i):xs=xs+rx:gosub600
40130 cm=usr(xs-ox),ys-oy:
40140 ifcm=18thenxs=fnx(xs):goto40300
40150 ifi<9thenpokeko,0:goto40250
40235 ifcm<>15or(peek(ko)and1)then40300
40250 next
40300 ifcm<>15thenys=fny(ys)
40310 pokew1,0:pokesi+6,16*15:pokesi+1,gh:return
45000 mz=6:sc=0:gosub46000
45100 gosub1050:pokev+21,0
45150 fori=1to3000:next
45160 print"{clr}{down}{down}{down}{down}{yel}","{grn}das wars!!!":print"{down}erreichte punktzahl:{rvon}",sc
45163 ifsc>hsthenhs=sc
45165 print"{down}high score:{rvon}",,hs
45170 print"{red}-------------------------------------{lblu}":print,"{down}** jump!! **"
45180 if(peek(56320)and16)<>0then45180
45190 return
46000 sys(49155)0:ez=0:xx=120:yy=120
46010 pokew1,0:pokesi,gl:pokesi+1,gh:sw=129:rem sound
46015 a=0:ifti<tgthena=int((tg-ti)/10)
46020 print"{clr}{yel}   bonus:",a,"{left}{left}{left}{left}pkt:";sc,mid$("******      ",7-mz,6):print
46030 fori=1to7:pokexh+i,1:pokexl+i,170:pokety+i,0:next
46050 onbigosub60000,60100,60200,60300,60400,60500
46100 em=0:fori=80to958:c=peek(bs+i):ifc=80thennext:goto46200
46105 ifc=82thenem=em+1
46110 ifc>64andc<85thenpokefr+i,co(c-65):next:goto46200
46120 pokefr+i,0:c=c-48:xs=(i-int(i/40)*40)*8+ox:ys=int(i/40)*8+oy
46121 ifc<0orc>7then46140
46130 pokety+c,ys+12:pokexh+c,xs/256:pokexl+c,xsand255:ifc=0thenxx=xs:yy=ys
46140 next
46200 ti$="000000":tg=5000+2000*bi:ys=yy:xs=xx
46220 print"{home}b";bi;"{left}  zeit:";"      ":return
48000 rem *** menue ***
48040 pokev+21,0:print"{clr}{lblu}{down}":gosub60500
48041 print"{up}{up}{up}{up}{up}","{orng}{rght}Sf1: aufgebenS":print,"{rght}Sf3: _ vogel S"
48042 print,"{rght}Sf5: _ bild  S":print,"{rght}Sf7: pause   S"
48043 print"{home}{yel}AAAAAAAAAAAA spring vogel AAAAAAAAAAAA"
48044 print"{grn}{rvon}e{rvof}dit, {rvon}w{rvof}ahl oder {rvon}s{rvof}piel";
48045 inputb$:ifb$="e"thengosub49000:goto48040
48050 ifb$="s"thenbi=1:gosub45000:goto48040
48060 ifb$<>"w"then48040
48070 input"{clr}{down}welches bild spielen";b$:bi=val(b$):ifbi<1orbi>bmthen48070
48080 gosub45000:goto48040
48999 rem *** editor ****
49000 input"{clr}{down}{down}{down}welches bild";b$:bi=val(b$):ifbi<0orbi>bmthen49000
49020 print"bitte warten":zn=59900+bi*100:za=ea
49050 iffnad(za+2)<znthenza=fnad(za):goto49050
49055 poke53281,1:print"{clr}{down}":poke53281,0
49060 onbigosub60000,60100,60200,60300,60400,60500
49069 rem farbe setzen
49070 fori=80to958
49071 c=peek(bs+i)-65:ifc>=0andc<20thenpoke55296+i,co(c):next:goto49095
49075 poke55296+i,1:next
49095 cp=80:print"{home}{lblu}zeichen: {rvon}a-t{rvof}  pos: {rvon}0-7{rvof}  {rvon}curs.{rvof}  {rvon}clr{rvof}"
49096 print"aenderungen uebernehmen: {rvon}_{rvof}  quit: {rvon}f1{rvof}"
49100 poke646,peek(cp+55296):poke204,0
49105 getb$:ifb$=""then49105
49110 poke207,0:poke204,1:pokebs+cp,peek(bs+cp)and127
49120 c=asc(b$):ifc>64andc<85thenpoke646,co(c-65):printchr$(c+32);:goto49140
49125 ifb$>="0"andb$<"8"thenprint"{wht}";b$;
49130 ifb$="{down}"orb$="{up}"orb$="{rght}"orb$="{left}"thenprintb$;
49140 ifpeek(211)>38thenprint"{left}";
49150 cp=peek(211)+40*peek(214):ifcp>=24*40orcp<80thencp=80:print"{home}{down}"
49155 ifb$="{clr}"thenpoke53281,1:print"{clr}{down}":poke53281,0:goto49095
49160 ifb$<>"_"andb$<>"{f1}"then49100
49170 ifb$="{f1}"thenreturn
49200 b=bs+40:print"{home}      **** bitte warten ***        "
49210 fori=0to21:za=fnad(za):a=za+6:b=b+40
49220 forj=0to38:c=peek(b+j)
49221 ifc>=48andc<=55thenc=c-32:goto49230
49229 ifc<65orc>84thenc=80
49230 pokea+j,c+32:nextj,i
49350 input"{clr}{down}bild spielen (j/n)";b$:ifb$="n"thenreturn
49370 gosub45000:return
49499 return
49999 rem
50000 rem ** init **
50010 cm=0:xs=0:ys=0:js=0:ox=14:oy=36:t=0:tg=2000
50020 q0=0:q8=8:q4=4:q1=1:q2=2:q7=7:z8=18:z4=14:jp=56320:sr=49249:ta=198
50040 xh=49400:xl=49392:ty=49432
50042 deffny(y)=peek(49427)*8+oy
50045 deffnx(x)=peek(49426)*8+ox
50050 v=53248:bs=256*204:xg=320+ox:yg=200+oy
50060 ko=v+30:fr=55296:rem spr.kollis.reg / farbram
50070 poke786,193:poke785,32:bm=6:rem usr adr.,max.bilder
50090 dimju(13):fori=0to13:readju(i):next
50100 data5,4,3,2,1,1,0,0,-1,-1,-2,-3,-4,-5
50215 fori=bs+1017tobs+1023:pokei,16:next:pokebs+1016,14
50220 pokev+23,0:pokev+29,254:pokev+39,7
50230 dimx(7),y(7),rx(7),ry(1):fori=0to7:x(i)=100:y(i)=100:next
50249 rem mapro-tabellen
50250 fori=1to7:pokev+39+i,i:poke49432+i,30*i:poke49392+i,35*i:poke49400+i,0
50251 poke49416+i,1:poke49408+i,5+rnd(1)*45:next:poke49401,1
50252 poke49424,1:rem sb-flag
50410 dimup(20),do(20),ri(20),le(20),dx(20),dy(20)
50422 ri(0)=1:le(0)=1:ri(1)=1:le(1)=1:up(1)=1:ri(2)=1:le(2)=1:do(2)=1
50437 up(3)=1:do(3)=1:ri(3)=1:le(3)=1:up(4)=1:do(5)=1:ri(6)=1:le(7)=1:dx(8)=4
50477 dx(9)=-4:dy(10)=-8:dy(11)=8:dy(12)=8:dx(12)=8:dy(13)=8:dx(13)=-8:dy(15)=4
50599 rem sound
50600 si=54272:w1=si+4
50620 pokesi+24,15
50625 pokesi+5,0:pokesi+6,15*16+0
50630 gl=180:gh=18:a=0
50710 fori=13to16:forn=0to62:readq:a=a+q:poke49152+i*64+n,q:next:next
50720 ifa<>16572thenprint"dataerror":stop
50800 data0,255,0,1,255,128,1,153,128,1,153,128,3,255,192,31,195,248
50805 data63,227,252,103,243,230,195,249,195,131,253,193,3,255,192
50807 data3,255,192,1,231,128,0,231,0,0,102,0,0,102,0,0,102,0,1,231,128
50809 data,,,,,,,,
50810 data0,255,0,1,255,128,129,153,129,193,153,131,99,255,198,63,195,252
50815 data31,199,248,7,207,224,3,159,192,3,191,192,3,255,192
50817 data3,255,192,1,231,128,0,231,0,0,102,0,0,102,0,0,102,0,1,231,128
50819 data,,,,,,,,
50850 data0,192,0,1,224,0,3,240,0,2,208,0,2,208,0,3,240,0,3,240,0
50855 data3,48,0,15,112,0
50857 data,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
50870 data0,192,0,1,224,0,3,240,0,2,208,0,2,208,0,3,240,0,3,240,0
50875 data3,48,0,3,188,0
50880 data,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
51000 dimco(19):fori=0to19:readco(i):next
51010 data5,5,5,2,10,8,13,13,5,5,4,4,4,4,12,1,2,7,8,14
52000 rem edit-anfangsadr.
52010 deffnad(x)=peek(x)+256*peek(x+1)
52020 ea=2049
52050 iffnad(ea+2)<59800thenea=fnad(ea):goto52050
58000 rem zeichensatz nach $e0000 (zs), viderram nach $cc00 (bs)
58020 zs=14*4096:zv=53248
58040 if(peek(53272)and254)=56thenreturn
58050 poke53272,56:poke56576,148:poke648,204:bs=204*256
58055 print"{clr}       geduld":print:gosub60400
58060 poke56334,0:poke1,51
58070 fori=0to2047:pokezs+i,peek(zv+i):next
58075 poke1,55:poke56334,1:a=0
58090 readc:a=a+c:ifc>255then59010
58095 h=zs+8*(c+65):fori=0to7:readc:a=a+c:pokeh+i,c:next
58098 goto58090
58100 data0,255,60,24,24,24,60,255,255
58110 data1,66,66,66,66,255,24,24,255
58120 data2,255,24,24,255,66,66,66,66
58130 data3,66,66,126,66,66,66,126,66
58140 data4,12,24,48,0,12,24,48,0
58150 data5,48,24,12,0,48,24,12,0
58160 data6,255,129,8,4,62,4,8,255
58170 data7,255,129,16,32,124,32,16,255
58180 data8,255,56,28,14,14,28,56,255
58190 data9,255,28,56,112,112,56,28,255
58200 data10,66,66,90,102,102,66,66,66
58210 data11,66,66,102,102,90,66,66,66
58220 data12,192,208,112,56,28,14,7,3
58230 data13,3,7,14,28,56,112,208,192
58240 data14,255,62,12,48,192,48,12,62
58250 data15,0,0,0,0,0,0,0,0
58260 data16,0,126,126,102,102,126,126,0
58270 data17,24,60,60,126,126,126,60,24
58280 data18,0,223,223,0,0,251,251,0
58290 data19,0,102,255,153,153,56,56,0
58299 data999
59000 rem ** mapros **
59010 ifa<>14182thenprint"data-error in 58100ff":stop
59014 a=0:fori=49152to49378:readn:pokei,n:a=a+n:nexti
59016 ifa<>27365thenprint"data error":stop
59020 data80,70,83,32,158,183,224,8,176,31,189,219,192,45,21,208,141
59022 data21,208,96,32,158,183,224,16,176,14,134,2,32,253,174,32,235
59024 data183,165,21,201,2,144,3,76,72,178,138,72,166,2,32,10,192
59026 data189,219,192,45,16,208,141,16,208,70,21,144,9,189,211,192,13
59028 data16,208,141,16,208,138,10,170,104,157,1,208,165,20,157,0,208
59030 data166,2,189,211,192,13,21,208,141,21,208,96
59099 rem
59100 data32,20,192,173,16,193,73,254,141,16
59102 data193,162,7,189,248,207,24,109,16,193
59104 data157,248,207,202,16,243,169,7,133,2
59106 data166,2,189,0,193,24,125,8,193,157
59108 data0,193,201,64,144,11,189,8,193,73
59110 data254,157,8,193,176,232,234,24,125,240
59112 data192,133,20,42,29,248,192,41,1,234
59114 data234,133,21,189,24,193,32,45,192,198
59116 data2,208,203,173,30,208,96
59140 data253,174,32
59142 data9,185,211,192,13,29,208,141,29,208,70,2,144,9,185,211,192
59144 data13,23,208,141,23,208,96,1,2,4,8,16,32,64,128,254,253
59146 data251,247,239,223,191,127
59190 rem
59195 a=0:fori=49440to49505:readn:a=a+n:pokei,n:next
59196 ifa<>8224thenprint"data error":stop
59200 data32,238,183,102,21,165,20,106,74,74
59202 data133,211,201,40,144,4,169,15,176,42
59204 data133,211,138,74,74,74,133,214,32,108
59206 data229,164,211,177,209,56,233,65,201,20
59208 data144,2,169,15,201,15,240,14,201,18
59210 data240,10,166,211,142,18,193,166,214,142
59212 data19,193,168,76,162,179
59800 return
59999 rem bild 1
60000 :
60001 print"PPPPPPPPPPPPPRPPPPPPPPPPPPPPPPPPPPPPPPS"
60002 print"PPPPLJJJJAAAAAAAAQAAAAPPPIIIITPPPPPPRPS"
60003 print"PPPPLPPPPPEPPPPPPPPPPPPPPPPPPPPPPPPPPPS"
60004 print"PPPPLPPPPPEPPPPPPPPPPPPPPPPPPPPRPPAAAAS"
60005 print"PPPPLPPPPPEPPPPPPPPPPPPPPPPPPAAAAAPPPSS"
60006 print"PPRPLPRPPPEPPPPPPPPSSSSSSSSSPPPPPPPPPSS"
60007 print"PAAACAAAPPEAAAAPPPPPPPPPPPPPPPPPPPPPRSS"
60008 print"PPPPFPPPPPEPPPPPPP2PPPPPPPPPPPPPPPPPPSS"
60009 print"PPPPFPPPPPEPPPPAAAAAAAAAAAAAAAAOAAAAASS"
60010 print"PPPPFPPPPPEPPPRPPPPPPPPPPPPPPPPPPPPPDPP"
60011 print"PPPPFPPPPPEPPAAAAAPPPPPPPPPPPPPPPPPPDPP"
60012 print"PPPPFPPPPPEPPPPPPPPPPPPPPPPPPPPPPPPPDPP"
60013 print"PPP1FPPPPPEPPPPPPPPPPPPPPPPPPPPPPPPPDPP"
60014 print"PPPPFPPPPPEPPPPPPPPPPPPPPPPPRHHHHHHABAC"
60015 print"PPPPPPPPPPEPPPPPPPPRPPPPPP3PFPPPPPPPPPD"
60016 print"PPPPRPPPPPEPPPPPPPPAPPPPPPPPFPPPPPPPPPD"
60017 print"PPPPGGGGGGEPPPPPPPRKRPPPPPPPFPPPPPPPPPD"
60018 print"PPPPPPPPPPPPPPPPPPAKAPPPIIPPFPPPPPPPRPD"
60019 print"PPPPPPPPPPPPPPPPPPPKPPPPKPRPFPPPPRPPAAB"
60020 print"PPPPPPPPPPRPPPPPPPPKPPPPKPPPPPPAAAAPPPP"
60021 print"P0PPRPPPPAAAAIIIRPPKPPPPKAAAAPPPPPPPPPP"
60022 print"AAAAAAAAASSSSSSSAAABAIIIKSSSSSSSSSSSSSS"
60030 return
60100 :
60101 print"PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP"
60102 print"PPPPPRPPRPPPPPPPPPPPPPPPPPPPRPPPRPPPPPP"
60103 print"AARAAAAAAAAPPPAAARPRAAAPPPAAAAAAAAAARAA"
60104 print"PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP"
60105 print"PPRPPPPPIIIIP4PPPPPPPPPPPJJJJPPPPPPPRPP"
60106 print"PPPPPPPPPPPPPRJJJJAIIIIRPPPPPPPPPPPPPPP"
60107 print"PPRIIIIPPPPPPPPPPPPPPPPPPPPPPPJJJJJPRPP"
60108 print"PPPPPPPJJJPPPPPPPPPPPPPPPPPIIIPPPPPPPPP"
60109 print"PPRPPPPPPPJJJJPPPPPPPPPIIIIPPPPPPPPPRPP"
60110 print"PPPPPPPPPPPPPPJJJPPPIIIPPPPPPPPPPPPPPPP"
60111 print"PP0PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP"
60112 print"CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
60113 print"DSPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP"
60114 print"DSPRPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPTP"
60115 print"DSPAPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPAP"
60116 print"DSPPP5PPPPPRPPPPPRPPPPPPRPP6PPRPPPPPPPR"
60117 print"DSAACPPPPCAAAAAAAAAAAAAAAAAAAAAAAACAAAA"
60118 print"DPPPDPPPPDPPPPPPPPPPPPPPPPPPPPPPPPDPPPP"
60119 print"DTPPDPPPPDPPPPPPPPPPPPPPPPPPPPPPPPDPPPP"
60120 print"DAPPDPPPPDPPPPRPPRPPPRPPRPPRPPRPPPDPPPR"
60121 print"DPPPDPPP2DPPPPPPPPPPPPP3PPPPPPPPPPDPPPP"
60122 print"BAAABAAAABAAAAAAAAAAAAAAAAAAAAAAAABAAAA"
60150 return
60199 rem bild3
60200 :
60210 print"SSSSRHHPQPJJJCIIIPPPIIIRIIPPPAAAAAAAAAR"
60214 print"PPPSFSPPPPSPPDPSSPPQPPPLPPPPPPPPPPPPPPN"
60216 print"IIRSFSPPPPSPPDPSSPPPPSPLPPPPPPPP0PPPPNP"
60218 print"KPPSFSPPRPSPPDPSSPPPRSPLPPPPPPPPAPPPNPP"
60220 print"KPLSFSPPRPSPPDPSSPPAASPLPPPPPPPPPPPNPPP"
60222 print"KPLSFSPPRPSPPDPSSPPPPPPLPPPPPPPPPPNPPPP"
60224 print"KPLSFSPPPPSPPDPSSAAPPPPLPPPPPPPPPNPPPPP"
60226 print"KPLSFSP5PPPPPDPSPP6PPPPLPPPPPPPPNPPPPPP"
60228 print"KPLSFSPPIILPPDPSPPAAPPPLPPPPPPPNPPPPPPP"
60230 print"KPLSFSPPPPLPPDPSPPPAAPPLPPPPPPNPPPPPPPP"
60234 print"KPLSFSPPPPLPPDPSPPPPPPPLPPPPPNPPSPPPPPP"
60237 print"KPRSFSPPPPLPPDPSAAAPPPPLPPP4NPPPSPPPPRP"
60240 print"KPPSFSPPPPLPPDPSPPPAAAPLPPPNPPPPSPPPAAP"
60244 print"KPPSFSPPPPLPPDPSPPPPPKPLPPRPPPPPSAAAPPP"
60247 print"KPPSFSPPPPIIIDIIIIIIIKPLPPMPPPPPPPPPPPP"
60250 print"KPTSLSPPPPPPPDPPPPPPPPPLPPPMPPPPPPPPAAP"
60254 print"KPPSLSPPPPPPPDPPPPPPPPPLPPPPMPPPSPPP2PP"
60258 print"KJJJJSPPRPP1PDPPPPPPPPPLPPPPPMPPSAAAPPP"
60260 print"PPPPPPPPAAAPPDPPPPPPPPPLPPPPPPMPPPPPPPP"
60263 print"PPPPPPPPPPPPPDPPPPPPPPPLPPPPPPPMPPPPAAA"
60264 print"PPPPPPPPPPPPPDPPPPRPP3PLPPPPPPPPMPPPPPP"
60270 print"AAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAA"
60280 return
60299 rem bild4
60300 :
60301 print"PAAARAAPPPPPPPPPPPPPPPPPPPPPPSSSPRJJJJJ"
60302 print"PPPPPPPIIIIIIIRIIIIICIIIIIIILSSNJJ2PPPK"
60303 print"PPPPPPPPPPPPPPRSSSSSLSEPPPPPLSNPPPPPPPK"
60304 print"PPPIIIIPPPPJJJJSSPPPLSEPPPPPLNPPPPPPPRK"
60305 print"PPPPPPPPPPPP3PPSPPPPLSEPPJAABIPPPIIPPAB"
60306 print"JJJPPPPPPPPPPPPSARSSLSERPPPPPPPPPPPPPPP"
60307 print"PPPPPPPPPPPPPPPSSMSSLSEIPPPPPRPPPPPPPPR"
60308 print"PPPPRJJJPPPPPPPSSSPSLSEPRPPIIIPPPIIPPIC"
60309 print"PPFHHHHHPPJJJPPPPSRSLSEPIPPPPPHHHHHHHHD"
60310 print"PPFSPPPPPPPPPPPPPSPSLSEHHHHHHHPPPPPPPPD"
60311 print"PPFSPPPPPFPPJJJJPSRSLSEPPPPPPPPPPPPPPPR"
60312 print"PRFSPPPPPPPPPPPPPSPSLSEPPRPPPRPPPPPPPPJ"
60313 print"FAHSPPPPPPPPPPIIPSRSLSEPPAPPJJJPPOPPPAP"
60314 print"FPPPPPIIIPIIIPPPPSPSPSPPAHHHHHHHHHHHPPR"
60315 print"FPPPIIIPPPPPPPPPPPPPPPPPSSSSSSSSSSSSAAA"
60316 print"IIIIIGGGGGGGGGGGGGGGGGGGGGLSSSSSSSSSSSS"
60317 print"SDSSSSSSSSSSSSSSSSSSSSSSSSLSSSPPPPPPPPS"
60318 print"SDPSSSSSSSSSSSSSSSSSSSSSSSLSSSPPPRPPPRS"
60319 print"SDRSSSSSSSSSSSSSSSSSSSSSSS0SSSRPPIPPPAS"
60320 print"SDPPPPPPPPPPPPPPPPPPPPPPPPPSSSIPPPPPPPS"
60321 print"SDP1PPPPPPPPPPP4PPPPPPPPPPPPPPPPPP5PPPS"
60322 print"ABAAAAAAAAAAAAJJJJJJJJJJJJAAAAAAAAAAAAS"
60380 return
60399 rem bild5
60400 :
60401 print"AAARAQJPP1ARAGCHARAPPPPRJJJAAAPCPPPPPPP"
60402 print"PPPPSSSPPPPPPPDPPPPPPPPPPPPPPPPKPPPPPPP"
60403 print"PPPPSSSPPPPPPPDPPPPPPPPPPPPPPPPKJJPPPPP"
60404 print"PPPNSSSPPPPRPPDPPRPPPPPMPPPPPPPPPPPPPPP"
60405 print"PPNPSSSIIIIIPPDPPPPPPPPPPPPPPPPPPPAAPPP"
60406 print"PPMPSSSPPPPPQPEPPPPPPPPPPPPPRPPPHHPPPPP"
60407 print"PPPMPSSCAPPPPPEPPJJJCOPPOPPPOPPOPPPPPPP"
60408 print"PPPIMPPDPSPPPPEP3PPPDPPPPPPPPPPPPPAAAPP"
60409 print"RPPPPMPDPSAARABAAPPPDPPPIIIIPJJJJPPPPRP"
60410 print"AAPPPPMDPSPPPPPPPPPPDPP2PJJJJPPPPPPPAAP"
60411 print"QJJJPPPDPSAAAAAQJJJJDPPPPPPPPPPPPPIIIPP"
60412 print"PPPPPPPDPSPPPPPPPPPPDPPPIIIIPPPIOIQPPPP"
60413 print"PQJJPPPDPSPPPPPPPPPPDPPPPPPPPPPKSSSSSCP"
60414 print"PPPPPPPDPPPPPPP4PPPPDPPPPPPPPPPKSSSSSLP"
60415 print"PPIIIPPBAAAAAAAAAAAABAAAAAAAAAAKSSSSSPP"
60416 print"PPPPPPPSSSSSSSSSSSSPQPPKPPLPPKPPLPPPSPS"
60417 print"IIPPPPPSSSSSSSSPPPP{f5}PDPPKPPLPPKPPLAACSPS"
60418 print"PPPPPPPSSSSSSSSPHHHPDPPKPPLPPKPPLPPDSLS"
60419 print"PPQJJPPPPPPPPSSRSSSPDPPKPPLPPKPPLPDDSRS"
60420 print"PPPPPPPPPPPPPSSPSSSPDPPKPPLPPKPPLPDRSPS"
60421 print"IIPPPPPPPPPPP0PPSSSPDPPKPPLPPKPPLPDPPLS"
60422 print"AAAAAAAAAQJJJJJAAAAIBIQQQQQQQQQQQABAAHS"
60480 return
60499 rem bild6
60500 :
60501 print"PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQ"
60502 print"PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQJJJPK"
60503 print"PPPPPPPPHHHQJPPPPPPPPPPPPPPPPPPPPQPPPPK"
60504 print"PPPPPPPRPPPPPPPJJJPPPPPPPPPPPPPPPQPPPPK"
60505 print"PPPP4PPPPPPPPPPPPPPPPPPPPPPPPJJJJQQJJJQ"
60506 print"PPPPPPPCPPPPPPPPPPOJJPPPPPPPRPPPPPPPPPP"
60507 print"PPPPPPNSMPPPPPPPPPPPPPPJJJQQJPPPPPPIIIQ"
60508 print"FPPPPNSSSMPPPPPPPPPPPPPPPPPPPPPPPPPPPPP"
60509 print"FPPPNSSPSSMPPPPPPPPPPPPPPPPPPPPPPPJJPPP"
60510 print"FPPNSSPRPSSMQQQPQQQPQQQQQMPPPPPPPPPPPPP"
60511 print"FPNSSSPTPSSSMQQRQQQRQQQQQQPPPPPPPPIIIIQ"
60512 print"FQSSSSSSSSSSSIIIIIIIIIIIIIMPPPPPPPPSPPK"
60513 print"RPSPRPSSSPPPSSSSSSSSSSSSSSSMPPPPPPPQPPK"
60514 print"IRSPTPSSSPRPSSSPPPSSSSPPPSSSMPPPPPPLPPK"
60515 print"PRSSDSSSSSNSSSS2RPSSSSPR3SSSSMPPPPPKPPK"
60516 print"5HSSDSSSSNSSSSSSTSSSSSSTSSSSSSMPPPPKPPS"
60517 print"GRSSDSSPPPPSSSSSSSSSSSSSSSSSSSSPPPPKPPQ"
60518 print"RHSSDSSGGGRSPPPPPPPPPPPPSPPPPSSRPPPKPPK"
60519 print"GRSSDSSPPPTSRPRRPPPRRPPRSPAARSSIIIIKPPK"
60520 print"RHSSDSSTTTTSIIIIQIIIIQIIMPPPRSSIPSSSSPK"
60521 print"RPP1DPPPPPPSSSSSSSSSSSSSSMPRRSSPPSSSS0K"
60522 print"AAAAAAAAAAASSSSSSSSSSSSSSAQAAIIIQSSSAAB"
60580 return
Listing »Spring-Vogel«
PDF Diesen Artikel als PDF herunterladen
Mastodon Diesen Artikel auf Mastodon teilen
← Vorheriger ArtikelNächster Artikel →