tach leute,
ich habe ein problem, ich muss ein solitär spiel machen das die kleinst mögliche anzahl an zügen braucht um das feld der pinne auf einen pinn zu reduzieren.
ich habe bereits ein spielfeld konzipiert (tabelle) und dieses auch mit pinnen (also O's) gefüllt. danach habe ich die ersten zwei züge programiert, so dass der sich das leere feld quasi sucht.
hier das prog:
procedure TForm1.StartClick(Sender: TObject);
procedure fuellen;
var i,j,x,y: Integer;
begin
i:=0;
j:=0;
With StringGrid1 do begin
repeat begin
Cells[i,0]:='XXX';
Cells[0,i]:='XXX';
Cells[i,8]:='XXX';
Cells[8,i]:='XXX';
i:=i+1;
end;
until i>8;
repeat begin
if j<3 then begin
Cells[1,j]:='XXX';
Cells[2,j]:='XXX';
Cells[6,j]:='XXX';
Cells[7,j]:='XXX';
end;
if j>5 then begin
Cells[1,j]:='XXX';
Cells[2,j]:='XXX';
Cells[6,j]:='XXX';
Cells[7,j]:='XXX';
end;
j:=j+1;
end;
until j>8;
end;
x:=1;
y:=1;
With StringGrid1 do begin
repeat begin
repeat begin
If Cells[x,y]='' then begin
Cells[x,y]:=' 0';
y:=y+1;
end
else
y:=y+1;
end;
until (y=8);
y:=1;
x:=x+1;
end;
until (x=8);
Cells[4,4]:='';
end;
end;
begin
fuellen;
end;
procedure TForm1.BeendenClick(Sender: TObject);
begin
close;
end;
procedure TForm1.ZugButtonClick(Sender: TObject);
var x,y : integer;
begin
x:=5; y:=5;
repeat begin
With StringGrid1 do begin
if (Cells[x,y]=' 0') and (Cells[x-1,y]=' 0') and (Cells[x+1,y]='') then begin
Cells[x-1,y]:='';
Cells[x,y]:='';
Cells[x+1,y]:=' 0';
end
else begin
x:=x-1;
end
end; end
until x=1;
x:=5; y:=y-1;
repeat begin
With StringGrid1 do begin
if (Cells[x,y]=' 0') and (Cells[x,y-1]=' 0') and (Cells[x,y+1]='') then begin
Cells[x,y-1]:='';
Cells[x,y]:='';
Cells[x,y+1]:=' 0';
end
else begin
x:=x-1;
end
end; end
until x=1;
end;
wenn jemand ne idee hat, nur her damit..
ich danke schonmal im vorraus
betoe45276 Gast |