Star Wars (1998)
Bereits wenige Monate nach dem Erlernen der Programmiersprache 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 Asteroidenfeld in drei Minuten durchfliegen. Fünf Schwierigkeitsgrade 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.
1999 versah ich das Spiel mit einem Deathmatch-Modus (»Todeskampf«), in welchem man gegeneinander 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.