Einzelnen Beitrag anzeigen

Benutzerbild von implementation
implementation

Registriert seit: 5. Mai 2008
940 Beiträge
 
FreePascal / Lazarus
 
#9

Re: Zwei Fragen zum ersten Programm

  Alt 7. Jan 2010, 18:41
Lege erst einmal eine Klasse für ein Feld an:
Delphi-Quellcode:
type
  TFeld = class; // Prädeklaration
  TFeld = class
    // Dein Image
    Image: TImage;
    // Und hier der Verweis auf den Nachfolger
    Next: TFeld;
  end;
  TStrasse = class(TFeld)
    Gekauft: TImage;
    Name: string;
    Mietkosten: word;
  end;
  TEWWerk = class(TFeld)
    Gekauft: TImage;
    Name: string;
  end;
  TKnast = class(TFeld)
    NurzuBesuch: boolean;
  end;
  TLosFeld = class(TFeld);
  TPolizist = class(TFeld);

var
  aktFeld, erstesFeld, knastFeld: TFeld;

procedure TForm1.OnCreate(Sender:TObject);
var
  i: byte;
begin
  // Felder erstellen
  aktFeld := TLosFeld.Create;
  aktFeld.Image := TImage.Create;
  erstesFeld := aktFeld;
  for i := 0 to 14 do begin
    aktFeld.Next := TFeld.Create;
    aktFeld := aktFeld.next;
    aktFeld.Image := TImage.Create;
    aktFeld.Gekauft := TImage.Create;
  end;
  aktFeld.Next := erstesFeld;
  aktFeld := erstesFeld;
end;

procedure Ziehen(Augensumme:Byte);
begin
  for Augensumme := 1 to Augensumme do begin
    aktFeld := aktFeld.Next;
    if aktFeld is TLosFeld then Geld := Geld+100;
    if aktFeld is TKnast then TKnast(aktFeld).NurzuBesuch := true;
  end;
  if aktFeld is TPolizist then GeheInDenKnast;
  ...
end;

procedure GeheIndenKnast;
begin
  aktFeld := knastFeld;
  TKnast(aktFeld).NurZuBesuch := false;
end;
Der Code ist nicht getestet, er soll nur das Prinzip erklären.
  Mit Zitat antworten Zitat