Вход/Регистрация
Prolog
вернуться

Неизвестно

Шрифт:

бл( _.._..БЛ.._, БЛ). % Белая ладья

чк( _.._.._..ЧК.._, ЧК). % Черный король

глуб( _.._.._.._..Глуб, Глуб).

восст_глуб( ЧХ..Б..Л..Ч..Г, ЧХ..Б..Л..Ч..0).

% Формируется копия позиции, глубина устанавливается в 0

% Некоторые отношения между клетками доски

сосед_чсл( N, N1) :- % Соседнее число "в пределах доски"

( N1 is N + 1;

N1 is N - 1 ),

внутри( N1).

внутри( N) :-

N > 0, N < 9.

сосед_диаг( X : Y, X1 : Y1) :-

% Соседние клетки по диагонали

сосед_чсл( X, X1 ), сосед_чсл( Y, Y1).

сосед_верт( X : Y, X : Y1) :-

% Соседние клетки по вертикали

сосед_чсл( Y, Y1).

сосед_гор( X : Y, X1 : Y) :-

% Соседние клетки по горизонтали

сосед_чсл( X, X1).

сосед( S, S1) :-

% Соседние клетки (предпочтение - диагонали)

сосед_диаг( S, S1);

сосед_гор( S, S1);

сосед_верт( S, S1).

конец_игры( Поз) :-

мат( Поз).

% Предикаты, ограничивающие ходы

% Специализированное генераторы ходов вида:

% ход( Ограничение, Поз, Ход, Поз1)

ход( глубина < Макс, Поз, Ход, Поз1) :-

глуб( Поз, Г),

Г < Макс, !.

ход( глубина = Г, Поз, Ход, Поз1) :-

глуб( Поз, Г), !.

ход( сначала диаг, б..Б..Л..Ч..Г, Б-Б1,

ч..Б1..Л..Ч..Г1) :-

Г1 is Г + l,

сосед( Б, Б1),

% "сосед" порождает сначала диагональные ходы

not сосед( Б1, Ч), % Не попасть под шах

Б1 \== Л. % Не столкнуться с ладьей

ход( ход ладьей, б..Б..Лх : Лу..Ч..Г, Лх : Лу-Л,

ч..Б..Л..Ч..Г1) :-

Г1 is Г + 1,

коорд( I), % Число между 1 и 8

( Л = Лх : I; Л = I : Лу),

% По горизонтали или по вертикали

Л \== Лх : Лу, % Обязательно двигаться

not мешает( Лх : Лу, Б, Л). % Мешает белый король

ход( ход_шах, Поз, Л-Лх : Лу, Поз1) :-

бл( Поз, Л),

  • Читать дальше
  • 1
  • ...
  • 187
  • 188
  • 189
  • 190
  • 191
  • 192
  • 193
  • 194
  • 195
  • 196
  • 197
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: