C++ Events in C++ für Simulation

  • Ersteller Ersteller Furtano
  • Erstellt am Erstellt am
F

Furtano

Gast
Hallo,

ich baue eine Ameisensimulation in C++ / OpenCL und möchte mit Events arbeiten.

Habt ihr Tipps / Hinweise für den Einstieg, ich habe das noch nie in C++ gemacht.

Ich möchte die Klasse Ameisenkönigin anlegen (sie hat einen internen Timer wann sie erzeugt wurde) und je nach dem wie die Zeit vergeht soll sie bestimmte Events auslösen wie -> erhöhe Ameisenpopulation um 3 oder -> Hochzeitsflugzeit, aus den Eiern werden Männchen.

Danke :)
 
AM einfachste isses wenn du einen zentralen Event Dispatcher hast. Der verwaltet anstehende Events in eine Queue und stellt diese zu.
Bei diesem Dispatcher kannst du dann Handler für Events registrieren. Verwalten könntest du die Events/Handler in einer Hashtable(Event als Schlüssel).
Um ein Event auszulösen muss dieses in die Queue geschrieben werden.
Die Zustellung erfolgt in einem eigenem Thread der in einer Endlosschleife läuft und die Queue abarbeitet.


Ich hab da grad noch ne andere Idee.
Du könntest ne Kette aufbauen in der die Events entlang gereicht werden bis sich wer dafür zuständig fühlt oder das Event hinten raus fällt. (Chain of Responsibillity Pattern http://de.wikipedia.org/wiki/Zuständigkeitskette)

Wie das nun konkret in C++ umzusetzen is kann ich dir leider nicht sagen.
 
Das scheint mir die Liste(nix anderes ist der Vector) zu leeren.
begin() gibt wahrscheinlich das erste Objekt der Liste zurück
end() gibt wahrscheinlich das Letzte Objekt der Liste zurück

Das is im übrigen genau das was ich zuerst beschrieben hatte. Mir fiel der Name des Entwurfmusters nicht mehr ein :)
 
ich habe mir das codebeispiel nicht durchgelesen, aber:

end zeigt üblicherweise nicht auf das letzte element, sondern auf die ungültige stelle eins "hinter" dem letzten element, damit man schleifen wie
Code:
for (i=begin(); i != end(); ++i)
verwenden kann.
 
Zurück
Oben