VC 20
Spiel

ESCAPE

»Escape« für den VC 20 ohne Erweiterung ist ein Spiel in Maschinensprache zum Trainieren des Reaktionsvermögens des Spielers.

Dieses Spiel verlangt Geschicklichkeit, Reaktion und Übersicht, will man es beenden.

Sie müssen versuchen, Ihr Raumschiff möglichst lange vor einer Kollision mit fremden Raumschiffen, Planetoiden und anderen kosmischen Erscheinungen zu retten. Gespielt wird mit einem Joystick. Für den VC 20-Besitzer ohne Joystick kann das Maschinenprogramm leicht durch eine geringfügige Änderung des Programms umgeschrieben werden. Das Eintippen und Abspeichem aller sieben Teilprogramme muß exakt in der Reihenfolge Listing 1 bis 7 erfolgen. Nachdem alle Teilprogramme abgespeichert worden sind, geht man wie folgt vor:

  1. Alle Programme bis auf das letzte einladen und starten

  2. Falls über Tastatur gespielt werden soll, müssen nun folgende Adressen geändert werden:

    POKE 6404,197
    POKE 6405,0
    POKE 6407,18
    POKE 6421,197
    POKE 6422,0
    POKE 6424,17
    POKE 6437,9
    POKE 6450,26
    POKE 6463,64
    

    statt dem Joystick werden nun folgende Tasten abgefragt: A, W, D, X.

  3. Letztes Programm einladen und starten.

Für einen geübten Programmierer läßt sich dieses Programm leicht in nur zwei Teilen (Anleitung und Hauptprogramm) abspeichern (durch ändern der Vektoren 43/44, 45/46 und SAVE"Escape",1,3). Die Programmversion mit den sechs einzelnen Teilprogrammen wurde deshalb gewählt, damit auch ungeübte Programmierer dieses Programm ohne Schwierigkeiten eingeben können.

Da das Maschinenprogramm einen Basicschutz für »Escape-6« enthält, muß dieses »Escape-6« genau eingegeben werden (auch die REM-Zeilen!).

Aber nun viel Spaß beim Spielen. Übrigens beträgt die bisher höchste erreichte Punktzahl 4410. Schaffen Sie mehr?

(Michale Werner/ev)
X für FOR-NEXT-Schleifen
A$ Zeitschleife, rotierender Text, Bewertung, Ja/Nein-Abfragen
B$ rotierender Titel
L Länge von A$, Anzahl der verschiedenen Zeichen
A Länge von B$, zufällige Position
D$ obere Begrenzung des rotierenden Titels
E$ untere Begrenzung des rotierenden Titels
C$ für Anfangen (j/n)
F Zeitschleife, Anzahl, Hindernisse, Tonhöhe
G Position der vier Raumbasen
M jeweilige Zeichen
N jeweilige Zeichenfarbe
F Anzahl der zu setzenden Hindernisse
Benutzte Basic-Variablen und Strings
36879 Bildschirmfarbe 238 und 25 und 8 (normal 27)
36881 Bildschirmverschieben 155-38 (normal 38)
56 Basic-Speicher Ende verschieben 21 (normal 30)
775 Listschutz 213 (normal 199)
788 RUN/STOP-Taste ausschalten 194 (normal 191)
37150 RESTORE-Taste ausschalten 2 (normal 130)
Liste der verwendeten POKE-Befehle
5380-5470 Scrollen des Bildschirms nach oben
5471-5561 Scrollen des Bildschirms nach unten
5562-5658 Scrollen des Bildschirms nach rechts
5659-5755 Scrollen des Bildschirms nach links
5756-6066 Bewegung der Raumschiffe
6067-6097 Punktewertung
6098-6161 Setzen neuer Raumschiffe
6162-6192 Basicprogrammschutz
6193-6272 Explosion und Herabziehen des Bildschirms
6273-6300 Bewegung der Hindernisse
6301-6519 Abfrage d. Joysticks u. Steuerung d. Unterprogramme
6520-6546 Rotieren des Triebwerkringes

Speicherplatz des Basicprogramms:

