AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

ClientDataBase Frage

Ein Thema von xRaysen · begonnen am 2. Dez 2014 · letzter Beitrag vom 6. Dez 2014
Antwort Antwort
xRaysen

Registriert seit: 2. Dez 2014
7 Beiträge
 
#1

ClientDataBase Frage

  Alt 2. Dez 2014, 09:07
Delphi-Version: 2007
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.
Miniaturansicht angehängter Grafiken
problem.jpg  
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: ClientDataBase Frage

  Alt 2. Dez 2014, 09:10
Das ist nicht die erste Reihe, sondern der aktuelle Datensatz. Du kannst aber den Datensatzzeiger mit Methoden wie Next, Prior, First und Last positionieren.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
xRaysen

Registriert seit: 2. Dez 2014
7 Beiträge
 
#3

AW: ClientDataBase Frage

  Alt 2. Dez 2014, 10:30
Könntest du mir noch sagen wie der Befehl dann aussehen müsste?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: ClientDataBase Frage

  Alt 2. Dez 2014, 10:39
Teste doch mal das hier:
Delphi-Quellcode:
DeinDataset.First;
while not DeinDataset.EOF do
  begin
    ShowMessage(DeinDataset.Fields[0].AsString);
    DeinDataset.Next;
  end;
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.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
xRaysen

Registriert seit: 2. Dez 2014
7 Beiträge
 
#5

AW: ClientDataBase Frage

  Alt 2. Dez 2014, 11:29
Vielen Dank!!!
Funktioniert endlich.
  Mit Zitat antworten Zitat
xRaysen

Registriert seit: 2. Dez 2014
7 Beiträge
 
#6

AW: ClientDataBase Frage

  Alt 2. Dez 2014, 11:41
...

Geändert von xRaysen ( 2. Dez 2014 um 11:45 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: ClientDataBase Frage

  Alt 2. Dez 2014, 11:42
Was soll denn der Normalzustand sein?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#8

AW: ClientDataBase Frage

  Alt 2. Dez 2014, 12:46
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:
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;
Nun kann man zwei Kontrahenten erzeugen und gegenseitig einprügeln lassen
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;
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Fedral144

Registriert seit: 6. Dez 2014
1 Beiträge
 
#9

AW: ClientDataBase Frage

  Alt 6. Dez 2014, 11:37
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.
Decrease your exam stress by using our latest 1z0-053 and best quality Testking and fcc We provide with 100% pass guarantee along with www.pittstate.edu and Southern California University of Health Sciences
  Mit Zitat antworten Zitat
Antwort Antwort


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 06:59 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