Screenshot vom Titel: »Star Wars«

Star Wars (1998)

Bereits wenige Monate nach dem Erlernen der Programmier­sprache Pascal begann ich damit, ein kleines Arcade-Spiel zu schreiben, bei dem man mit seinem Raumschiff Asteroiden ausweichen musste oder sie auch abschießen konnte.

Grafik

Die Grafik ist reine ASCII-Art (80 Zeichen auf 25 Zeilen). In der ersten Version wurde noch jedes Bild völlig neugezeichnet – eine Augenjucken erzeugende Flackerei.

Asteroiden und Sterne bewegen sich von rechts nach links über den Bildschirm, wobei mittels Parallaxe (die Sterne bewegen sich deutlich langsamer) Räumlichkeit erzeugt wird.

Spiel-Modi

Einzige Mission in diesem Side-Scroller: Mit seinem Y-Wing-Schiff das Asteroiden­feld in drei Minuten durchfliegen. Fünf Schwierigkeits­grade bestimmen die Anzahl Asteroiden, allerdings ist die höchste Stufe kaum zu meistern, denn es gibt kein Dauerfeuer – nach jedem Schuss muss der Laser abkühlen, was mittels eines Balken visualisiert ist.

Screenshot des Spiels, zwei Star-Wars-Jäger (A-Wing, Y-Wing) in einem     Asteroidenfeld feuern aufeinander
CK führt 1:0 gegen Thommy im Deathmatch. »23« und »11« sind die Lebensenergie der beiden Schiffe.

1999 versah ich das Spiel mit einem Deathmatch-Modus (»Todes­kampf«), in welchem man gegen­einander antreten kann. Dafür kam die nach hinten schießende Ionenkanone ins Spiel. Zudem konnte man nun zum A-Wing-Abfangjäger wechseln, der kein gebündeltes Laserpaar schießt, sondern zwei parallele Laser, die jeweils nur den halben Schaden anrichten.

Galerie

Code

Mit 14 Jahren kam ich noch nicht auf die Idee, die Abfrage, ob eine Koordinate innerhalb zweier X- und zweier Y-Werte liegt (den Außengrenzen des jeweiligen Objektes), auch genauso zu stellen. Nein, ich verglich hier jede Kachel mit jeder Kachel:

If (a = las[1]+2) and (b = las[2])
or (a = las[1]+3) and (b = las[2])
or (a = las[1]+4) and (b = las[2])
or (a+1 = las[1]+2) and (b = las[2])
or (a+1 = las[1]+3) and (b = las[2])
or (a+1 = las[1]+4) and (b = las[2])
or (a+2 = las[1]+2) and (b = las[2])
or (a+2 = las[1]+3) and (b = las[2])
or (a+2 = las[1]+4) and (b = las[2])
or (a+3 = las[1]+2) and (b = las[2]) 
  ..
or (a+4 = las[1]+2) and (b+1 = las[2])
or (a+4 = las[1]+3) and (b+1 = las[2])
or (a+4 = las[1]+4) and (b+1 = las[2])
or (a+3 = las[1]+2) and (b+1 = las[2])
or (a+3 = las[1]+3) and (b+1 = las[2])
or (a+3 = las[1]+4) and (b+1 = las[2])
then
begin
textcolor(black);
gotoxy(las[1],las[2]);
write('█████');
las[5]:=0;
if ship1 = 1 then status2:=status2-20
             else status2:=status2-10;
if status2 < 1 then p1:=p1+1;
end;

Plötzliches Ende

Die Arbeiten an dem Megakracher endeten, als der Code 3000 Zeilen überschritt. Pascal weigerte sich, das Spiel zu kompilieren. Module, um Code auszulagern, kannte ich damals noch nicht.