Forum: Sonstige Fragen zu Delphi
Delphi
by negaH,
29. Jun 2004
@StefanDP:
Ich habe mal deinen Source umgestellt:
function TFourInARow.Gewonnen(Spieler: Cardinal): Boolean;
function IstFeld(C, R: Cardinal; Spieler: Cardinal): Boolean;
begin
Forum: Sonstige Fragen zu Delphi
Delphi
by negaH,
29. Jun 2004
Es gäbe noch eine effizientere Lösung:
type
TPlayer = -1..+1;
PGamePos = ^TGamePos;
TGamePos = packed record
Stone: Integer;
Link: array of PGamePos;
Forum: Sonstige Fragen zu Delphi
Delphi
by negaH,
29. Jun 2004
Und da du die Variable "gewonnen := true" von einem Test zum nächsten Test erneut setzt, kann man mit deinem Code nur gewinnen wenn in der letzten Diagonalen 4 Steine hat. Doll dat.
Schau dir noch mal meine obigen Source ganz genau an, und vergleiche mal den Assembler-Code den der Compiler erzeugt. Kurzer PASCAL Code muß nicht immer auch effizienteren Machinencode bedeuten.
Zb. sucht deine...
Forum: Sonstige Fragen zu Delphi
Delphi
by negaH,
29. Jun 2004
Hi Luckie,
mir fallen zwei Lösungen ein die wesentlich performanter als dein Ansatz sein müssen.
1.) wärend des Eintragens eines Zuges eines Spielers, musst du ja in die richtige Spalte/Zeile einen Spielerstein ins Game eintragen. Exakt in diesem Moment, also BEIM Eintragen eines Steines ins Brett (egal ob Spielerzug oder ein Machineller Zug) überprüfst du ob dieser Zug zum 4 gewinnt führt....