Registriert: So Sep 21, 2003 18:29 Beiträge: 15 Wohnort: Süd Afrika
Hi!
Ich habe heute ein Snake-Clone geschrieben um das mit dem OOP mal auszuprobieren. Die Snake und die Apfel habe ich als Klassen implementiert. Das Spielfeld ist ein 2D Integer Array. Die Klassen sind in einer anderen Unit wie die Board Instanz. Das geht auch alles ganz gut. Wenn ich in der Snake Klasse z.B. Kollision detection machen will, muss ich aber so was deklarieren:
Tboard=array[0..127,0..95] of integer;
PBoard=^TBoard;
Und dann im Spiel:
Snake.Collide(@Board);
Ist das normal das man bei jeder zweiten Funktion so etwas per Pointer übergibt oder gibt es eine bessere Art Instanzen von Klassen zu linken. Die Unit kann ich ja nicht includen da ich dann ein "circular reference" kriege. Jetzt ist es ja nur eine Variable, nämlich das Board(Spielfeld) aber ich kann mir vorstellen das es sehr schnell mit den Pointern kompliziert wird wenn man was kompliziertes schreibt mit Hunderten von Objekten.
procedure fMyProc( vParam: Array of integer; vCount: Integer )
Var Var1: Integer;
begin
For Var1 := 0 to vCount-1 do
Begin
vParam[Var1] := Random(1000); // hmpf End;
end;
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Nebenbei bemerkt ist ein Pointer auf eine Klasse nicht notwendig, da es sich bei Klassen sowieso um Pointer handelt. Sprich wenn du sie an eine Methode übergibst werden sind alle Änderungen (methodenaufrufe, propertys) auch außerhalb der methode ferfügbar. Anders als dies bei normalen variablen (oder records) der Fall ist.
Edit: Was mir gerade aufgefallen ist. Du hast da oben nicht mal ne Klasse. Das ist lediglich ein mehrdimensionales Array (of Integer) als neuen Typ deklariert. Wobei da Pointer "benötigt" werden. Aber vorsichtig gesagt hat das mal ebend überhaupt nix mit Objekt Orientierter Programmierung zu tun.
Registriert: Do Sep 25, 2003 15:56 Beiträge: 7810 Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Wenn du die Unit einmal im Interface und beim andern mal im Implementation Teil schreibst passiert das nicht. Nur bei Units die im Interfaceteil stehen, kommt es zu "Ringen".
_________________ Blog: kevin-fleischer.de und fbaingermany.com
Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.