![]() |
Delphi-Version: 2007
ClientDataBase Frage
Liste der Anhänge anzeigen (Anzahl: 1)
Ich bräuchte dringen eure Hilfe.
Mein Problem ist, dass ich ein kleines 2D Spiel programmieren will und dabei gegen Monster kämpfe (Pokemon mäßig), dabei sollen Leben,Angriff,Verteidigung und Name aus einer ClientDataBase ausgelesen werden, jedoch finde ich nur Befehle bei denen ich die Werte aus der ersten Reihe auslesen kann. Könnte mir jemand sagen wie ich es nun schaffe auch aus den anderen Reihen Werte auszulesen? Bisher habe ich es mit FieldByName und FieldValues probiert. Im Anhang ist ein Bild, mit erster Reihe ist die Murloc Reihe gemeint. Ich bin noch ein Anfänger also bitte keine zu komplizierten Lösungen. :) |
AW: ClientDataBase Frage
Das ist nicht die erste Reihe, sondern der aktuelle Datensatz. Du kannst aber den Datensatzzeiger mit Methoden wie Next, Prior, First und Last positionieren.
|
AW: ClientDataBase Frage
Könntest du mir noch sagen wie der Befehl dann aussehen müsste?
|
AW: ClientDataBase Frage
Teste doch mal das hier:
Delphi-Quellcode:
DeinDataset must Du natürlich durch den richtigen Namen (ClientDataset1?) ersetzen. Wenn das klappt, bist Du die gesamte Datenmenge von vorn nach hinten durchlaufen und hast von jedem Datensatz den Wert des ersten Feldes ausgegeben. Andererseits hast Du doch einen DBNavigator auf dem Formular, mit dem geht das natürlich auch, wenn er korrekt mit dem Dataset (über eine Datasource) verbunden ist.
DeinDataset.First;
while not DeinDataset.EOF do begin ShowMessage(DeinDataset.Fields[0].AsString); DeinDataset.Next; end; |
AW: ClientDataBase Frage
Vielen Dank!!!
Funktioniert endlich. :-D |
AW: ClientDataBase Frage
...
|
AW: ClientDataBase Frage
Was soll denn der Normalzustand sein?
|
AW: ClientDataBase Frage
Gut, die Datenbank, kann man als Speicher benutzen, aber für das Spiel selber sollte man sich mindestens eine Klasse bauen, mit der man dann einfach arbeiten kann.
Zum Beispiel
Delphi-Quellcode:
Nun kann man zwei Kontrahenten erzeugen und gegenseitig einprügeln lassen
type
TEntity = class private FName: string; FLivePoints: Integer; FStrength: Integer; public constructor Create( const AName: string; ALivePoints, AStrength: Integer ); procedure Attack( AEntity: TEntity ); function IsAlive: Boolean; property Name: string read FName; property LivePoints: Integer read FLivePoints; property Strength: Integer read FStrength; end; { TEntity } procedure TEntity.Attack( AEntity: TEntity ); begin // Selber schlagen? if Self = AEntity then Exit; // Lebenspunkte und Stärke verändern sich im Kampf Self.FLivePoints := Self.FLivePoints - AEntity.FStrength div 2; Self.FStrength := Self.FStrength + AEntity.FStrength div 2; AEntity.FLivePoints := AEntity.FLivePoints - Self.FStrength; end; constructor TEntity.Create( const AName: string; ALivePoints, AStrength: Integer ); begin inherited Create; FName := AName; FLivePoints := ALivePoints; FStrength := AStrength; end; function TEntity.IsAlive: Boolean; begin Result := FLivePoints > 0; end;
Delphi-Quellcode:
procedure Fight;
var L1, L2, LSieger : TEntity; begin L1 := nil; L2 := nil; LSieger := nil; try // bereit machen L1 := TEntity.Create( 'Peter', 100, 5 ); L2 := TEntity.Create( 'Wolf', 50, 10 ); // prügeln bis zum Umfallen while L1.IsAlive and L2.IsAlive then begin case Random(2) of 0 : L1.Attack( L2 ); 1 : L2.Attack( L1 ); end; end; // Auswertung if L1.IsAlive then LSieger := L1 else LSieger := L2; if Assigned( LSieger ) then WriteLn( LSieger.Name, ' hat gewonnen!' ) else WriteLn( 'Das Match ging unentschieden aus!' ); finally L1.Free; L2.Free; end; end; |
AW: ClientDataBase Frage
DeinDataset must Du natürlich durch den richtigen Namen (ClientDataset1?) ersetzen. Wenn das klappt, bist Du die gesamte Datenmenge von vorn nach hinten durchlaufen und hast von jedem Datensatz den Wert des ersten Feldes ausgegeben. Andererseits hast Du doch einen DBNavigator auf dem Formular, mit dem geht das natürlich auch, wenn er korrekt mit dem Dataset (über eine Datasource) verbunden ist.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:22 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