Pelzameise
Sachse
- Registriert
- Apr. 2008
- Beiträge
- 5.221
Guten Morgen,
Sinn meines Projektes ist es dass man auf einem Schachbrett immer nur dorthin klicken kann, wo der Springer hingehen darf. So soll man dann nacheinander alle Zellen anklicken. Mein Ansatz war, den satz des Pytagoras zu nehmen, man also nur dorthin darf wo:
Hoffe ihr könnt das nachvollziehen.
Soo dann hier mein Versuch:
Beim ersten Klick geht es, dann aber funktioniert es nicht mehr. Ich vermute also dass er nicht mehr in die zweite IF-Schleife rein kommt.
Hoffe ihr habt Ideen. Gruß
Sinn meines Projektes ist es dass man auf einem Schachbrett immer nur dorthin klicken kann, wo der Springer hingehen darf. So soll man dann nacheinander alle Zellen anklicken. Mein Ansatz war, den satz des Pytagoras zu nehmen, man also nur dorthin darf wo:
Code:
Die Wurzel aus
(xalt-xneu)^2 + (yalt-yneu)^2
gleich Wurzel 5 ist.
Soo dann hier mein Versuch:
Code:
unit uspielfeld;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Grids, Buttons;
type
Tfspielfeld = class(TForm)
tspielfeld: TStringGrid;
lthema: TLabel;
Memo1: TMemo;
BitBtn1: TBitBtn;
bausgeben: TButton;
b_loeschen: TButton;
procedure FormCreate(Sender: TObject);
procedure tspielfeldSelectCell(Sender: TObject; ACol, ARow: Integer;
var CanSelect: Boolean);
procedure bausgebenClick(Sender: TObject);
procedure b_loeschenClick(Sender: TObject);
private
{ Private-Deklarationen}
public
{ Public-Deklarationen}
end;
var
fspielfeld: Tfspielfeld;
spf : ARRAY[1..8,1..8]OF INTEGER;
zaehler : INTEGER;
x,y: ARRAY[1..64] OF INTEGER;
wurzel: REAL;
implementation
{$R *.DFM}
procedure Tfspielfeld.FormCreate(Sender: TObject);
VAR i : INTEGER;
begin
{Initialisierung}
zaehler:=0;
wurzel:=sqrt(5);
FOR i:=1 TO 8 DO
BEGIN
tspielfeld.cells[i,0]:=INTTOSTR(i);
tspielfeld.cells[0,i]:=INTTOSTR(i);
END;
end;
procedure Tfspielfeld.tspielfeldSelectCell(Sender: TObject; ACol,
ARow: Integer; var CanSelect: Boolean);
begin
IF zaehler=0 THEN BEGIN
//Bei Mausklick zaehler um 1 erhöhen
zaehler:=zaehler+1;
//in Tabellenzelle den aktuellen Zählwert eintragen
tspielfeld.Cells[acol,arow]:=IntToStr(zaehler);
//in Spielfeldkomponente eine 1 eintragen
spf[acol,arow]:=1;
x[1]:=TSpielfeld.Col+1;
y[1]:=TSpielfeld.Row+1;
END;
IF zaehler>0 THEN BEGIN
//Bei Mausklick zaehler um 1 erhöhen
zaehler:=zaehler+1;
x[zaehler]:=TSpielfeld.Col+1;
y[zaehler]:=TSpielfeld.Row+1;
IF wurzel = (sqrt(sqr(x[zaehler-1]-x[zaehler])+sqr(y[zaehler-1]-y[zaehler]))) THEN BEGIN
//in Tabellenzelle den aktuellen Zählwert eintragen
tspielfeld.Cells[acol,arow]:=IntToStr(zaehler);
//in Spielfeldkomponente eine 1 eintragen
spf[acol,arow]:=1;
END
ELSE zaehler:=zaehler-1;
END;
end;
Beim ersten Klick geht es, dann aber funktioniert es nicht mehr. Ich vermute also dass er nicht mehr in die zweite IF-Schleife rein kommt.
Hoffe ihr habt Ideen. Gruß