Есть задача:
Вот то, что получилось на настоящий момент:Шахматную доску будем представлять символьной матрицей размера 8x8. Даны натуральные числа n, причём 1<=n<=8 и m, причём 1<=m<=8. Эти числа номера вертикали и горизонтали, определяющие местоположения коня. Соответствующий элемент матрицы надо положить равным символу К. Поля находящиеся под угрозой коня, надо положить равными символу *, а остальные - символу 0.
Код: Выделить всё
var
i,j:integer;
procedure TForm1.Button1Click(Sender: TObject);
begin
with StringGrid1 do begin
for i:=0 to 7 do
for j:=0 to 7 do
Cells[i,j]:='0';
i:=StrToInt(Edit1.Text)-1;
j:=StrToInt(Edit2.Text)-1;
if (i<2) then
Cells[i,j]:='K';
Cells[i+1,j+2]:='*';
Cells[i+2,j+1]:='*';
Cells[i+2,j-1]:='*';
Cells[i+1,j-2]:='*';
if (i>2) then
Cells[i,j]:='K';
Cells[i-1,j-2]:='*';
Cells[i-2,j-1]:='*';
Cells[i-2,j+1]:='*';
Cells[i-1,j+2]:='*';
if (j<2) then
Cells[i,j]:='K';
Cells[i-1,j-2]:='*';
Cells[i-2,j-1]:='*';
Cells[i+2,j-1]:='*';
Cells[i+1,j-2]:='*';
if (j>2) then
Cells[i,j]:='K';
Cells[i+1,j+2]:='*';
Cells[i+2,j+1]:='*';
Cells[i-2,j+1]:='*';
Cells[i-1,j+2]:='*';
end;
end;
1. Если i или j такое, что i-1, j-1, i-2, j-2 будут отрицательными, то в итоге будет ошибка и решаться не будет.
2. Координаты по j идут сверху вниз, а надо снизу вверх. Т.е. если мы пишем j=2, то это будет не вторая клетка снизу, а седьмая (или вторая сверху).
Помогите, пожалуйста, разобраться.