Thema: Delphi Hilfe mit Textadventure

Einzelnen Beitrag anzeigen

MW28

Registriert seit: 8. Jan 2015
5 Beiträge
 
#1

Hilfe mit Textadventure

  Alt 8. Jan 2015, 18:15
Hallo ,

ich muss für die Schule als Projekt ein Textadventure mit Delphi 7 erstellen(nichts allzu kompliziertes). Ich habe nun schon ein wenig angefangen soweit ich konnte, jetzt komm ich aber bei den Attributen(?) für die Klassen nicht so recht weiter. Das ganze compiled zwar, nimmt aber die Attribute nicht so recht an (bleiben auf nil). Falls ich irgendeinen offensichlichen Fahler gemacht hab tut es mir leid aber wir haben erst ca. 15 Doppelstunden Informatik gehabt und unser Lehrer ist nicht grade gut im Erklären bzw. erklärt garnichts sondern gibt einfach nur Arbeitsblätter.

Hier der Quellcode von Form1 :
Delphi-Quellcode:
unit DelphiSpiel;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, URaum, ExtCtrls, StdCtrls, JPEG ;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Edit1: TEdit;
    Button1: TButton;
    Image1: TImage;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    
  public

  end;

var
  Form1: TForm1;
  info_aktuellerRaum : string ;
  info_startRaum : string ;
  info_raum1 : string ;
  info_raum2 : string ;
  info_raum3 : string ;
  aktuellerRaum , startRaum , raum1 , raum2 , raum3 : TRaum ;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
image1.canvas.create ;

startRaum := TRaum.Create;
startRaum.setAusgang(raum1,nil,nil,nil);
info_startRaum := 'Dies ist der Start. Hier geht es nur in eine Richtung' ;

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

raum2 := TRaum.Create ;
raum2.setAusgang(nil,raum1,nil,nil);
info_raum2 := 'dies ist raum2' ;

raum3 := TRaum.Create ;
raum3.setAusgang(nil,nil,nil,raum1);
info_raum3 := 'dies ist raum3' ;

aktuellerRaum := TRaum.Create ;
aktuellerRaum.setAusgang(nil,nil,nil,nil);
info_aktuellerRaum := 'fehler'  ;

aktuellerRaum := startRaum ;
info_aktuellerRaum := info_startRaum ;

Memo1.Clear ;
Memo1.Lines.add(info_aktuellerRaum) ;
if aktuellerRaum.Fnorth <> nil then Memo1.Lines.add('---->Norden') ;
if aktuellerRaum.Fsouth <> nil then Memo1.Lines.add('---->Süden') ;
if aktuellerRaum.Feast <> nil then Memo1.Lines.add('---->Osten') ;
if aktuellerRaum.Fwest <> nil then Memo1.Lines.add('---->Westen') ;
if startRaum.Fnorth = nil then Memo1.Lines.add('attribute wurden nicht richtig festgelegt');


end;

procedure TForm1.Button1Click(Sender: TObject);
var eingabe : string;
begin
eingabe := edit1.Text ;
if (eingabe = 'Norden')and (aktuellerRaum.Fnorth = nil) then aktuellerRaum := aktuellerRaum.Fnorth ;
if (eingabe = 'Süden')and (aktuellerRaum.Fsouth <> nil) then aktuellerRaum := aktuellerRaum.Fsouth ;
if (eingabe = 'Osten')and (aktuellerRaum.Feast <> nil) then aktuellerRaum := aktuellerRaum.Feast ;
if (eingabe = 'Westen')and (aktuellerRaum.Fwest <> nil) then aktuellerRaum := aktuellerRaum.Fwest ;

Memo1.clear ;
Memo1.Lines.add(info_aktuellerRaum);

if aktuellerRaum.Fnorth <> nil then Memo1.Lines.add('---->Norden') ;
if aktuellerRaum.Fsouth <> nil then Memo1.Lines.add('---->Süden') ;
if aktuellerRaum.Feast <> nil then Memo1.Lines.add('---->Osten') ;
if aktuellerRaum.Fwest <> nil then Memo1.Lines.add('---->Westen') ;

end;

end.
Und hier der von URaum:
Delphi-Quellcode:
unit URaum;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls, JPEG;

type
  TRaum = class
   Fnorth,Fsouth,Feast,Fwest : TRaum;
   procedure setAusgang(n,s,e,w : TRaum);
   Constructor Create;

   private

   public

end;

implementation
Constructor TRaum.Create;
begin
self.Fnorth := Fnorth;
self.Fsouth := Fsouth;
self.Feast := Feast;
self.Fwest := Fwest;
end;

procedure TRaum.setAusgang(n,s,e,w : TRaum) ;
begin
self.Fnorth := Fnorth;
self.Fsouth := Fsouth;
self.Feast := Feast;
self.Fwest := Fwest;
end;
end.
Soweit ich inzwischen weiß müsste man das garnicht in verschieden Dateien machen, aber unser Leherer hat uns das so gezeigt.

Schon mal vielen Dank im Vorraus.
  Mit Zitat antworten Zitat