Registriert seit: 21. Jun 2002
602 Beiträge
|
24. Feb 2003, 18:38
Um die Diskussion zu beginnen...
Was ich ändern würde:
- Freiheit für Kylix-Benutzer
!
Delphi-Quellcode:
{$IFDEF LINUX}
uses
SysUtils, Types, Classes, Variants, QTypes, QGraphics, QControls, QForms,
QDialogs, QStdCtrls, QExtCtrls;
{$ELSEIF WIN32}
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
{$IFEND}
// ...
{$IFDEF LINUX}
{$R *.xfm}
{$ELSEIF WIN32}
{$R *.dfm}
{$IFEND}
- Die if-Anweisungen bei der Feld-Überprüfung kannst du dir sparen:
Delphi-Quellcode:
b := false;
for i := 0 to 7 do {Feld-Test}
b := (b or Schachbrett[ReiheAktuell, i] or Schachbrett[i, SpalteAktuell]) or {senkrecht, waagrecht}
(((SpalteAktuell + abs(ReiheAktuell - i)) in [0..7]) and
(b or Schachbrett[i, SpalteAktuell + abs(ReiheAktuell - i)])) or {diagonal oben}
(((SpalteAktuell - abs(ReiheAktuell - i)) in [0..7]) and
(b or Schachbrett[i, SpalteAktuell - abs(ReiheAktuell - i)])); {diagonal unten}
- Für mein Gefüh schöner gewesen wäre eine rekursive Lösung, aber dann dürftest du deinen Code sowieso komplett umpkrempeln und diese iterative Lösung ist wahrscheinilich auch schneller, weil nicht ständig Variablen auf den Stack gedrückt oder wieder heruntergeholt werden müssen.
Soviel für meinen Teil...
d3g
-- Crucifixion?
-- Yes.
-- Good. Out of the door, line on the left, one cross each.
|
|
Zitat
|