Nützliches2017-09-01T12:57:31+00:00

C++ Programmier-Woche, Tag 05

Tag 05

Tag 05 der Re-Programmierung von Warren Robinetts „Adventure“ von 1979 in C++ scheint nur ein halber Tag zu sein, und man benötigt eine Lupe, um zu erkennen, dass ich Items hinzugefügt habe (zumindest die Sprites anzeige). Hier ist der Schlüssel für die gelbe Burg „versteckt“ – sucht ruhig mal selbst!

17. Dezember 2021|Kommentare deaktiviert für C++ Programmier-Woche, Tag 05

C++ Programmier-Woche, Tag 04

Tag 04

Der vierte Tag stand ganz im Zeichen der Kollisionserkennung. Einmal die richtige Stelle für die Abfrage gefunden, war es nur eine Sache von Minuten, zu verhindern, dass die Spielfigur durch die Wände laufen kann.

Neue Wände auf den Durchgängen zu erstellen erwies sich als unerwartet schwierig. Die Wände selbst habe ich als Sprites erstellt. Es wurden also eigene Objekte dafür geschaffen, aber diese werden bereits in der Initialisierung des Screens mit einbezogen und ergänzen so die Screens, auf denen sie zum Einsatz kommen. Einen eigene Kollisionsabfrage wird somit überflüssig. Die findet bereits auf den Screens statt. Eine gute Übung für die Erstellung aller anderen Objekte.

Zusammen mit der Kollisionsabfrage für den Spieler gegen Wand lässt sich auch schon eine alternativer Untergrund als Laufweg definieren. Gute Voraussetzungen für das Erstellen der Brücke und das Öffnen der Durchgänge der einzelnen Schlösser! Meine kleinen Beta-Tester haben aber schon die Irrgärten erforscht.

16. Dezember 2021|Kommentare deaktiviert für C++ Programmier-Woche, Tag 04

C++ Programmier-Woche, Tag 03

Tag 03

Tag 03 meiner persönlichen Hardcore-Coding-Herausforderung stand gleichermaßen im Zeichen von Fleiß- und Kopfarbeit. Komplexe Gebilde müssen nicht zwangsläufig kompliziert sein, aber Warren Robinett musste sein Adventure abwechslungsreich und doch speicherschonend programmieren. Er hat in den verschiedenen Labyrinthen die Screens optimal ausgenutzt, aber dazu die verschiedenen Screen in komplexer Weise miteinander verbunden.

Heute verbleibe ich mit einer komplett begehbaren Version. Alle Screens sind erstellt und mittels Pointern richtig miteinander verknüpft. Was noch fehlt, sind eine Kollisionsabfrage, alle Gegenstände (Kelch, Magnet, 3x Schlüssel, Schwert, Easter Egg), non-player-characters (3x Drachen und Fledermaus) und sämtliche Hindernisse (Tore, “Beleuchtungseffekt”) . Zur Zeit kann man jeden Screen erreichen und quasi im “Ghost-Mode” durch Wände gehen und natürlich nichts aufheben.

Obwohl ich aufgrund von Einschränkungen in der Farbpalette Kompromisse eingehen musste, ist das Ergebnis sehenswert.

15. Dezember 2021|Kommentare deaktiviert für C++ Programmier-Woche, Tag 03

C++ Programmier-Woche, Tag 02

Tag 02

Tag 02 meiner kleinen C++ Programmier-Woche war erst ganz schlimm, dann weniger schlimm, und am Ende sogar noch halbwegs gut — trotzdem weit weniger produktiv als Tag 01 und als erhofft. Leider habe ich den Morgen mit 4 stündigen schrecklichen Kopfschmerzen verbracht, die ich durch ein Nickerchen beizukommen versuchte. Das half nicht viel. Wahrscheinlich aber durchaus realistische Umstände für so ein Projekt.

Später wollte ich wenigstens Zeit aufholen und die lästige Dateneingabe schon mal erledigen, um zumindest die verschiedenen Screens schon mal zur Verfügung zu haben. Dabei stellte sich die Darstellung trotz aller Vorüberlegungen alles andere als trivial heraus. Insbesondere die Irrgärten lassen sich von nur umständlich von einem in quadratischen Pixeln angegebenen Binärformat in ein halbwegs brauchbares Verhältnis von Characters von 10 Breite zu 4 Höhe bringen. Darüber hinaus ist mein Plan, eine Kollisionsabfrage mit dem Inhalt der Screens auszuführen. Dazu wird es aber notwendig sein, dass die Anschlussstellen von einem Screen zum jedem angrenzenden Screen genau passen. Das muss man erstmal hinbekommen. Fertig sind zumindest die drei Schlösser, alle Arten von offenen Räumen und der blaue Irrgartens — zumindest die Screens, die Verknüpfungslogik fehlt noch. Mir schwebt dafür ein struct aus vier Pointern vor, die auf die angrenzenden Screens zeigen. Oder vielleicht shorts mit einer ID. Das schauen wir dann, wenn alle Screens initialisiert und darstellbar sind. Am Ende scheint aber zumindest im blauen Labyrinth alles zu passen.

14. Dezember 2021|Kommentare deaktiviert für C++ Programmier-Woche, Tag 02

C++ Programmier-Woche, Tag 01

Persönliche Herausforderung

Nach dem Beenden des Kurses “Learn C++ Programming by Making Games” auf Udemy wollte ich mich gleich an den zweiten Teil machen. Doch im letzten Augenblick musste ich mich bremsen und daran erinnern, dass es vielleicht der nachhaltigere Weg ist, das neu Erlernte zuerst anzuwenden und Ideen und Konzepte Routine werden zu lassen – naja, halbwegs zumindest.

Widmung

Auf der Suche nach einem Projekt wurde ich schnell fündig. Das Spiel “Adventure” (1979/1980) vom Atari2600 in einer C++ Version für’s Text-Terminal portieren – irgendwie lauffähig. Daher widme ich gerne meine Versuche Warren Robinett, dem ich schier unzählbare Stunden vor dem Fernseher auf der Suche nach dem Kelch verdanke und der mich lehrte, eine Fledermaus zu verfluchen! Danke.

Motivation ist es Konzepte und Ideen in der C und C++ Programmierung zu erweitern und zu vertiefen – inbesondere der Umgang mit Pointern (Pointer Arithmetik)m Call-by-Reference und Geschicktes Strukturieren von Daten mit structs und Objekt-orientierte Lösungen von Aufgaben. Und natürlich wollte ich auch gerne wieder etwas mit ncurses für die Konsole nutzen.

Tag 01

Er erste Tag hinterlässt gemischte Gefühle. Einerseits macht es schon echt Spaß und ist ein echtes Erfolgserlebnis, einen Adventure-ähnlichen Look’n Feel auf der Konsole auszugeben. Inspiration gibt’s auf dem Online-Emulator. Nach Überlegungen wie man das konzeptionell am Besten angeht, folgte eine lange Zeit mit dem Erstellen verschiedener struct und anderer Datenstrukturen. Dem folgte eine Ernüchterung im Kontrollverlust in einer Doppelschleife im Initialisieren von Screens. Am Ende stand aber ein Bildschirm mit einer beweglichen Spielfigur. Das ist ja schon mal was.

13. Dezember 2021|Kommentare deaktiviert für C++ Programmier-Woche, Tag 01
Go to Top