Форум: "Потрепаться";
Текущий архив: 2002.01.24;
Скачать: [xml.tar.bz2];
ВнизЛинии Найти похожие ветки
← →
anod (2001-11-17 20:00) [14]Подскжите как учесть нажатие на клетку, в которую нельзя ходить.
В описании Медноногова, сказано, что если ni>nk,то ход не возможен,
тогда как определить nk (там не сказанно)
procedure TForm1.Path(nni,nnj,kki,kkj:word);{ввожу начальные и конечные координаты}
var i,j,x,y,x1,y1,min:word; ni,nk:word; rp:array [1..4,1..4] of word;
begin
x:=nni; y:=nnj;
ni:=0;{счётчик итерaций}
nk:=16;{мaксимaльно возможное число итерaций}
for i:= 1 to 4 do
for j:= 1 to 4 do
if Mpole^[i,j].val=0 then rp[i,j]:=254 else rp[i,j]:=255;
rp[x,y]:=253;
rp[kki,kkj]:=0;
While ni<>nk do
begin
for i:= 1 to 4 do
for j:= 1 to 4 do
if rp[i,j]=ni then
begin
if i<4 then if rp[i+1,j]=254 then rp[i+1,j]:=Ni+1;
if i>1 then if rp[i-1,j]=254 then rp[i-1,j]:=Ni+1;
if j<4 then if rp[i,j+1]=254 then rp[i,j+1]:=Ni+1;
if j>1 then if rp[i,j-1]=254 then rp[i,j-1]:=Ni+1;
end;
Inc(Ni);
end;
repeat
if x<4 then
begin
min:=rp[x+1,y];
x1:=x+1; y1:=y;
end;
if x>1 then if rp[x-1,y]<min then
begin
min:=rp[x-1,y];
x1:=x-1; y1:=y;
end;
if y<4 then if rp[x,y+1]<min then
begin
min:=rp[x,y+1];
x1:=x; y1:=y+1;
end;
if y>1 then if rp[x,y-1]<min then
begin
min:=rp[x,y-1];
x1:=x; y1:=y-1;
end;
Hod(x1,x2);
X:=X1; Y:=Y1;
until rp[x1,y1]=0;
SecondClick(x1,y1);
end;
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2002.01.24;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.006 c