AGB  ·  Datenschutz  ·  Impressum  







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

Ideen zur Schach KI

Ein Thema von Cicaro · begonnen am 12. Apr 2005 · letzter Beitrag vom 25. Mai 2005
Antwort Antwort
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#1

Re: Ideen zur Schach KI

  Alt 25. Apr 2005, 17:57
hi

hier ist eine vorläufige version meiner eröffnungsdb...is aber auf keinen fall eine entgültige version

in TZug sollen die züge drinstehen
zb e2e4, e7e5, c5d4 o.ä.

Delphi-Quellcode:
type
  TZug = String[4];
  TEroeffnungsDB = class (TObject)
  private
    FConn: TADOConnection;
    FQuery: TADOQuery;
    FDBName: String; //AusgangsDB
    FTable: String;
    FZugID: Integer;
    function Init(DBName, User, Passwd: String):Boolean; //DB laden
    function UnInit:Boolean; //Daten speichern
  published
    constructor Create;
    destructor Destroy;
    function SetNeuenZug(Neu: TZug):Integer;//Zug setzen und Elemente löschen
    function GetNeuenZug:TZug; //Besten Zug raussuchen
    property Tabelle: String read FTable write FTable;
  end;

const
  STD_TEMP_DB = 'Temp_DB';

implementation

constructor TEroeffnungsDB.Create;
begin
  inherited Create;
  FConn := TADOConnection.Create(FConn);
  FQuery:=TADOQuery.Create(FQuery);
  FQuery.Connection:=FConn;
end;

destructor TEroeffnungsDB.Destroy;
begin
  FConn.Free;
  FQuery.Free;
  inherited Destroy;
end;

function TEroeffnungsDB.Init(DBName, User, Passwd: String):Boolean;
begin
  try
    //in Temp-DB ablegen
    FDBName:=ExtractFileDir(DBName)+STD_TEMP_DB+ExtractFileExt(DBName);
    CopyFile(PAnsiChar(DBName),PAnsiChar(FDBName),False);
    //öffnen
    FConn.Provider:='MSDAIPP.DSO';
    FConn.DefaultDatabase:=FDBName;
    FConn.Open(User, Passwd);
    Result:=True;
  except
    Result:=False;
  end;
end;

function TEroeffnungsDB.UnInit:Boolean;
begin
  try
    //schliessen
    FConn.Close;
    //Temp-DB löschen
    DeleteFile(FDBName);
    Result:=True;
  except
    Result:=False;
  end;
end;

function TEroeffnungsDB.SetNeuenZug(Neu: TZug):Integer;
begin
  //irrelevante Züge löschen
  FQuery.SQL.Clear;
  FQuery.SQL.Add('DELETE FROM :table WHERE (Zugid=:zugid) AND (zug<>:zug)');
  FQuery.Parameters.ParamValues['table']:=FTable;
  FQuery.Parameters.ParamValues['zugid']:=FZugID;
  FQuery.Parameters.ParamValues['zug']:=Neu;
  FQuery.ExecSQL;
  repeat
    FQuery.SQL.Clear;
    FQuery.SQL.Add('DELETE FROM :table WHERE NOT parentid IN ( SELECT id FROM :table)');
    FQuery.Parameters.ParamValues['table']:=FTable;
    FQuery.ExecSQL;
  until FQuery.RowsAffected=0;
  FQuery.ClearFields;
  inc(FZugID);
end;

function TEroeffnungsDB.GetNeuenZug:TZug;
begin
  //Neuen Zug holen
  FQuery.SQL.Clear;
  FQuery.SQL.Add('SELECT Zug FROM '+FTable+' ORDER BY ZugID, Bewertung');
  FQuery.Open;
  Result:=FQuery.Fields.FieldByName('Zug').AsString;
  FQuery.ClearFields;
  SetNeuenZug(Result);
end;
»Unlösbare Probleme sind in der Regel schwierig...«
  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 20:22 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