Einzelnen Beitrag anzeigen

eMGee

Registriert seit: 9. Jan 2006
20 Beiträge
 
#33

Re: Spiel für Informatik Unterricht!!

  Alt 9. Jan 2006, 18:39
Also es liegt eindeutig an dieser Stelle:

aktuellerRaum:= aktuellerRaum.Norden; also an aktuellerRaum, habe jetzt mal probiert alles nacheinander aus der prozedur rauszuholen und sobald nichts mehr mit aktuelleRaum drin ist läufts.... also hier nochmal der ganze quelltext habe absolut keine Ahnung was mit aktuellerRaum nicht stimmt....

Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Image1: TImage;
    Memo1: TMemo;


    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

type
  TRaum=class
    Beschreibung:String;
    Bild:String;
    Norden,Osten,Sueden,Westen:TRaum;
    procedure setAusgaenge(norden,osten,sueden,westen:TRaum);
end;


var
  Form1: TForm1;
  Room: array [1..16] of TRaum;
  aktuellerRaum:TRaum;

implementation

{$R *.dfm}

procedure TRaum.setAusgaenge(norden,osten,sueden,westen:TRaum);
begin
  self.Norden:= norden;
  self.Osten:= osten;
  self.Sueden:= sueden;
  self.Westen:= westen;
end;

procedure TForm1.FormCreate(Sender:TObject);
var i: integer;
begin

  //---Räume erzeugen---
  for i:=1 to 16 do
  begin
    Room[i]:=TRaum.Create;
    Room[i].Beschreibung:='blabla';
    Room[i].Bild:='Bilder\raum'+IntToStr(i)+'.jpg';
  end;

    aktuellerRaum:=TRaum.Create;


  //---Ausgänge setzen---
  room[1].setAusgaenge(nil,room[2],room[5],nil);
  room[2].setAusgaenge(nil,room[3],room[6],room[1]);
  room[3].setAusgaenge(nil,room[4],room[7],room[2]);
  room[4].setAusgaenge(nil,nil,room[8],room[3]);
  room[5].setAusgaenge(room[1],room[6],room[9],nil);
  room[6].setAusgaenge(room[2],room[7],room[10],room[5]);
  room[7].setAusgaenge(room[3],room[8],room[11],room[6]);
  room[8].setAusgaenge(room[4],nil,room[12],room[7]);
  room[9].setAusgaenge(room[5],room[10],room[13],nil);
  room[10].setAusgaenge(room[6],room[11],room[14],room[9]);
  room[11].setAusgaenge(room[7],room[12],room[15],room[10]);
  room[12].setAusgaenge(room[8],nil,room[16],room[11]);
  room[13].setAusgaenge(room[9],room[14],nil,nil);
  room[14].setAusgaenge(room[10],room[15],nil,room[13]);
  room[15].setAusgaenge(room[11],room[16],nil,room[14]);
  room[16].setAusgaenge(room[12],nil,nil,room[15]);

  aktuellerRaum:=room[1];

end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if (aktuellerRaum.Norden <> nil) then
  begin
    aktuellerRaum:= aktuellerRaum.Norden;
    Image1.Picture.LoadFromFile(ExtractFilePath(ParamStr(0))+aktuellerRaum.Bild);
    Memo1.Lines.Add(aktuellerRaum.Beschreibung);
  end;
end;


procedure TForm1.Button3Click(Sender: TObject);
begin
  if (aktuellerRaum.Sueden <> nil) then
  begin
    aktuellerRaum:= aktuellerRaum.Sueden;
    Image1.Picture.LoadFromFile(aktuellerRaum.Bild);
    Memo1.Lines.Add(aktuellerRaum.Beschreibung);
  end;
end;


procedure TForm1.Button4Click(Sender: TObject);
begin
  if (aktuellerRaum.Westen <> nil) then
  begin
    aktuellerRaum:= aktuellerRaum.Westen;
    Image1.Picture.LoadFromFile(aktuellerRaum.Bild);
    Memo1.Lines.Add(aktuellerRaum.Beschreibung);
  end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  aktuellerRaum:= aktuellerRaum.Westen;
end;

end.
  Mit Zitat antworten Zitat