В шашечном эндшпиле остались белая дамка и две черных пешки, позиции которых известны. Ход белых. Сможет ли дамка срубить одну или сразу обе пешки?
Суть: если пешка стоит не у края и выполняется условие : координаты дамки x1,y1, координаты пешки x2,y2, координаты второй пешки x3, y2
Условие расположения на одной диагонали: abs (x1 – x2) = abs (y1 – y2)
Входные данные: координаты дамки и пешек
Выходные: Доска - матрица 8х8, пустые клетки – «.», дамка – «D», пешки – «P». Количество бьющихся пешек
program z2;
var i,j,s:integer;
x:array [1..3] of integer; y:array [1..3] of integer; d:array [1..8,1..8] of char; f,f1:text;
begin
assign(f,'i2.txt'); reset(f);
assign(f1,'o2.txt');rewrite(f1);
for i:=1 to 3 do
read(f,x[i],y[i]);
{заполнение и вывод доски}
for i:=1 to 8 do
for j:=1 to 8 do
if (i=x[1]) and (j=y[1]) then d[i,j]:='D'
else if ((i=x[2]) and (j=y[2])or (i=x[3]) and (j=y[3]))then d[i,j]:='P'
else d[i,j]:='.';
for i:=1 to 8 do begin
for j:=1 to 8 do
write(f1,d[i,j],' ');writeln(f1);end;
{проверка условия на бой пешек}
if (abs(x[1]-x[2])=abs(y[1]-y[2])) and (x[2]<>1) and (x[2]<>8) and (y[2]<>1) and (y[2]<>8) then s:=s+1;
if (abs(x[1]-x[3])=abs(y[1]-y[3])) and (x[3]<>1) and (x[3]<>8) and (y[3]<>1) and (y[3]<>8) then s:=s+1;
if (abs(x[2]-x[3])=abs(y[2]-y[3])) and (abs(x[2]-x[3])=1) or (abs(y[2]-y[3])=1) then s:=0;
writeln(f1,s);
close(f); close(f1);
end.
|