4097-7307 Basicprogramm zur Punktwertung und Setzen des Bildschirminhaltes zum Spiel

Speicherplatz der benötigtem Sonderzeichen:

7176-7307 definierte Zeichen für Spiel:

Benutzte indirekte Adressenspeicher für Maschinensprache:

0-3 97-100

Speicher für Maschinensprache-»Variablen«:

826-847 Zwischenspeicher für Zeichen beim Bildschirmscrollen
848-869 Farbzwischenspeicher für Farbe der Zeichen beim Bildschirmscrollen
870 augenblickliches Zeichen zur Bewegung der Raumschiffe
871 neue Flugrichtung der Raumschiffe (1-8)
872 verloren? wenn Inhalt 872 = 1, dann Rücksprung ins Basic
873,874,875 Punktezähler
876,877 Taktzahl für das Setzen neuer Raumschiffe
878 Triebwerkring rotieren (1-4)
Speicherbelegung von »Escape«
10 print"{clr}{blk}{down}{down}{down}{down}{down}{down}{down}{down}{rght}{rght}{rght}anleitung (j/n)?"
11 geta$:ifa$="j"thena=1:goto20
12 ifa$="n"then20
13 goto11
20 print"{down}{down}{down}{down}{rght}{rght}{rght}{rght}{red}copyright by{down}{down}{left}{left}{left}{left}{left}{left}{left}{left}{left}{left}{left}{left}{left}michael werner{down}{down}{down}{left}{left}{left}{left}{left}{left}{left}{left}{left}1983"
21 forx=1to3000:next
24 ifa=0then55
25 print"{clr}{blu}{rght}{down}sie haben sich durch {down}{rght}{rght}einen fehler ihres "
26 print"{pur}{down}{rght}hyperraumtriebwerkes{blu}{down}{rght}{rght}mit ihrem raumschiff"
28 print"{down}{rght}{rght}in einem verkehrs-{rght}{rght}{rght}{rght}{down}reichen sektor der{down}{rght}{rght}{rght}{rght}{rght}galaxis verirrt."
30 print"{down}dieser sektor wird von{rght}{rght}{rght}{down}einer unterent-{down}{rght}{rght}{rght}{rght}{rght}{rght}{rght}wickelten rasse"
31 print"{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{down}{rght}{red}{rvon}space{rvof}":wait197,32
33 print"{clr}{blu}{down}{rght}bevoelkert."
34 print"{down}{rght}deren raumschiffe{down}{rght}{rght}{rght}{rght}{rght}werden mit veralteten{down}{rght}{rght}{rght}{pur}atomtriebwerken"
35 print"{down}{blu}betrieben. also hueten{down}{rght}{rght}sie sich davor mit{down}{rght}{rght}{rght}diesen fremden raum-"
36 print"{down}{rght}schiffen zusammenzu-{down}{rght}{rght}stossen!"
37 print"{down}{down}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{red}{rvon}shift{rvof}{blu}":wait654,1
40 print"{clr}{down}{rght}{rght}{rght}sie steuern ihr{down}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}raumschiff mit {down}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{pur}joy-stick{blu}."
41 print"{down}{rght}versuchen sie moeg-{down}{rght}{rght}{rght}{rght}lichst lange durch {down}{rght}gekonnte manoever den"
42 print"{down}{rght}fremden raumschiffen {down}{rght}auszuweichen. passen{down}{rght}{rght}sie hierbei auch auf"
43 print"{down}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{pur}{rvon}return{rvof}{blu}":wait197,15
45 print"{clr}{down}{rght}die sich staendig{down}{rght}{rght}{rght}{rght}veraendernden hinder-{down}{rght}{rght}nisse (manchmal fast"
46 print"{down}{rght}unsichtbar) auf.{down}{rght}{rght}{rght}{rght}{rght}{rght}ausserdem koennen sie{down}{rght}{rght}{pur}nicht{blu} ueber den"
47 print"{down}{rght}weltraummuell,ueber{down}{rght}{rght}die planeten und ueber{down}{rght}die basen der fremden"
48 print"{rght}rasse hinwegfliegen!"
49 print"{down}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{red}{rvon}space{rvof}{blu}":wait197,32
50 print"{clr}{down}{rght}also,{pur}captain{blu},ver-{rght}{rght}{rght}{rght}{down}suchen sie ihr glueck!{down}{red}aber achtung:{blu}"
51 print"{down}solange sie sich {red}nicht{blu}{down} bewegen,bekommen sie{down}{rght}{rght}{rght}auch {red}keine{blu} punkte!"
55 print"{down}{rght}{rght}{rght}{rght}{grn}nun bitte die {down}{rght}{rght}{rght}{rght}{rght}{rght}folgenden 6 kurz-"
56 print"{down}{rght}programme einladen {down}{rght}{rght}{rght}{rght}und auch {blk}starten{blu}!!{up}{left}":new
Listing 1. Anleitung zu »Escape«
0 print"{clr}"
1 clr:poke56,21:forx=0to511:poke7168+x,peek(32768+x):next:forx=0to131:reada
2 poke7176+x,a:next
3 data0,48,121,251,174,251,121,48,240,184,248,232,120,4,3,2,56,108,254,238,124,16,56,108
4 data15,29,31,23,30,32,192,64,12,158,223,117,223,158,12,0,64,192,32,30,23,31,29,15
5 data54,28,8,62,119,127,54,28,2,3,4,120,232,248,184,240,60,126,255,153,255,126,189,129
6 data136,73,43,31,255,19,246,124,17,146,212,248,255,200,111,62,58,31,21,250,31,43,73
7 data136,92,248,168,95,248,212,146,17,16,20,88,63,252,26,40,8,0,78,124,48,26,30,12,0
8 data44,2,40,128,66,16,5,144,153,51,102,204
9 forx=5380to5561:reada:pokex,a:next
10 data162,0,189,0,30,157,58,3,189,0,150,157,80,3,232,224,22,208,239,160,24,169,32,145
11 data0,162,0,189,22,30,157,0,30,189,22,150,157,0,150,232,224,255,208,239,169,9,145,0
12 data169,0,145,2,162,0,189,21,31,157,255,30,189,21,151,157,255,150,232,224,251,208,239
13 data162,0,189,58,3,157,228,31,189,80,3,157,228,151,232,224,22,208,239,96
14 data162,0,189,228,31,157,58,3,189,228,151,157,80,3,232,224,22,208,239,160,24,169,32
15 data145,0,162,255,189,228,30,157,250,30,189,228,150,157,250,150,202,224,0,208,239
16 data169,9,145,0,169,0,145,2,162,229,189,255,29,157,21,30,189,255,149,157,21,150,202
17 data224,0,208,239,162,0,189,58,3,157,0,30,189,80,3,157,0,150,232,224,22,208,239,96
Listing 2. Grafik und Maschinensprache für »Escape«
0 print"{clr}{down}{down}{rght}{down}{down}{down}{down}{down}{down}{down}{down}{red}{rght}{rght}{rght}bitte warten!!"
1 poke56,21:forx=5562to5870:reada:pokex,a:next
2 data169,0,133,97,133,99,169,30,133,98,169,150,133,100,162,0,160,24,169,32,145,0,160,21
3 data177,97,141,58,3,177,99,141,80,3,136,177,97,200,145,97,136,177,99,200,145,99,136
4 data192,0,208,239,173,58,3,145,97,173,80,3,145,99,160,24,169,9,145,0,169,0,145,2,165
5 data97,24,105,22,144,4,230,98,230,100,133,97,165,99,24,105,22,133,99,232,224,23,208
6 data176,96,169,0,133,97,133,99,169,30,133,98,169,150,133,100,162,0,160,24,169,32,145
7 data0,160,0,177,97,141,58,3,177,99,141,80,3,200,177,97,136,145,97,200,177,99,136,145
8 data99,200,192,21,208,239,173,58,3,145,97,173,80,3,145,99,160,24,169,9,145,0,169,0,145
9 data2,165,97,24,105,22,144,4,230,98,230,100,133,97,165,99,24,105,22,133,99,232,224,23
10 data208,176,96,169,255,133,97,133,99,169,29,133,98,169,149,133,100,162,0,160,1,177
11 data97,201,5,16,4,105,4,145,97,200,232,224,23,208,240,160,24,177,97,201,1,208,7,141
12 data102,3,160,23,208,31,201,2,208,7,141,102,3,160,1,208,20,201,3,208,7,141,102,3,160
13 data2,208,9,201,4,208,8,141,102,3,160,3,32,103,23,165,97,24,105,1,144,4,230,98,230
14 data100,133,97,165,99,24,105,1,133,99,165,97,201,226,208,181,165,98,201,31,208,175
Listing 3. Maschinenspracheroutinen für »Escape«
0 print"{clr}{down}{down}{rght}{rght}{down}{down}{down}{down}{down}{down}{down}{down}{rght}{rght}{red}bitte warten!!"
1 poke56,21:forx=5871to6161:reada:pokex,a:next
2 data169,202,133,97,133,99,169,31,133,98,169,151,133,100,162,0,160,23,177,97,201,9,16,8
3 data201,5,48,4,233,4,145,97,200,232,224,23,208,236,160,24,177,97,201,5,208,7,141,102,3
4 data160,25,208,31,201,6,208,7,141,102,3,160,47,208,20,201,7,208,7,141,102,3,160,46,208
5 data9,201,8,208,8,141,102,3,160,45,32,103,23,165,97,56,233,1,176,4,198,98,198,100,133
6 data97,165,99,56,233,1,133,99,165,97,201,231,208,181,165,98,201,29,208,175,96,174,103
7 data3,224,8,240,5,238,103,3,208,5,162,1,142,103,3,177,97,201,32,208,16,173,102,3,145
8 data97,169,2,145,99,160,24,169,32,145,97,96,201,9,208,8,169,1,141,104,3,24,144,243,201
9 data14,240,13,201,15,240,9,201,16,240,5,201,9,48,1,96,160,24,173,103,3,145,97,96
10 data173,105,3,24,105,3,144,3,238,106,3,141,105,3,173,106,3,201,255,240,1,96,169,0,141
11 data106,3,238,107,3,96,169,100,133,97,133,99,169,30,133,98,169,150,133,100,173,108,3
12 data24,105,1,144,3,238,109,3,141,108,3,173,108,3,201,50,240,1,96,172,36,145,177,97
13 data201,32,240,1,96,173,103,3,145,97,169,2,145,99,169,0,141,108,3,141,109,3,96
Listing 4. Maschinenspracheroutinen für »Escape«
0 print"{clr}{red}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{rght}{rght}{rght}{rght}bitte warten!!"
1 poke56,21:forx=6162to6371:reada:pokex,a:next
2 data173,100,20,201,0,240,3,76,34,253,173,101,20,201,0,240,3,24,144,243,173,102,20,201
3 data0,240,3,24,144,233,96,162,0,160,0,173,36,145,141,15,144,173,36,145,141,12,144,201
4 data128,48,246,200,192,255,208,235,232,224,150,208,228,162,191,142,20,3,169,238,141
5 data15,144,169,0,133,161,165,161,201,1,208,250,169,38,141,17,144,24,105,1,201,180,208
6 data1,96,162,0,160,0,200,192,255,208,251,232,224,10,208,244,24,144,228
7 data234,234,234,110,128,28,46,129,28,110,130,28,46,131,28,110,132,28,46,133,28,110,134
8 data28,46,135,28,96,169,0,141,104,3,141,105,3,141,106,3,141,107,3,141,108,3,141,109,3
9 data169,238,141,15,144,169,15,141,14,144,169,194,141,20,3,169,2,141,30,145,169,21
10 data133,56,169,1,141,110,3,169,1,141,103,3,169,229,133,0,133,2,169,30,133,1,169
11 data150,133,3,32,18,24
Listing 5. Maschinenspracheroutinen für »Escape«
0 print"{clr}{red}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{rght}{rght}{rght}{rght}bitte warten!!"
1 poke56,21:forx=6372to6546:reada:pokex,a:next:poke775,213
2 data32,179,23,32,124,22,32,210,23,32,129,24,32,120,25,173,104,3,201,1,208,4,32,49,24
3 data96,169,127,141,34,145,173,32,145,201,119,208,5,160,25,76,66,25,169,255,141,34,145
4 data173,31,145,201,110,208,5,160,23,76,66,25,201,46,240,247,201,122,208,5,160,2,76
5 data66,25,201,58,240,247,201,118,208,5,160,46,76,66,25,201,54,240,247,201,24,240,165
6 data177,0,201,32,240,7,201,9,176,155,76,250,24,169,255,141,12,144,192,23,208,3,32,186
7 data21,192,2,208,3,32,95,21,192,46,208,3,32,4,21,192,25,208,3,32,27,22,169,0,141,12
8 data144,76,228,24,174,110,3,224,4,240,5,238,110,3,208,5,162,1,142,110,3,174,110,3,189
9 data135,28,141,75,28,96
Listing 6. Maschinenspracheroutinen für »Escape«
0 print"{clr}":poke36879,8:a$=" von michael werner ":l=20:b$="    * escape *    ":a=18:f=50
1 poke56,21:restore:d$="{CBM-@}{CBM-@}{CBM-@}{CBM-@}{CBM-@}{CBM-@}{CBM-@}{CBM-@}{CBM-@}{CBM-@}{CBM-@}{CBM-@}{CBM-@}{CBM-@}{CBM-@}{CBM-@}{CBM-@}{CBM-@}{CBM-@}{CBM-@}{CBM-@}{CBM-@}":e$="{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}"
2 a$=right$(a$,1)+left$(a$,l-1):b$=right$(b$,a-1)+left$(b$,1)
3 print"{wht}{home}";a$;left$(a$,2):print"{yel}{down}{down}{down}";d$;b$;left$(b$,4);e$
4 print"{red}{down}{down}{down}{rght}{rght}{rght}{rght}{rght}anfangen(j)?":getc$:ifc$="j"then7
5 print"{wht}{down}{down}{down}{down}{down}{down}{down}";a$;left$(a$,2):forx=1tof:next:f=f-1:goto2
7 print"{clr}":poke36869,255:poke36878,15:poke36879,238:poke7933,9:poke38653,0
8 readg:ifg>0thenpoke30720+g,0:poke30721+g,0:poke30742+g,0:poke30743+g,0
9 ifg>0thenpokeg,10:pokeg+1,11:pokeg+22,12:pokeg+23,13:goto8
10 f=0:l=0:m=14:n=7:data7721,7815,7962,8064,0,16,1,15,4
11 a=int(rnd(1)*506)+7680:ifpeek(a)<>32then11
12 pokea,m:pokea+30720,n:f=f+1:iff<5then11
13 l=l+1:ifl<3thenreadm:readn:f=0:goto11
14 sys6301:poke788,194:poke36869,240
15 f=peek(873)+256*peek(874)+4096*peek(875):iff>2200thena$="sogar":goto20
16 iff>1600thena$="unerwartet":goto20
17 iff>1000thena$="muehevoll":goto20
18 iff<500thena$="nur":goto20
19 a$="gerade"
20 poke36879,25:print"{clr}{grn}{down}{down}{down}{down}sie konnten ";a$
21 print"{red}{down}{down}{rght}";f;"{grn}{left}{left}{down}{left}{left}{down}{down}punkte erreichen!!"
22 print"{down}{down}{down}{pur}trauen sie sich noch ?{down}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{blk}(j/n)"
23 f=128:forg=155to38step-1:f=f+1:poke36876,f:poke36881,g:next
24 poke36876,0:geta$:ifa$="j"thenrun
25 ifa$="n"thenpoke788,34
26 goto24
27 rem m. werner
28 rem paradeis 38
29 rem 8120 weilheim
Listing 7. »Escape« - Das Hauptprogramm
Die Programmstruktur von »Escape«
PDF Diesen Artikel als PDF herunterladen
Mastodon Diesen Artikel auf Mastodon teilen
← Vorheriger ArtikelNächster Artikel →