Autor Beitrag
kaotika
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Mi 14.12.05 18:01 
Ich hoffe mal der Titel ist nicht zu eigenartig, hab nur keine Ahnung wie ich es sonst schreiben sollte.(falls er irreführend sein sollte bitte sagen)

Mein Problem:
Versuche gerade OOP zu lernen und damit ein Spiel das ich vorn paar Jahren inner Schule programmiert habe neuzuschreiben. Bei dem Spiel brauche ich hauptsächlich TImages und habe davon eine Klasse abgeleitet und erweitert(das klappt soweit auch) . In die neue Klasse habe ich eine Variable vom Typ einer andern erstellten Klasse eingebaut, nur kann ich nicht so recht auf die Eigenschaften dieser Klasse zugreifen(nur auf die erste Eigenschaft).

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
type
 Tgr_obj = class(TImage)
 private
  FBesitzer : TBesitzer;

  procedure setX(i: Integer);
  procedure setY(i: Integer);
  function getX: Integer;
  function getY: Integer;
 public
  constructor create(x,y: Integer; owner: TComponent; n: String; ID, race: byte);
  destructor destroy; override;
  property x : Integer read getX write setX;
  property y : Integer read getY write setY;
  property Besitzer : TBesitzer read FBesitzer write FBesitzer;
 end;

implementation

constructor Tgr_obj.create(x,y: Integer; owner: TComponent; n: String; ID, race: byte);
 begin
   inherited create(owner);
   setX(x);
   setY(y);
   Autosize := true;
   FBesitzer := TBesitzer.Create(n, ID, race);
 end;


ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
type
 TBesitzer = class
 private
  FBesitzer_Name : String;
  FSpielerID : byte;                //0 = PC_neutral, 1 = PC_feindlich, 2 = Spieler1, 3 = Spieler2, 4 = Spieler3, 5 = Spieler4, 6 = Spieler5
  FRasse : byte;                    //0 = Föderation, 1 = Klingonen, 2 = Romulaner, 3 = Cardassianer, 4 = Dominion
  FBeziehung : array of byte;       //FBeziehung[FBesitzer_Name]; 0 = neutral, 1 = feindlich, 2 = freundlich
 public
  procedure setName(n: String);
  procedure setSpielerID(i: byte);
  procedure setRace(i: byte);  
  function getName: String;
  function getSpielerID: byte;
  function getRace: byte;

  constructor Create(n: String; ID, race: byte);
  property Name : String read getName write setName;
  property SpielerID : byte read getSpielerID write setSpielerID;
  property Race : byte read getRace write setRace;
 end;


ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
var
  objekt : TPlanet;

procedure TForm1.FormCreate(Sender: TObject);
 begin
   objekt := TPlanet.Create(10,20NIL'Peter'00);
   with objekt do
   begin
     Picture.LoadFromFile('bild.bmp');
     Parent := Form1;
     SProduktion := 10;
     PName := 'Betelgeuze';
   end;
   label1.caption := IntToStr(objekt.SOrbit);
   label2.caption := objekt.Besitzer.Name;                   <-----Das wird angezeigt
   label3.caption := objekt.Besitzer.SpielerID;              <-----Das wird nichtmehr angezeigt 
 end;


TPlanet is ne weitere Ableitung von Tgr_obj...und ansonsten geht das auch.
Sicherlich hab ich da irgendwas nicht beachtet beim Programmieren. Würde mich freuen wenn mich da jemand aufklären könnte was das ist. Danke schonmal!


Moderiert von user profile iconChristian S.: Topic aus Sonstiges verschoben am Mi 14.12.2005 um 17:05


Zuletzt bearbeitet von kaotika am Do 15.12.05 00:37, insgesamt 1-mal bearbeitet
Kroko
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1284

W98 W2k WXP
Turbo D
BeitragVerfasst: Mi 14.12.05 21:29 
da meine Glaskugel kaputt ist, rate ich mal, dass die ID in TBesitzer.Create nicht gesetzt wird!

_________________
Die F1-Taste steht nicht unter Naturschutz und darf somit regelmäßig und oft benutzt werden! oder Wer lesen kann, ist klar im Vorteil!
kaotika Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Do 15.12.05 00:45 
Danke! Vermutung war sogar richtig...also danke für die Hilfe! :D
Hatte da noch ne If-Answeisung drin die wohl nicht funktioniert hat.