Programmieren - alles kontrollieren 4.939 Themen, 20.672 Beiträge

Frage zu Delphi 7 - mal wieder ;-)

KoRny Boy / 7 Antworten / Flachansicht Nickles

moin moin,

ich hab in einem Programm das ich mit Delphi 7 programmiere(also es soll ein kleines Spiel werden) folgende Vorstellung wie es funktionieren soll:

- 4 Planeten
- 2 Spieler mit verschiedenen Werten(Rohstoffe, Militäreinheiten,...)

Jetzt bin ich dabei, dafür ein Object zu definieren:

Type
Planet = Object
Spieler1 : Record // Spieler1 = Mensch
{Variablen für
Rohstoffe, Miltär,
Wirtschaft,...}
End; // End Of Record
Spieler2 : Record // Spieler2 = Computergegner
{Variablen für
Rohstoffe, Miltär,
Wirtschaft,...}
End; //End Of Record
End; // End Of Object

Var
Planet_ : Array [1..4] Of Planet

dann möchte ich später das im folgenden Sinne verwenden:

Planet[1].Spieler[1].Gold := x;
oder
Planet[4].Spieler[1].Gold := y;

halt so, dass die Werte der Variablen vom Planeten, den der Spieler besitzt, abhängt, aber trotzdem beide einem Spieler zugeordnet sind...

Jetzt finde ich das aber unprofessionell dass ich die Variablen alle doppelt deklarieren muss. Also dachte ich an einen Array[1..2](Also dann Player[1].Gold zum Beispiel und Player2.Gold) des Records, aber das ist nicht möglich, bzw ich weiß nich wie man das programmiert...

Ich hoffe ich konnte meine Vorstellung einigermaßen klar darstellen.
Wäre nett wenn mir da jemand weiterhelfen könnte...

MfG KoRny Boy

Wer anderen eine Grube gräbt ist selbst ein Schwein
bei Antwort benachrichtigen
Andreas42 KoRny Boy „Frage zu Delphi 7 - mal wieder ;-)“
Optionen

Hi!

Du könnhtest das ganze obektorientiert angehen. Das tehma hatten wir ja schon. ;-)

Ich musste aber auch erstmal etwas nachdenken, aber ich denke, man bekommt das ohne zuviel Verrenkungen hin. :-)

Letzendlich ist es ja so, dass du mehrere Planeten hast und jeder Spieler hat Besitz auf einem oder emhrerern Planeten. Es liegt also nahe, den besitz in Klassen zu verwalten.

TypeGameBesitz: class
owner:longint; {Variablen für Rohstoff, Militär, Wirtschaft usw.}
end;

Die Platen wären dann ebenfalls eine Klasse (ich nenne sie jetzt einfach TypeGamePlanet) und würden als Attribut/Variable dann einen Array auf Instanzen von TypeGameBesitz enthalten. Am besten stattet man die Klasse mit Methoden/Funktionen aus, über die man auf Besitze von einzelen Spielern zugreifen kann.
Da könnte man dann z.B. GetBesitz(OwnerID) benutzen, um einen zeiger auf den besitz des Spielers OwnerID zurückzugeben. Mit PutBesitz(PointerAufBesitz) würde man dann einen Besitz neu speichern (er enthält ja einer Owner-Kennung, damit kann man dann feststellen, ob der Besitz für diesen Speiler schon vorhanden ist und dann ein entsprechendes Update durchführen).

Wenn man dann noch weitertreiben will, dann bildet man die einzelnen Variablen in TypeGameBesitz auch noch in Klassen ab. hier sollte man dann mit abgleiteten Klassen arbeiten, man verwendet also einen Basistyp und leitet dann die Klassen für Wirtschaft, Militär, Rohstoffe usw. von der Basisklasse ab. In TypeGameBesitz kann man dann wieder einen Array (oder eine andere Struktur einsetzen), um die BesitzInstanzen zu verwalten.

Bis dann
Andreas

Hier steht was ueber mein altes Hard- und Softwaregedoens.
bei Antwort benachrichtigen