wir haben momentan in der Schule die Aufgabe Schiffe versenken zu kontrollieren.
Ich habe mir eine Prozedur angelegt, die sicherstellt, dass kein Schiff über den Rand gesetzt werden kann, oder man die Schiffe nicht über einander setzen kann.
Allerdings ist es, als würde Lazarus die Prozedur einfach überspringen >.<.
Ich geb euch mal den Quelltext:
Code: Alles auswählen
procedure kontrolle;
begin
schiff[index].x:=form1.feld.col;
schiff[index].y:=form1.feld.row;
schiff[index].laenge:=index+1;
darfsetzen := true;
if schiff[index].ausrichtung = true then begin
for i := form1.feld.col to schiff[index].laenge do begin
if (form1.Feld.cells[form1.feld.row,form1.feld.col]<>'') then
darfsetzen := false;
end;
end;
if schiff[index].ausrichtung = false then begin
for i := form1.feld.row to schiff[index].laenge do begin
if (form1.Feld.cells[form1.feld.row,form1.feld.col]<>'') then
darfsetzen := false;
end;
end;
if
((schiff[index].x+schiff[index].laenge >= form1.Feld.colcount)
or
(schiff[index].y+schiff[index].laenge >= form1.feld.rowcount)) then
darfsetzen := false;
if
((schiff[index].x+schiff[index].laenge < form1.Feld.colcount)
or
(schiff[index].y+schiff[index].laenge <form1.feld.rowcount)) then
darfsetzen := true;
if darfsetzen = false then
showmessage('An dieser Position kannst du dein Schiff nicht setzen! Setze es um.');
end;