AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Klasse mit Konstanten ?

Ein Thema von Neutral General · begonnen am 6. Sep 2005 · letzter Beitrag vom 9. Sep 2005
Antwort Antwort
Seite 2 von 5     12 34     Letzte » 
Benutzerbild von Speedmaster
Speedmaster

Registriert seit: 4. Mär 2005
Ort: Karlsruhe
535 Beiträge
 
Delphi 2005 Personal
 
#11

Re: Klasse mit Konstanten ?

  Alt 6. Sep 2005, 19:51
Zitat von Dax:
Mach dir statt der Konstante doch eine Klassenfunktion, die dir den Wert zurückgibt.. Geht auch.
Wenn ich das jetzt in einem 3D Programm mache, dann kann ich nur sagen: Performance := Goodbye;
Felix K.
Zitat:
Siehst du diesen Park da unten?
Jeden Tag lernen sich leute kennen und verlassen einander, und du hast dein ganzes Leben Zeit darin zu gehen!
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#12

Re: Klasse mit Konstanten ?

  Alt 6. Sep 2005, 19:53
Delphi-Quellcode:
type TRune = class
function GetRarity : Integer;
end;

type TRune1 = class(TRune)
end;
type TRune2 = class(TRune)
end;


function TRune.GetRarity : Integer;
begin
  if Classname = 'TRune1then Rarity := 300; // Ka ob die Eigenschaft jetzt Classname heißt..
  if Classname = 'TRune2then Rarity := 400;
  ...
end;
Würde das so etwa gehen ?
EDIT : Ich glaube das wäre echtes OOP o.O sowas hab ich ja noch nie gemacht

@Speedmaster : Ist aber zum Glück nur 2D
Michael
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#13

Re: Klasse mit Konstanten ?

  Alt 6. Sep 2005, 19:58
Zitat von Speedmaster:
Zitat von Dax:
Mach dir statt der Konstante doch eine Klassenfunktion, die dir den Wert zurückgibt.. Geht auch.
Wenn ich das jetzt in einem 3D Programm mache, dann kann ich nur sagen: Performance := Goodbye;
So ein Blödsinn. Non virtual class methods werden die gleiche Performance haben wie hässliche lose Funktionen. (virtuelle kosten dich, wenn überhaupt, einmal nachschlagen in der VMT)
Warum lernst du es nicht, einfach mal dein komischen Vorurteile zu überprüfen? (Ist ja nicht das erste Mal )

@NG
Autsch....
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#14

Re: Klasse mit Konstanten ?

  Alt 6. Sep 2005, 20:01


Zeigt mir mal nen Beispiel pls
Michael
  Mit Zitat antworten Zitat
Benutzerbild von Speedmaster
Speedmaster

Registriert seit: 4. Mär 2005
Ort: Karlsruhe
535 Beiträge
 
Delphi 2005 Personal
 
#15

Re: Klasse mit Konstanten ?

  Alt 6. Sep 2005, 20:01
Zitat von Neutral General:
Delphi-Quellcode:
type TRune = class
function GetRarity : Integer;
end;

type TRune1 = class(TRune)
end;
type TRune2 = class(TRune)
end;


function TRune.GetRarity : Integer;
begin
  if Classname = 'TRune1then Rarity := 300; // Ka ob die Eigenschaft jetzt Classname heißt..
  if Classname = 'TRune2then Rarity := 400;
  ...
end;
Würde das so etwa gehen ?
EDIT : Ich glaube das wäre echtes OOP o.O sowas hab ich ja noch nie gemacht

@Speedmaster : Ist aber zum Glück nur 2D
Selbst bei 2D kann darunter die Performance leiden( Theoretisch )! Ich frage mich warum du die Werte nicht in einem Konstanten Array abspeicherst, und einfach per Index Abrufst!?!?

@Robert_G: Wer sagt den das ich eine Funktion benutzen würde?
Felix K.
Zitat:
Siehst du diesen Park da unten?
Jeden Tag lernen sich leute kennen und verlassen einander, und du hast dein ganzes Leben Zeit darin zu gehen!
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#16

Re: Klasse mit Konstanten ?

  Alt 6. Sep 2005, 20:04
Auch ne Idee aber ich hab ehrlichgesagt keine Lust für jede Klasse nen Konstruktor zu basteln
Michael
  Mit Zitat antworten Zitat
tigerman33

Registriert seit: 30. Jul 2005
Ort: München
423 Beiträge
 
Delphi 2005 Professional
 
#17

Re: Klasse mit Konstanten ?

  Alt 7. Sep 2005, 10:32
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:
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;
//edit
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;
Christian
Der Computer hilft mir, Probleme zu lösen, die ich ohne Computer nicht hätte.
  Mit Zitat antworten Zitat
Benutzerbild von BlackJack
BlackJack

Registriert seit: 2. Jul 2005
Ort: Coesfeld
246 Beiträge
 
Delphi 2005 Personal
 
#18

Re: Klasse mit Konstanten ?

  Alt 7. Sep 2005, 14:03
Zitat von Neutral General:
Delphi-Quellcode:
type TRune = class
function GetRarity : Integer;
end;

type TRune1 = class(TRune)
end;
type TRune2 = class(TRune)
end;


function TRune.GetRarity : Integer;
begin
  if Classname = 'TRune1then Rarity := 300; // Ka ob die Eigenschaft jetzt Classname heißt..
  if Classname = 'TRune2then Rarity := 400;
  ...
end;
Würde das so etwa gehen ?
nein, wenn dann so:
Delphi-Quellcode:
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;
musst du halt nur für jede klasse machen, ich weiss ja nicht ob es das so bringt.

p.s.: warum gibt es nicht sowas wie property Value: Integer read 1234; , das wäre doch mal praktisch
See my shadow changing, stretching up and over me.
Soften this old armor. Hoping I can clear the way
By stepping through my shadow, coming out the other side.
Step into the shadow. Forty six and two are just ahead of me.
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#19

Re: Klasse mit Konstanten ?

  Alt 7. Sep 2005, 14:40
@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.
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#20

Re: Klasse mit Konstanten ?

  Alt 7. Sep 2005, 18:42
Also ich mache eine Art Rollenspiel in dem es die Aufgabe ist alle Runen zu finden (Gotta Catch 'em all ) 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:
type
Rune = class
Color : TColor;
Rarity : Integer;
Property : TProperty;
end;
Alles war jetzt hier nur Beispielhaft dargestellt.
Michael
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:00 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz