Skip to content

Latest commit

 

History

History
66 lines (43 loc) · 1.91 KB

File metadata and controls

66 lines (43 loc) · 1.91 KB

Semigraphisches Videospiel


Zurück


Motivation

Stellen wir uns vor, dass wir ein retro-basiertes Videospiel auf semigraphischer Basis programmieren, in dem tausende von Charakteren auf dem Schlachtfeld kämpfen. Jeder Charakter ist ein Objekt, das beispielsweise eine grafische Darstellung, ein Verhalten, Waffen und Informationen über seinen Standort und seine Gesundheit besitzt. Das Erstellen einer solchen Anzahl von Objekten benötigt viel Speicher.

Wir können dies verbessern, indem wir die allgemeinen Informationen wie grafische Darstellung und Verhalten teilen. Gesundheit und Standort variieren jedoch.

Aufgabe

Schreiben Sie ein Programm, das eine Klasse Character zur Darstellung einer Spielfigur realisiert. Die beiden Informationen “Farbe einer Figur” und “Zeichensatz für Textausgaben”sind zur Vereinfachung des Beispiels durch zwei Variablen des Typs

std::string m_color;
std::string m_font;

von allen Charakteren wiederzuverwenden.

Ein konkreter Charakter – eine Instanz der Klasse ConcreteCharacter – besitzt eine Methode

void render(int x, int y);

Die beiden Variablen x und y variieren, es können als mehrere konkrete Charaktere existieren, die dieselbe Farbe und denselben Zeichensatz besitzen, aber an unterschiedlichen Positionen x und y auf dem Spielfeld dargestellt werden.

Für die Verwaltung der vorhandenen Character-Objekte realisieren Sie eine CharacterFactory Klasse. Ein Objekt des Typs

std::unordered_map<std::string, Character> m_characterMap;

verwaltet die intrinsischen Zustände aller Charaktere.

Schreiben Sie eine Testfunktion, die ein oder mehrere konkrete Charaktere erzeugt und mit render auf dem Spielfeld “zeichnet”.


Lösung

Siehe hier


Zurück