Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Do Jul 10, 2025 18:37

Foren-Übersicht » Programmierung » Allgemein
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Pointers auf Klassen
BeitragVerfasst: Di Nov 04, 2003 18:57 
Offline
DGL Member

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.

Danke
mfg EternalLearner


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Nov 04, 2003 19:02 
Offline
DGL Member

Registriert: Mo Nov 03, 2003 20:23
Beiträge: 66
sowas muss du ganz eigentlich nicht.

var myarray[0..200] of integer;

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;


...

fMyProc ( myarray, 201 );


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Nov 04, 2003 19:21 
Offline
DGL Member
Benutzeravatar

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.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Nov 04, 2003 23:10 
Offline
Guitar Hero
Benutzeravatar

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Nov 06, 2003 18:23 
Offline
DGL Member

Registriert: So Sep 21, 2003 18:29
Beiträge: 15
Wohnort: Süd Afrika
Das ein Array kein Objekt ist ist mir schon klar. Das man Objekte ohne
Pointer angeben kann werde ich sobald ich zeit habe mal versuchen.

Danke
mfg
EternalLearner


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 5 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.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.007s | 14 Queries | GZIP : On ]