![]() |
Re: Klasse mit Konstanten ?
Zitat:
Delphi-Quellcode:
Performance := Goodbye;
|
Re: Klasse mit Konstanten ?
Delphi-Quellcode:
Würde das so etwa gehen ?
type TRune = class
function GetRarity : Integer; end; type TRune1 = class(TRune) end; type TRune2 = class(TRune) end; function TRune.GetRarity : Integer; begin if Classname = 'TRune1' then Rarity := 300; // Ka ob die Eigenschaft jetzt Classname heißt.. if Classname = 'TRune2' then Rarity := 400; ... end; EDIT : Ich glaube das wäre echtes OOP o.O sowas hab ich ja noch nie gemacht :D ;) @Speedmaster : Ist aber zum Glück nur 2D :mrgreen: |
Re: Klasse mit Konstanten ?
Zitat:
Warum lernst du es nicht, einfach mal dein komischen Vorurteile zu überprüfen? (Ist ja nicht das erste Mal ;) ) @NG Autsch.... |
Re: Klasse mit Konstanten ?
:angel2:
Zeigt mir mal nen Beispiel pls :mrgreen: |
Re: Klasse mit Konstanten ?
Zitat:
@Robert_G: Wer sagt den das ich eine Funktion benutzen würde? |
Re: Klasse mit Konstanten ?
Auch ne Idee aber ich hab ehrlichgesagt keine Lust für jede Klasse nen Konstruktor zu basteln :(
|
Re: Klasse mit Konstanten ?
Warum müssen das denn überhaupt verschiedene Klassen sein? Die sehen nämlich eigentlich alle ziemlich gleich aus. Ich würd's so machen
Delphi-Quellcode:
//edit
type TRuneTypes = (rtX, rtY, rtZ);
const RuneRarities: array[0..2] of integer = [100, 200, 300]; RuneColors: array[0..2] of TColor = [clGrey, clTeal, clRed]; // Da bin ich mir mit der Syntax nicht ganz sicher type TRune = class constructor Create(RuneType: TRuneType); private FRuneType: TRuneType; function GetRarity: integer; function GetColor: integer; public property RuneType: TRuneType read FRuneType write FRuneType; property Rarity: integer read GetRarity; property Color: TColor read GetColor; end; constructor TRune.Create(RuneType: TRuneType); begin inherited Create; FRuneType := RuneType; end; function TRune.GetRarity: integer; begin Result := RuneRarities[ord(RuneType)]; end; function TRune.GetColor: TColor; begin Result := RuneColors[ord(RuneType)]; end; Ah, seh gerade dass dir die Performance so wichtig ist. Dann könnte man das auch so machen:
Delphi-Quellcode:
const RuneRarities: array[0..2] of integer = [100, 200, 300];
RuneColors: array[0..2] of TColor = [clGrey, clTeal, clRed]; // Da bin ich mir mit der Syntax nicht ganz sicher type TRune = class constructor Create(ARuneType: TRuneType); private FRuneType: TRuneType; FRarity: integer; FColor: TColor; procedure SetRuneType(Value: TRuneType); procedure Recalculate; public property RuneType: TRuneType read FRuneType write SetRuneType; property Rarity: integer read FRarity; property Color: TColor read FColor; end; constructor TRune.Create(ARuneType: TRuneType); begin inherited Create; RuneType := ARuneType; // Ruft den Setter auf zum Initialisieren; end; procedure TRune.Recalculate; begin FRarity := RuneRarities[ord(RuneType)]; FColor := RuneColors[ord(RuneType)]; end; procedure TRune.SetRuneType(Value: TRuneType); begin if Value <> RuneType then begin FRuneType := Value; Recalculate; // Alles neu berechnen end; end; |
Re: Klasse mit Konstanten ?
Zitat:
Delphi-Quellcode:
musst du halt nur für jede klasse machen, ich weiss ja nicht ob es das so bringt.
type TRune = class
function GetRarity : Integer; virtual; abstract; end; type TRune1 = class(TRune) function GetRarity : Integer; override; end; type TRune2 = class(TRune) function GetRarity : Integer; override; end; function TRune1.GetRarity : Integer; begin Result := 300; end; function TRune2.GetRarity : Integer; begin Result := 400; end; p.s.: warum gibt es nicht sowas wie
Delphi-Quellcode:
, das wäre doch mal praktisch :D
property Value: Integer read 1234;
|
Re: Klasse mit Konstanten ?
@N General:
Die ganzen Mutmassungen über Klassen, Vererbung, u.s.w. ist alles Quark. Du musst ganz zurück an den Anfang und erklären was du überhaupt programmieren möchtest. Irgendwie geht es um Runen; das sind wohl irgendwelche Spielsteine. Welche Eigenschaften soll eine Rune haben ? (Farbe, Wert, X/y-Position, ...) Welche Eigenschaften dürfen im Laufe des Spiels ihren Wert ändern ? Wieviele Runen sollen erzeugt werden ? Gibt es Regeln zur Erzeugung der Runen (z.B. 20 rote, 20 grüne & 20 blaue) Was soll mit den Runen passieren ? (laden aus Datei, anzeigen, ...) Du könntest dich ausserdem über Class Factory oder Builder informieren; die wirst du wahrscheinlich gut gebrauchen können. |
Re: Klasse mit Konstanten ?
Also ich mache eine Art Rollenspiel in dem es die Aufgabe ist alle Runen zu finden (Gotta Catch 'em all :mrgreen:) Die Rarity Eigenschaft beschreibt wie selten eine Rune gedroppt wird. Also ne Rune mit Rarity von hätte ne Dropchance von 30%. eine Rune mit Rarity 1 hätte ne Chance von 0,1% usw.
Die Farbe ist halt ein Zeichen für die Seltenheit. Also z.b Häufige = Grün Seltene = Orange Sehr Selten = Rot Außerdem hat jede Rune nachher eine Besondere Eigenschaft. Die Eigenschaft ist wahrscheinlich ne eigene Klasse, z.B TProperty. Es soll etwa min 100 verschiedene Runen geben. So etwa könnte dann die Klassen aussehen von einer Rune.
Delphi-Quellcode:
Alles war jetzt hier nur Beispielhaft dargestellt.
type
Rune = class Color : TColor; Rarity : Integer; Property : TProperty; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:05 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz