Thema: Delphi Hilfe mit Textadventure

Einzelnen Beitrag anzeigen

Medium

Registriert seit: 23. Jan 2008
3.679 Beiträge
 
Delphi 2007 Enterprise
 
#12

AW: Hilfe mit Textadventure

  Alt 8. Jan 2015, 23:43
Du hast noch ein anderes Problem. Mal ein Auszug aus deinem Code:
Delphi-Quellcode:
// 0
startRaum := TRaum.Create;
startRaum.setAusgang(raum1,nil,nil,nil);
info_startRaum := 'Dies ist der Start. Hier geht es nur in eine Richtung' ;

// 1
raum1 := TRaum.Create;
raum1.setAusgang(raum2,nil,raum3,nil);
info_raum1 := 'dies ist raum1' ;

// 2
raum2 := TRaum.Create ;
raum2.setAusgang(nil,raum1,nil,nil);
info_raum2 := 'dies ist raum2';
Bei "// 0" setzt du den ersten Parameter in setAusgang() auf "raum1". "raum1" ist zu diesem Zeitpunkt allerdings noch überhaupt nicht erstellt worden, und ist somit "nil". Dort steht also effektiv daher startRaum.setAusgang(nil,nil,nil,nil); . Nachträglich an "raum1" zugewiesene Werte werden nicht automatisch an in der Vergangenheit gemachte Zuweisungen weitergeleitet.
Bei "// 1" hast du letztlich genau dasselbe Problem, "raum2" und "raum3" sind dort noch "nil".
Bei "// 2" müsste aber "raum1" bereits mit einer Instanz von TRaum belegt sein, und somit wird dort NICHT "nil" im 2. Parameter übergeben. Dort sollte es tatsächlich passen.

Das simpelste wäre hier wohl, wenn man zuerst alle Räume erstellt, und erst danach allen ihre Ausgänge zuweist:
Delphi-Quellcode:
startRaum := TRaum.Create;
raum1 := TRaum.Create;
raum2 := TRaum.Create ;

info_startRaum := 'Dies ist der Start. Hier geht es nur in eine Richtung' ;
info_raum1 := 'dies ist raum1' ;
info_raum2 := 'dies ist raum2';

startRaum.setAusgang(raum1,nil,nil,nil);
raum1.setAusgang(raum2,nil,raum3,nil);
raum2.setAusgang(nil,raum1,nil,nil);
Auf die strukturellen "Fehler" sollten wir hier denke ich erstmal nicht weiter eingehen, das würde für ein Schulprojekt wohl zu weit führen, und den TE eher noch mehr verwirren. (So Dinge wie, dass die "info_*" Variablen nach OOP eigentlich ein Feld von TRaum sein sollten z.B.) Wichtiger ist erst mal, dass es überhaupt schon mal klappt. Alleine schon um den Spaß dran zu behalten.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat