Einzelnen Beitrag anzeigen

Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#4

AW: Vekehrssimulation: NaSch-Modell

  Alt 8. Feb 2011, 22:43
Diese Werte kannst du dir doch aus einer "virtuellen Zellen-ID" ableiten. Jedes Auto merkt sich seine ganz aktuelle ID, und über entsprechende Properties der Straßenklasse (die ja ihre Autos kennt) iterierst du dann drüber und ermittelst live den Wert.

So als Gerüst in etwa sowas:
Delphi-Quellcode:
type
  TStrasse = class
  private
    FAutos: TList<TAuto>;
    function GetIsCellFree(cellIndex: Integer): Boolean;
  public
    property IsCellFree[cellIndex: Integer]: Boolean read GetIsCellFree;
  end;

implementation

TStrasse.GetIsCellFree(cellIndex: Integer): Boolean;
begin
  result := true;
  foreach a: TAuto in FAutos do
  begin
    if a.MyCurrentCellIndex = cellIndex then
    begin
      result := false;
      Exit;
    end;
  end;
end;
Sieht von aussen aus wie ein Array über die (nicht existenten) Zellen, ist aber keines. Es spart das tatsächliche Modelieren der Zellen als eigene Daten, erzeugt aber natürlich Such-Overhead. Overhead hast du aber natürlich auch, an anderer Stelle und potenziell weniger, beim Mitführen separater Zellklassen, die ja auch bei jeder Bewegung ihre Inhalte neu berechnen müssen. Welche der Varianten in der Praxis mit weniger Verwaltung "hinter den Kulissen" auskommt vermag ich aber nicht ganz abzuschätzen gerade. Im Mittel könnte das ggf. sogar aufs gleiche rauskommen.
"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)

Geändert von Medium ( 8. Feb 2011 um 22:45 Uhr)
  Mit Zitat antworten Zitat