Registriert seit: 20. Feb 2015
22 Beiträge
|
AW: Minesweeper
26. Mär 2015, 18:11
Ich habs mal rekursiv versucht und hab mal den Vorschlag von Mavarik umgeschrieben.
Jetzt bekomme ich beim Anklicken von Panels, die keine benachbarte Mine haben, eine Exception der Klasse EStackOverflow
Delphi-Quellcode:
procedure TForm1.CannonFire(var A,B,m:integer; Sender: TObject);
var h,j:integer;
begin
Panel:=TPanel(Sender);
A:=StrToInt(Copy(Panel.Name, 3,2));
B:=StrToInt(Copy(Panel.Name, 6,2));
if IntA[A,B]<>9 then
begin
m:=IntA[A,B];
if IntA[A,B]=0 then
FindeLeer(v,w);
end;
if IntA[A,B]=9 then
begin
ShowMessage('Du hast Verloren!');
close;
end;
end;
Procedure TForm1.FindeLeer(v,w:integer);
begin
if (v < 0) or (w < 0) or (v > 14) or (w > 14) then
Exit;
if (IntA[v,w] = 0) then
begin
PanelA[v,w].Caption:=IntToStr(IntA[v,w]);
FindeLeer(v+1,w);
FindeLeer(v-1,w);
FindeLeer(v,w+1);
FindeLeer(v,w-1);
end;
end;
Geändert von saii (26. Mär 2015 um 18:26 Uhr)
|
|
Zitat
|