Croussaider – Ein Action-Spiel für den VC 20
Dieses Spiel zeigt die Möglichkeiten, die bereits in der Grundversion des VC 20 stecken. Obwohl von den Farbgrafik- und Soundmöglichkeiten ausgiebig Gebrauch gemacht wird, benötigt das Programm nur knapp 3 KByte RAM.

Feindliche Weltraumschiffe greifen die Erde an! Sie haben in diesem Spiel die Aufgabe, die Invasion abzuwehren. Dazu besitzen Sie ein Raumschiff, den »Croussaider«, das über der Erde schwebt. Unter ihm liegt eine moderne Stadt mit Hochhäusern, Fabriken und einem Atomkraftwerk. Am oberen Rand des Bildschirms erscheinen die Angreifer, deren Ziel es ist, in der Stadt zu landen und sie zu zerstören.
Sie bewegen sich rasch auf die Stadt zu, so daß schnelle Reaktionen erforderlich sind, um eine Landung zu verhindern.
Hat man es geschafft, den Angreifern eine bestimmte Zeit zu widerstehen, erscheint eine neue, gefährlichere Welle von Invasoren mit anderem Aussehen.
Wenn man fünf verschiedene Angriffswellen übersteht, erscheint wieder die erste, mit dem Unterschied, daß die Angreiferzahl steigt. So ist immer für Abwechslung und Spannung gesorgt.
Der fortgeschrittene Spieler, dem das Spiel zu einfach ist, kann den Wert der Variablen Y in Zeile 10 vermindern.
Um das Spiel zu beschleunigen, wurden einige Routinen in Maschinensprache geschrieben. Die erreichte Punktzahl wird ständig angezeigt, und eine »High-Score»-Funktion hält das jeweils beste Ergebnis fest.
Doch damit genug der Vorrede. Tippen Sie doch jetzt einfach das Listing ab und versuchen Sie, die Invasion zu verhindern…
(Eberhard Aust)10 | Einlesen des Maschinenprogramms |
12 | Einlesen der Grafikzeichen |
19 - 99 | Spielvorbereitung |
100 - 130 | Hauptspielroutine |
200 - 206 | Score-Routine |
250 - 292 | Anzeige des Highscore |
300 - 314 | Schwierigkeitsgrad ändern |
1000 - 1012 | Maschinensprache-DATA |
1100 - 1107 | Grafik-DATA |
A | Raumschiffposition |
Y | Angreiferwahrscheinlichkeit |
J,K,L | Aussehen des Angreifers |
SC | Score |
HI | High-Score |
E | Inhalt des Registers 37151 |
F | Inhalt des Registers 37152 |
N | Konstante 36876 |
D | Zufallszahl zwischen 1 und 2 |
1 rem croussaider 2 rem =========== 3 rem 4 rem 10 fora=0to164:readb:poke828+a,b:next:forj=0to41:readk:poke7440+j,k:next 12 forj=0to159:readk:poke7168+j,k:next:forj=0to7:poke7168+32*8+j,0:next 19 poke36879,9:print"{clr}{down}{down}{down}{down}{down}":a=8086:b=8078:c=8095:sc=0:x=0 20 poke36869,255:poke36878,15:poke7432,8:poke7433,0:y=10:n=36876:li=10:ifqq=0then280 75 forrr=0to44:print"{yel} ";:next:print"{down}{cyn} " 80 print"{home}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{yel}ll p l {cyn}q p q{yel} ll pll lllplll{grn}mm{cyn}rolor{yel}llllllll"; 90 print"{grn}nnnnnnnnnnnnnnnnnnnnn{home}":poke7680+505,14:poke38400+505,5 91 pokea-1,9:pokea,10:pokea+1,11:gosub300 100 e=peek(37151):poke37154,127:f=peek(37152):poke37154,255:d=int(rnd(1)*2)+1:poken,s+d 103 if(eand16)=0anda>bthenpokea+1,32:pokea,32:a=a-d:pokea-1,9:pokea,10:pokea+1,11:poken,r 104 if(fand128)=0anda<cthenpokea-1,32:pokea,32:a=a+d:pokea+1,11:pokea,10:pokea-1,9:poken,t 106 poke36877,0:sys903:if(eand32)=0thenpokea-22,8:poke36877,252+d 111 ifint(rnd(1)*y)=0theni=int(rnd(1)*14)+7728:pokei-1,j:pokei,k:pokei+1,l 120 sys828:sys828+51:ifpeek(7432)<>8thengosub200 121 ifpeek(7433)<>0thengoto250 127 u=u+1:ifu=1thensys7440:ifti>2000thengosub300 129 print"{home}{wht}{rvon}"sc:ifu=2thensys(7461):u=0 130 sys903:goto100 200 forh=0to15:poke36879,int(rnd(1)*256):next:poke36879,9 201 h=peek(7432):poke36877,int(rnd(1)*90)+128:poke7432,8:ifh=0thensc=sc+10:return 202 ifh=2orh=4thensc=sc+40:return 203 ifh=3thensc=sc+int(rnd(1)*120):return 204 ifh=5thensc=sc+75:return 205 ifh=1thensc=sc+20:return 206 return 250 print"{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{yel} {cyn} {yel} s sslssss{grn}ms{cyn}qosoq{yel}ssssslss"; 252 poken,0:poken+1,128:foru=15to0step-1:poken+2,u:foruu=0to40:poken+3,int(rnd(1)*128):next:next 279 ifsc>hithenhi=sc 280 poke36879,9:print"{home}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{wht}{rvon}"hi:print"{home}{rvon}{down}{down}{down}{down}{rght}{rght}{rght}{rght}{rght}croussaider{down}{down}{left}{left}{left}{left}{left}{left}{left}{left}{left}e. aust" 281 geta$:qq=1:ifa$=""then281 282 goto19 300 ti$="000000":x=x+1:s=220+x*3:r=s-10:t=s+10:ifx=6theny=y-1:x=1:ify<3theny=3 310 ifx=1thenj=32:k=1:l=32:z=y:return 311 ifx=2thenj=0:k=32:l=0:z=y:return 312 ifx=3thenj=2:k=3:l=4:z=y*2:return 313 ifx=4thenj=1:k=0:l=1:z=y*1.5:return 314 ifx=5thenj=2:k=3:l=4:z=y*1.5:return 1000 data162,228,189,0,31,201,8,16,8,157,22,31,169,32,157,0,31,224,0,240,4,202,76,62,3 1001 data162,233,189,22,30,201,8,16,8,157,44,30,169,32,157,22,30,224,0,240,4,202,76,87,3 1002 data96,162,0,189,184,31,201,8,48,9,224,43,240,4,232,76,113,3,96,142,9,29,76,120,3 1003 data162,0,189,22,30,201,8,208,20,168,189,0,30,201,8,16,3,141,8,29,152,157,0,30 1004 data169,32,157,22,30,224,255,240,4,232,76,137,3 1006 data162,0,189,22,31,201,8,208,20,168,189,0,31,201,8,16,3,141 1007 data8,29,152,157,0,31,169,32,157,22,31,224,200,240,4,232,76,174,3 1008 data162,0,169,32,157,22,30,232,224,22,240,3,76,211,3,96 1009 data169,126,141,4,28,169,36,141,5,28,169,36,141,6,28,169,24,141,7,28,96 1010 data169,102,141,4,28,169,60,141,5,28,169,66,141,6,28,169,129,141,7,28,96 1100 data60,126,219,255,102,60,66,129,66,36,24,126,165,126,24, 1101 data128,128,231,159,252,252,191,136,,126,255,255,66,66,255,255,1,1,193,249,63,63 1102 data255,,,,,,,,,,,,,,,,,,,,,,,,,,8,8,28,28,28,28,20,54,,24,126,165 1104 data255,165,127,36,66,36,60,24,126,255,231,,,24,126,165,255,165,254,36 1105 data255,165,255,165,255,165,255,165,4,14,14,31,31,31,4,4,255,255,255,255,255,255 1106 data255,255,,60,126,126,126,126,126,126,102,102,102,102,102,102,102,102 1107 data,,,,126,60,60,60,60,60,60,60,126,126,126,255,,,,,,52,126,255