Text Adventure Teil 1: ein eigenes Abenteuerspiel schreiben
Ein Text Adventure bietet die Möglichkeit, spannende Abenteuer zu erleben. Wenn Sie gerade dabei sind, Programmieren zu lernen können Sie dieses Spiel selbst gestalten. Dabei gestalten Sie nicht nur ein interessantes Computerspiel. Außerdem profitieren Sie davon, dass Sie dadurch Ihre Programmierkenntnisse verbessern. Daher stellt dies eine ausgezeichnete Übung dar, die außerdem interessant und abwechslungsreich ist. Dieser Artikel stellt vor, wie Sie dabei vorgehen können und demonstriert das an einem kleinen Beispiel. Dabei entsteht ein Spiel, das zwar recht einfach aufgebaut ist, das aber viele Erweiterungsmöglichkeiten bietet, die Sie mit den erworbenen Kenntnissen problemlos umsetzen können. Dennoch ist das Beispielprogramm, das hier entsteht, komplett lauffähig, sodass Sie damit Ihr eigenes Spiel erstellen können. Der erste Teil des Artikels befasst sich mit den Grundlagen dieser Spiele und entwickelt die Spielidee. Im zweiten Teil lernen Sie dann, das entsprechende Programm umzusetzen.
Was versteht man unter dem Begriff Text Adventure?
Text Adventure – das hört sich spannend an. Allerdings wirft dieser Begriff auch einige Fragen auf. Was soll an einem Text denn so abenteuerlich sein? Und was genau versteht man unter einem Text Adventure – ein Spiel, eine Geschichte oder etwas ganz anderes? Leser, die die 1970er Jahre erlebt haben und die sich in dieser Zeit bereits mit Computern beschäftigt haben, kennen diesen Ausdruck sicherlich. Wenn Sie erst später geboren sind oder wenn Sie zu dieser Zeit noch keinen Zugang zu einem Computer hatten, dann wissen Sie jedoch wahrscheinlich noch nicht, was auf Sie zukommt. Daher soll im ersten Abschnitt genau erklärt werden, was ein Text Adventure ist.
Text Adventure: beliebte Spielform aus den 70er Jahren
Gehen Sie gedanklich einmal etwa 50 Jahre zurück und setzen Sie sich an einen Computer. Bereits das stellt eine schwierige Aufgabe dar. Damals gab es kaum einen Privathaushalt, der mit einem solchen Gerät ausgestattet war. Dieses blieb Universitäten, Forschungseinrichtungen, staatlichen Behörden und großen Unternehmen vorbehalten. Wenn Sie es dennoch geschafft haben, sich Zugang zu einem Computer zu verschaffen, sehen Sie, dass dieser ganz anders als heute aufgebaut ist. Gerade erst wurde die Diskette als Datenspeicher erfunden – im Jahre 1971. Dabei handelte es sich um 8″-Ausführungen, die ursprünglich nur ausgelesen werden konnten. 1976 folgte dann die 5,25″-Diskette. Sie wollen zur Maus greifen, um das Gerät zu bedienen – doch Halt! Eine Maus ist nicht vorhanden. Diese war zwar bereits erfunden, doch war zu dieser Zeit kaum ein Computer damit ausgestattet. Die Eingabe erfolgte fast immer über die Tastatur – in Textform.
Wenn Sie dieses Gedankenspiel nachvollzogen haben, befinden Sie sich in der Welt, in der die ersten Text Adventures entstanden. Grafische Benutzeroberflächen gab es damals nicht. Alle Programme liefen in reiner Textform ab – so auch die Spiele. Ein Text Adventure erzählt eine Geschichte, in der Sie selbst der Hauptdarsteller sind. Die Orte, die Sie dabei aufsuchen, werden in Textform beschrieben. Das heißt, dass etwas Fantasie notwendig ist, um sich in diese Abenteuer hineinzuversetzen. Der Verlauf des Abenteuers hängt von den Aktionen ab, die Sie durchführen. Hierfür müssen Sie selbst bestimmte Befehle in das Programm eingeben – ebenfalls in Textform. Die Aufgabe besteht darin, herauszufinden, welche Befehle geeignet sind und die verschiedenen Orte in der richtigen Reihenfolge aufzusuchen und die entsprechenden Aktionen durchzuführen.
Ein Text-Adventure-Spiel in der heutigen Zeit erstellen
Ein solches Programm, das komplett auf grafische Elemente verzichtet und in reiner Textform abläuft, wirkt heute sicherlich aus der Zeit gefallen. Wenn Sie beispielsweise versuchen würden, dieses zu vermarkten, wäre es wohl sehr schwierig, einen Käufer zu finden. Die technischen Möglichkeiten sind in der Zwischenzeit deutlich vorangeschritten. Ansprechende Grafiken – häufig mit Animationen versehen – setzen deutlich mehr Reize und sind einfacher und intuitiver zu bedienen. Daher haben sie Spiele in Textform weitestgehend verdrängt.
Dennoch kann es auch heute noch interessant sein, ein Text Adventure zu gestalten – insbesondere wenn Sie gerade dabei sind, das Programmieren zu lernen. Auf der einen Seite entsteht dabei ein interessantes Programm. Es macht Spaß, dieses zu programmieren. Außerdem erweckt das Ergebnis die Aufmerksamkeit von Freunden und Familienmitgliedern. Das Text-Adventure-Spiel anderen Menschen zu präsentieren und dabei einige Runden zu spielen, bringt viel Unterhaltung mit sich. Auf das Ergebnis können Sie stolz sein. Auf der anderen Seite ist es vergleichsweise einfach, ein Text-Adventure-Spiel zu programmieren. Wenn Sie stattdessen grafische Benutzeroberflächen verwenden, sind deutlich umfangreiche Kenntnisse erforderlich. Außerdem steigt der Aufwand stark an. Zwar sind auch für ein Text Adventure einige Programmierkenntnisse notwendig. Allerdings können Sie ein solches Projekt bereits mit recht grundlegenden Fähigkeiten umsetzen.
Deshalb handelt es sich hierbei um eine optimale Übungsaufgabe. Der Schwierigkeitsgrad liegt im mittleren Bereich – das Programm stellt zwar eine gewisse Herausforderung dar, doch sollte die Umsetzung in der Regel problemlos möglich sein. Die Aufgabe selbst ist interessant und das Ergebnis ist ansprechend. Außerdem ist der Lerneffekt dabei sehr hoch.
Den Aufbau des Programms bestimmen
Nachdem wir kennengelernt haben, was ein Text Adventure ist, beginnen wir nun damit, die ersten Entwürfe für unser Spiel zu erstellen. Dabei handelt es sich jedoch bislang nur um grundsätzliche Überlegungen zu den Inhalten des Spiels – beispielsweise um die Spielidee und um die Elemente, die hierfür erforderlich sind. Die konkrete Umsetzung und die Codierung folgen dann erst später.
Die Spielidee
Der erste Schritt für ein Text Adventure besteht immer darin, eine Spielidee zu entwerfen. Hierbei handelt es sich traditionell meistens um Fantasy-Geschichten. Doch können Sie hierbei auch jede beliebige andere Idee umsetzen. Für unser Beispielprogramm wählen wir ein mittelalterliches Panorama mit einigen Sagengestalten. Es sollen Burgen und Drachen auftreten. Der Protagonist der Geschichte soll mit einem Schwert gegen einen Drachen kämpfen und das Herz einer Prinzessin erobern.
Wenn wir diese Spielidee nochmals genau betrachten, stellen wir jedoch fest, dass wir hierbei etwas zu stark in die Denkweise der 70er Jahre zurückverfallen sind. Damals wäre eine solche Idee sicherlich gesellschaftsfähig gewesen. In der heutigen Zeit gibt es jedoch sicherlich auch Ritterinnen, die das Herz eines Prinzen erobern wollen. Doch selbst wenn wir den Spieler nach seinem Geschlecht fragen, ist es nicht immer ausgemacht, ob der Prinz oder die Prinzessin die passende Alternative darstellt. Daher werden wir zu Beginn den Spieler ganz direkt fragen, ob er das Herz eines Prinzen oder einer Prinzessin erobern will. So besteht die freie Auswahl. Der weitere Verlauf des Spiels soll dann an diese Auswahl angepasst werden.
Die grundlegenden Elemente eines Text-Adventure-Spiels
Im Mittelpunkt eines Text-Adventure-Spiels steht immer der Spieler. Dieser ist der Protagonist des Abenteuers. Er kann verschiedene Orte aufsuchen. Diese stellen daher ein weiteres zentrales Element des Spiels dar. Der Spieler kann von Ort zu Ort ziehen, und diese erkunden. Dabei muss jeweils eine kurze Beschreibung erscheinen, die die Fantasie anregt und die die wesentlichen Eigenschaften des entsprechenden Orts darstellt. Diese Beschreibungen sind von großer Bedeutung für das Spiel. Neben einem korrekten Programmcode ist es daher auch wichtig, ansprechende Texte zu erstellen, die den Leser in ihren Bann ziehen.
Wenn der Spieler jedoch nur die verschiedenen Orte aufsucht, ohne dass dabei etwas passiert, wäre das sicherlich etwas langweilig. Daher ist es an einigen Orten möglich, eine bestimmte Aktion durchzuführen. Es ist wichtig, dass die Beschreibung des entsprechenden Orts bereits einen Hinweis darauf gibt, welche Aktion hier möglich ist. Wenn wir beispielsweise einen Gegenstand in einem Brunnen suchen wollen, ist es wichtig, dass in der Beschreibung erwähnt wird, dass sich an der entsprechenden Stelle ein Brunnen befindet.
Wenn der Spieler die entsprechende Aktion erfolgreich durchführt, erhält er einen Gegenstand als Belohnung. Dieser hilft ihm dabei, Aktionen an anderen Orten durchzuführen. Wenn sich im soeben erwähnten Brunnen beispielsweise ein Schlüssel befindet, erhält der Spieler diesen als Teil seiner Ausstattung. Er kann ihn dann an einem anderen Ort verwenden, um eine Türe zu öffnen. Das hat zur Folge, dass wir bei den meisten Aktionen auch abfragen müssen, ob der hierfür benötigte Gegenstand vorhanden ist. Sollte dies nicht der Fall sein, ist es nicht möglich, die entsprechende Aktion durchzuführen. Daraus ergibt sich auch die Struktur des Spiels: Um ans Ziel zu kommen, ist es notwendig, die Orte in einer bestimmten Reihenfolge aufzusuchen und die entsprechenden Aktionen durchzuführen.
Einer der Orte muss den Endpunkt des Spiels darstellen. Wenn der Spieler diesen Ort erreicht und die entsprechende Aktion durchführt, ist das Spiel erfolgreich beendet.
Die Orte des Spiels bestimmen
Die erste Aufgabe besteht darin, die Orte des Spiels festzulegen. Dazu können wir die Gedanken etwas schweifen lassen und uns in die dargestellte mittelalterliche Welt hineinversetzen. Auf diese Weise fallen uns viele verschiedene Orte ein, die sich für unser Spiel anbieten: zum Beispiel eine Wiese, ein Wald, eine Höhle, ein Schloss, ein Tal und ein Haus. Dabei ist es auch möglich – und bei größeren Projekten sicherlich auch notwendig – dass sich verschiedene Landschaftstypen wiederholen. Beispielsweise ist es möglich, dass es mehrere Wiesen im Spiel gibt. Dabei handelt es sich aber dennoch um unterschiedliche Orte, die wir getrennt behandeln müssen.
Innerhalb des Spiels ist es möglich, von einem Ort zum nächsten zu gehen. Dabei ist es innerhalb eines Zugs allerdings nur erlaubt, angrenzende Orte aufzusuchen. Da ein linearer Verlauf, bei dem sich alle Orte in einer Reihe befinden, jedoch langweilig wäre, entscheiden wir uns für ein zweidimensionales Spielfeld. Damit das ganze Spiel nicht zu kompliziert wird, kann sich der Spieler nur in vier Richtungen bewegen – nach oben, nach rechts, nach unten und nach links. Unserer Spielidee entsprechend wählen wir hierfür jedoch die vier Himmelsrichtungen: Norden, Osten, Süden, Westen.
Allerdings besteht nicht immer die Möglichkeit, sich in jede der vier Richtungen zu bewegen. Wenn sich ein Ort am Rand des Spielfeldes befindet, sind die Möglichkeiten eingeschränkt. Deshalb ist es wichtig, bei jedem Ort anzugeben, in welche Richtung sich der Spieler bewegen kann. Die Möglichkeiten bezeichnen wir als Ausgänge. Die Ausgänge stellen eines der wesentlichen Merkmale eines Orts dar. In unserem kleinen Beispiel soll es möglich sein, alle angrenzenden Orte aufzusuchen. Bei komplexeren Spielfeldern wäre es jedoch auch möglich, dass keine direkte Verbindung zwischen zwei Orten besteht, sodass kein Übergang möglich ist, obwohl sie eigentlich nebeneinander liegen.
Die erste Aufgabe besteht daher darin, festzulegen, welche Orte das Spiel aufweisen muss. Die einfachste Möglichkeit hierfür besteht darin, diese auf einem Blatt Papier aufzuzeichnen – so wie dies im folgenden Foto zu sehen ist:
Die einzelnen Rechtecke symbolisieren dabei jeweils einen bestimmten Ort. Die Linien zwischen ihnen zeigen an, dass ein Übergang möglich ist. Darüber hinaus wird deutlich, dass es hierfür nicht notwendig ist, dass das Spielfeld eine rechteckige Struktur aufweist. Im hier dargestellten Beispiel liegt die Höhle rechts von allen übrigen Feldern. Daher hat sie nur einen einzigen Eingang. Zusammenfassend halten wir die Orte fest. Dabei geben wir ihnen gleich eine Nummer. Das ist für den weiteren Verlauf wichtig. Dabei beginnen wir mit der Zahl 0. Das ist sinnvoll, da wir die Orte später in einer Liste aufnehmen wollen. Wie Sie sicherlich bereits wissen, beginnt diese in der Informatik immer mit dem Index 0:
- Wiese(1)
- Wald
- Haus
- Tal
- Höhle
- Wiese(2)
- Schloss
Die Nummer, die wir den einzelnen Räumen geben, ist im Prinzip beliebig. Wichtig ist es lediglich, darauf zu achten, dass der Einstiegspunkt den Index 0 erhält. Das bedeutet, dass der Spieler auf der ersten Wiese beginnen wird. Außerdem ist es sinnvoll, dass der Endpunkt des Spiels – in unserem Fall das Schloss – die höchste Nummer aufweist. Es ist empfehlenswert, diese Nummern ebenfalls in die Zeichnung einzufügen.
Aktionen für die Orte festlegen
Nun müssen wir festlegen, welche Aktionen an den einzelnen Orten möglich sein sollen. Allerdings ist es nicht notwendig, dass der Spieler an jedem Ort eine Aktion durchführen kann. Einige Felder dienen lediglich als Durchgangsstation, um das Spielfeld etwas zu erweitern und es dadurch interessanter zu gestalten. Um unser Beispiel kompakt zu halten, beschränken wir uns auf vier Aktionen – an den Orten Wiese(1), Haus, Höhle und Schloss.
Nun müssen wir festlegen, welche Aktionen wir dabei jeweils durchführen wollen, welchen Gegenstand der Spieler erhalten soll und welches Objekt dafür erforderlich ist. Dies gehen wir nun am Beispiel der ersten Wiese durch. Hier soll sich ein Brunnen befinden. Darin liegt ein Schlüssel. Wenn der Spieler in den Brunnen schaut, erhält er diesen Schlüssel. Da es sich hierbei um den ersten Gegenstand handelt, ist es dafür nicht notwendig, über ein anderes Objekt zu verfügen. Nun stellt sich jedoch die Frage, wie wir diese Aktion definieren. Da es sich hierbei um ein Spiel in Textform handelt, ist es erforderlich, dass der Spieler hierfür einen bestimmten Text eingibt. In unserem Beispiel soll dieser folgendermaßen lauten: „Schaue in den Brunnen“. Nur wenn der Spieler genau diese Aufforderung eingibt, wird die entsprechende Aktion durchgeführt.
Nach dem gleichen Muster gehen wir nun auch alle weiteren Orte durch und legen die entsprechende Aktion fest. Außerdem bestimmen wir, welchen Gegenstand der Spieler erhält. Bei den übrigen Aktionen müssen wir außerdem vorgeben, welches Objekt für das Durchführen der Aktion erforderlich ist. Auf diese Weise erstellen wir die folgende Liste:
- Wiese (1)
⦁ Aktion: Schaue in den Brunnen
⦁ Gegenstand: Schlüssel
⦁ Notwendig: —- - Wald
⦁ Keine Aktion - Haus
⦁ Aktion: Öffne die Türe
⦁ Gegenstand: Schwert
⦁ Notwendig: Schlüssel - Tal
⦁ Keine Aktion - Höhle
⦁ Aktion: Töte den Drachen
⦁ Gegenstand: goldener Kelch
⦁ Notwendig: Schwert - Wiese(2)
⦁ Keine Aktion - Schloss
⦁ Aktion: Gib der Prinzessin den goldenen Kelch/Gib dem Prinzen den goldenen Kelch
⦁ Gegenstand: —
⦁ Notwendig: goldener Kelch
Dabei ist es wichtig, auf die Besonderheiten beim 6. Ort zu achten – dem Schloss. Dabei gibt es zwei verschiedene Aktionen – je nachdem, ob der Spieler das Herz eines Prinzen oder einer Prinzessin erobern will. Einen Gegenstand erhält der Spieler hierbei jedoch nicht. Wenn er die entsprechende Aktion erfolgreich durchführt, erobert er das Herz des Prinzen oder der Prinzessin und das Spiel ist beendet.
Die Eingabe der Befehle
Ein kleines Problem bei der Erstellung eines Text-Adventure-Spiels besteht darin, die Befehle des Anwenders aufzunehmen. Das Computerprogramm kann die Eingabe nur mit einer ganz bestimmten Zeichenkette vergleichen. Dabei muss eine vollständige Übereinstimmung vorliegen – inklusive Groß- und Kleinschreibung. Der Anwender muss daher genau den richtigen Befehl eingeben. Da die gewöhnliche Sprache hierbei jedoch unzählige Formulierungsmöglichkeiten bietet, ist es recht unwahrscheinlich, dass er genau den richtigen Befehl verwendet – selbst wenn er eigentlich die richtige Aktion durchführen will.
Eine Möglichkeit besteht nun darin, einen Parser zu schreiben, der die Eingabe analysiert und nach bestimmten Schlüsselbegriffen durchsucht, um zu bewerten, ob der eingegebene Befehl passt. Dafür sind jedoch sehr weit fortgeschrittene Programmierkenntnisse notwendig. Eine weitere Möglichkeit würde darin bestehen, für jeden Befehl unzählige verschiedene Formulierungen abzuspeichern, um die Wahrscheinlichkeit zu erhöhen, dass der Anwender eine passende Möglichkeit eingibt.
Eine andere Vorgehensweise besteht darin, bereits in der Beschreibung den genauen Befehl, der hier ausgeführt werden kann, anzugeben. Das würde jedoch dazu führen, dass die Lösung sehr offensichtlich ist. Darunter leidet die Spannung des Spiels.
Wir entscheiden uns in unserem Beispiel für einen Kompromiss. Wir geben nur einen einzigen Befehl vor, den der Anwender genau so eingeben muss. In der eigentlichen Beschreibung ist dieser nicht enthalten, sodass der Spieler zunächst verschiedene Möglichkeiten ausprobieren kann. Allerdings ist es an jedem Ort möglich, Hilfe zu erhalten. Wenn der Anwender den Begriff „Hilfe“ eingibt, sollen alle Befehle erscheinen, die er am entsprechenden Ort ausführen kann.
Die Grundlagen des Projekts festlegen
Bevor wir uns daran machen, den Code für das Programm zu erstellen, müssen wir einige Vorüberlegungen anstellen. Dabei wählen wir eine passende Programmiertechnik und eine geeignete Programmiersprache aus. Außerdem befassen wir uns damit, welche Voraussetzungen notwendig sind, um das Spiel umzusetzen.
Objektorientierte Programmierung: moderne Technik für das Text Adventure
Für unser Projekt greifen wir zwar auf eine recht alte Idee zurück. Für die Umsetzung verwenden wir jedoch eine moderne Technik: die objektorientierte Programmierung. Diese entstand zwar ebenfalls in den 70er Jahren. Allerdings war ihre Verbreitung damals noch äußerst gering. Deshalb ist es sehr unwahrscheinlich, dass die damaligen Spiele auf diese Weise programmiert waren.
Bereits seit den 90er Jahren ist die objektorientierte Programmierung jedoch das vorherrschende Programmierparadigma. Daher wollen wir es auch in unserem Projekt anwenden. Das bietet nicht nur den Vorteil, dass wir unserem Programm auf diese Weise klare und leicht verständliche Strukturen geben können. Darüber hinaus ist es dadurch leicht erweiter- und veränderbar. Daher stellt es später kein Problem dar, das Spielfeld zu erweitern, um das Spiel noch interessanter zu gestalten oder eine vollkommen neue Spielidee umzusetzen.
Auf diese Weise können wir beispielsweise eine Klasse für den Spieler und für die verschiedenen Orte erstellen. Insbesondere im zweiten Fall bietet dies viele Vorteile. Da wir mehrere Orte erzeugen müssen, können wir hierbei die einmal erstellten Strukturen wiederverwenden.
Eine geeignete Programmiersprache auswählen
Eine wichtige Entscheidung besteht darin, eine passende Programmiersprache zu verwenden. Da wir uns für ein objektorientiertes Programm entschieden haben, schließt das bereits einige Kandidaten aus – insbesondere die Programmiersprache C. Da allerdings fast alle modernen Programmiersprachen die objektorientierte Programmierung unterstützen, bleibt dennoch eine große Auswahl – beispielsweise Java, C++ oder Python.
Wir entscheiden uns in unserem Beispiel für Python. Der Grund hierfür besteht darin, dass diese Sprache sehr einfach aufgebaut ist und außerdem nur einen knappen Code erforderlich macht. Das bedeutet, dass wir damit vergleichsweise schnell an unser Ziel kommen. Allerdings wäre es auch möglich, jede andere objektorientierte Programmiersprache zu verwenden. Wenn Sie beispielsweise über gute Kenntnisse in Java oder C++ verfügen, können Sie das Programm, das hier entsteht, dennoch als Vorlage nutzen. Die Struktur ist dabei genau die gleiche. Sie müssen lediglich die einzelnen Befehle an die Syntaxregeln der entsprechenden Sprache anpassen.
Die Voraussetzungen für die Umsetzung des Spiels
Bevor es mit dem Programmieren losgeht, wollen wir noch kurz die Voraussetzungen für die Umsetzung betrachten. Zum einen benötigen Sie das notwendige Handwerkszeug: einen Texteditor und einen Python-Interpreter. Es wäre gut, wenn Sie bereits das eine oder andere Python-Programm erstellt haben und wissen, wie Sie dieses ausführen können.
Hinsichtlich der Programmierkenntnisse sind nur sehr geringe Vorkenntnisse erforderlich. Der Code wird hier komplett angegeben und die einzelnen Schritte erklärt. Dennoch werden ganz grundlegende Dinge – wie etwa die print()- und die input()-Methode, if-Abfragen oder Schleifen – als bekannt vorausgesetzt. Außerdem wäre es sinnvoll, wenn Sie bereits eine grobe Vorstellung davon haben, was Klassen und Objekte sind und wie die entsprechenden Elemente in Python aufgebaut sind.
Bei gut fünf Prozent aller gemeldeten Schadensfälle spielen Wackelkontakte eine Rolle.
Momentan sollte auch chip umweltfreundliche Herstellung von seiten Drucksachen eine Walze spielen.
Nette Anregung. Ich hätte mich über diesen Kurs noch mehr gefreut, wenn er für ‘C’ geschrieben wäre. C bietet keine Klassen an und die Adaption über structs und typedefs ist mühselig. 😉
Hallo Michael,
Danke für Ihre Nachricht! Gerne nehmen wir Ihre Kommentare und Anregungen für unseren Blog entgegen!
Olena vom BMU Team
Das Phyton 3 Buch macht viel Spass! Das stufenweise Lernen des Programmieren motiviert zum Weitermachen und wird durch das Funktionieren der Übungsaufgaben belohnt. Die Programmiersprache kann kostenlos vom Internet heruntergeladen werden; ebenso die thematisierten Programmcodes. Auf diesem Wege vielen Dank für dieses Inspiration -bitte weiter so!
Hallo Martin,
Herzlichen Dank, dass Sie sich die Zeit genommen haben, das Feedback zu unserem Buch zu geben. Solche Kommentare motivieren, wenn wir merken, dass unsere Anstrengungen auch bei unseren Lesern ankommen. Gerne machen wir so weiter!
Mit freundlichen Grüßen,
Olena vom BMU Team
Das Projekt macht mich als Programmiereinsteiger neugierig. Würde es gerne nachvollziehen. Freue mich schon auf Teil2 des Blogs.
Hallo Rudi,
Vielen Dank für Ihr Feedback! Es freut uns sehr, dass Sie unseren Blog interessant finden.
Sie können unsere Newsletters abonnieren, um sich über die aktuellsten Neuigkeiten, so wie Blogbeiträge, Bücher, Sonderangebote usw. informieren!
Mit freundlichen Grüßen,
Olena Zakrytna
BMU Media GmbH