Normal sollte in den Funktionen/Prozeduren der TForm1.BitBtOkClick-Prozedur, je nachdem, ob der Zug geht oder nicht, das ox(alte x-Koordinate) zu p (eingegebene x-Koordinate) oder andersrum umgewandeelt.
Also wenn der Zug geht: ox:=p
und wenn nicht: p:=ox
Das gleiche gilt für die oy(alte y-Koordinate) und y (eingegebene y-Koordinate).
Delphi-Quellcode:
procedure TForm1.BitBtOkClick(Sender: TObject); {Procedure, die alle Funktionen und Prozeduren vereinigt und ausführt}
begin
if CbSf.Text='Bauer1'
then begin
ox:=1; //alte x-Koordinate
oy:=2; //alte y-Koordinate
x:=Ed_X.Text; //Bestimmung von x aus einem Textfeld
y:=StrToInt(Ed_Y.Text); //Bestimmung von y aus einem Textfeld
xk(x); //wandelt x für Array um
istFarbeSchlagbar(ox,oy,p,y); //überprüft farbe zum schlagen
checkFarbe(ResultFarbe); //falls Farbe nicht in Ordnung, dann soll p auf ox und y auf oy zurückgesetzt werden, damit figur nicht berschoben wird
PruefungZug(ox,oy,p,y); //eigentliche Prüfung über Felder
xkoordinate(p); // folgende 4 Prozeduren verschieben nur Bild, abhängig von p und y
ykoordinate(y);
ImSB1.Left:=l;
ImSB1.Top:=t;
Kann es sein, dass in den Prozeduren (Reihenfolge ist sinnvoll gewählt) die Varibalen ox und oy, durch die Funktionen/Prozeduren gar nicht verändert werden.
Normal wird ja von oben nach unten alles nacheinander abgearbeitet. Also werden auch in die Funktionen/Prozeduren die aktuellen Werte der Variablen gegeben, dann die Funktion/Prozedur durchlaufen, die Variablen mit ihren Werten wieder ausgegeben/verändert. Danach folgt die nächste Prozedur usw. Also müsste PruefungZug die endgültigen p, y, ox und oy Werte festlegen und auch ox und oy für den nächsten Durchlauf der Prozedur TForm1.BitBtOkClick. Nur bleibt ox und und oy glaub ich immer gleich.
Normal läuft das aber doch wie oben beschrieben ab, oder?