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
 
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
 


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 13:49 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