![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
||||
|
||||
![]() Народ как реализовать программу которая показала-бы
вариант обхода конём шахматной доски????????????????????????????????????????? |
#2
|
||||
|
||||
![]() Ну я вижу это так:
1. Создаем массив описывающий щахматную доску: Код:
Var Desk: Array[0..7,0..7] of Integer; Заполняем массив Desk нулями. 2. Создаем массив из 8 элементов описывающих возможные ходы относительно текущей позиции на шахматной доске: Код:
Const MoveDir: Array[1..8] of TPoint = ((X:2;Y:1),(X:1;Y:2),(X:-1;Y:2),(X:-2;Y:1),(X:-2;Y:-1),(X:-1;Y:-2),(X:1;Y:-2),(X:2;Y:-1)); Это конечно очень куцее описание, но я думаю немножко поможет. Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#3
|
||||
|
||||
![]() ![]() |
#4
|
||||
|
||||
![]() Собственно вот рабочий вариант, но он заполняет не всю доску:
Код:
Const MoveDir: Array[1..8] of TPoint = ((X:2;Y:1),(X:1;Y:2),(X:-1;Y:2),(X:-2;Y:1),(X:-2;Y:-1),(X:-1;Y:-2),(X:1;Y:-2),(X:2;Y:-1)); Var Row,Col,Move: Integer; i: Integer; begin Move := 0; Row := 0; Col := 0; while True do begin Inc(Move); for i := 1 to 8 do begin if (Col + MoveDir[i].X in [0..7]) and (Row + MoveDir[i].Y in [0..7]) then if Desk.Cells[Col + MoveDir[i].X, Row + MoveDir[i].Y] = '' then begin Inc(Col, MoveDir[i].X); Inc(Row, MoveDir[i].Y); Break; end; end; if Desk.Cells[Col, Row] <> '' then Exit; Desk.Cells[Col, Row] := IntToStr(Move) end; end; Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#5
|
||||
|
||||
![]() Здесь я для наглядности в StringGrid рисую.
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#6
|
||||
|
||||
![]() У меня компилятор ругается(благим матом=)) на метод "Cells"!!! чё делать
|