Also ich habe Sacaldurs Comment nur halb gelesen, da ich in letzter Zeit sehr unkonzentriert bin(nix gegen dich Sacaldur
) also weiß ich nicht ob ich jetzt dasselbe sage wie er:
Ich denke mal das du einige Grundlagen wie Klassen oder Rendern von Gegenständen schon beherrschst, und nach deiner beschreibung denke ich ähnelt das ganze einem Wimmelbildspiel, aber ich lege dir jetzt mal dar, wie ICH da rangehen würde (da ich selber noch Anfänger bin, gibts keine Garantie)
Du machst erstmal das Grundgerüst für das Spiel, also alles, was du später brauchst(Framework, Timer (wichtig),eine Klasse um deine Bilder zu rendern (bei mir heißt sie immer Sprite)).
Danach würde ich folgender maßen vorgehen.
Du baust jede Map in einer extra Klasse auf, je nachdem auf welchen Punkt man drückt(bei dir die Tür) ändert sich eine Variable(die ich meist "running " nenne)diese setzt du anfangs auf 1 oder 2 , was dir halt am logischsten vorkommt. Das Level packst du mit all seinen funktionen in eine do/while schleife mit der Bedingung, das die variable immer noch deiner wahl entspricht.Vor der Schleife baust du die Map auf, z.b. eine Funktion, die auf die Tür ein Event setzt, welches dann die variable "running" ändert und auch alles, was du sonst noch so brauchst.
In die Schleife packst du dann die Funktion, die den Wahrheitsgehalt der Variable überprüft, die durch das aktivieren der Eventfunktion geändert wird.So wird innerhalb der Schleife dauerhaft überprüft, ob die Tür angedrückt wurde.
In die Schleife gehören sicherlich noch andere Funktionen (mir fallen grade spontan keine ein, da ich ein Gedächtnis wie ein Sieb habe) aber du wirst sicherlich merken, was alles in die Schleife gehört, wenn du das Programm schreibst.
unter diese Schleife baust du dann einige if Funktionen ein, eine für jedes Level, das man über das momentane Level erreichen können soll in der du überprüfst, welchen wert die Variable hat. Klickst du die Tür an, hat der Wert "running" ja nicht mehr denselben wert, wie in der bedingung der "while" schleife(zumindest sollte er das nicht)
So baut (zumindest ich) man mit einfachen, überschaubaren funktionen ein Level auf.
Für das Inventar oder ähnliche Dinge(wie z.b. den Wahrheitsgehalt, ob eine Quest noch offen ist oder schon absolviert wurde) baust du dir dann eine statische Klasse, mit Funktionen um all diese Werte zu überprüfen(natürlich müssen alle Variablen statisch sein) z.b. ob du ein Item Besitzt, oder wie viele davon.
Eine Instanz dieser Klasse MUSS in jeder anderen Level-Klasse enthalten sein, so kannst du in jedem Level überprüfen, welche Items eingesammelt wurden, welche Quests noch offen sind, und alles, was du überall im Spiel an Inhalt brauchst.
Wie du ein visuelles Inventar Programmierst weiß ich leider nicht, sonst würde ich es dir erklären, doch ich bin schon daran am Arbeiten, eines zu entwickeln.
So würde ICH das machen, wenn ich dass jetzt umständlich mache, oder gar inkorrekt bitte ich doch die Profis, mir dies zu melden, da ich(wie gesagt) noch ein Anfänger bin, der sich so ziemlich alles selbst erarbeitet hat, mit einem einzigen Buch und dem Gehirn.
Des weiteren würde ich hier mal sagen, dass(wenn du wirklich noch so wenig Erfahrung hast, wie ich das jetzt aufgegriffen habe)du dich mal mit einfachen Spielen beschäftigen solltest, die nur eine Map umfassen, und mit denen du lernst, Techniken richtig anzuwenden und (VOR ALLEM) solltest du dabei lernen, dir Techniken logisch selbst zu erschließen. Ist wirklich nicht schwer, wenn man mal angefangen hat, innovativ zu sein, kommen die Ideen wie von alleine, du musst dich nur noch drum kümmern, dass deine Idee unterm Strich auch so funktioniert, wie sie sollte.
Vorschlagen würde ich dir mal als Beginn und Einstieg ein 2d Rpg mit einem Charakter der rumrennt, und Zombies oder anderem zeugs, gegen die es sich zu verteidigen gilt. Die Grundtechniken sind relativ einfach, jedoch ist ein solches Spiel(wie ich es beschrieben habe) noch sehr ausbaufähig, d.h. die Grundarbeit ist bereits getan, du bist jedoch in der Lage zu lernen , neue Techniken, wie z.b. eine gute KI selber zu entwickeln.
wenn du mir eine Pn schickst, erkläre ich dir mal alles in Ruhe und schicke dir mal ein Projekt, dass zwar nicht funktioniert, da ich versucht habe, ob ich Arrays vergleichen kann, ohne die Buchstaben einzeln zu überprüfen, aber es zeigt das gerade erklärte System relativ gut.(Ich schreib auch Kommentare dazu dran und fasse das ganze in Funktionen wenn dir das hilft mich zu verstehen
)
Viel Glück dennoch mit deinem Vorhaben