kill(integer,integer,type) % проверка возможной гибели корабля
% противника
min(integer,integer,integer) % поиск минимума
max(integer,integer,integer) % поиск максимума
myprint % вывод нашего поля
mysim(integer,char) % какой символ выводить?
mybuild(integer) % заполнение нашего поля
mybuild1
mybuild_empty1(integer) % заполнение пустыми клетками
mybuild_empty2(integer,integer)
myadd_one(integer,integer) % добавление однопалубного корабля
myadd_two(integer,integer,integer) % добавление двухпалубного корабля
myadd_three(integer,integer,integer)% добавление трехпалубного корабля
myadd_four(integer,integer,integer) % добавление четырехпалубного корабля
mychange1(list,list,integer) % изменение состояний клеток
mychange(integer,integer,type)
mycmp(integer,integer,type) % сравнение с заданным значением
myhod % наш ход
hod_my(integer,integer)
mykill % возможная смерть нашего корабля
win % игра
axis % вывод координатной сетки
del1 % очистка баз данных
del2
start % первоначальный запуск
menu(integer) % меню
rand(integer,integer) % генерация случайного
DATABASE - pole
kl(kletka)
pl(kletka)
DATABASE - mypole
mykl(kletka)
CLAUSES
% заполнение поля противника
build:- build_empty1(0),
random(2,A),add_four(A),
random(2,B),add_three(B),random(2,C),add_three(C),
random(2,D),add_two(D),random(2,E),add_two(E),random(2,F),add_two(F),
add_one,add_one,add_one,add_one,add_empty1(0).
% заполнение пустого поля
build_empty1(10):-!.
build_empty1(Y):-build_empty2(0,Y),YY=Y+1,build_empty1(YY).
build_empty2(10,_):-!.
build_empty2(X,Y):-assert(kl(kletka(pole(X,Y),10)),pole),XX=X+1,build_empty2(XX,Y).
% добавление корабля
add_one:-random(10,A),random(10,B),firstrand(A,B,1,0,X,Y),
YA=Y+1,YB=Y-1,XA=X-1,XB=X+1,
change(X,Y,-1),change(X,YA,0),change(X,YB,0),
change(XA,Y,0),change(XA,YA,0),change(XA,YB,0),
change(XB,Y,0),change(XB,YA,0),change(XB,YB,0).
add_two(0):-random(9,A),random(10,B),firstrand(A,B,2,0,X,Y),
XX=X+1,YA=Y+1,YB=Y-1,XA=X-1,XB=X+2,
change(X,Y,-2),change(X,YA,0),change(X,YB,0),
change(XX,Y,-2),change(XX,YA,0),change(XX,YB,0),
change(XA,Y,0),change(XA,YA,0),change(XA,YB,0),
change(XB,Y,0),change(XB,YA,0),change(XB,YB,0).
add_two(1):-random(10,A),random(9,B),firstrand(A,B,2,1,X,Y),
YY=Y+1,YA=Y+2,YB=Y-1,XA=X-1,XB=X+1,
change(X,Y,-2),change(XA,Y,0),change(XB,YB,0),
change(X,YY,-2),change(XA,YY,0),change(XB,YY,0),
change(X,YA,0),change(XA,YA,0),change(XB,YA,0),
change(X,YB,0),change(XA,YB,0),change(XB,YB,0).
add_three(0):-random(8,A),random(10,B),firstrand(A,B,3,0,X,Y),
XX=X+1,XXX=X+2,YA=Y+1,YB=Y-1,XA=X-1,XB=X+3,
change(X,Y,-3),change(X,YA,0),change(X,YB,0),
change(XX,Y,-3),change(XX,YA,0),change(XX,YB,0),
change(XXX,Y,-3),change(XXX,YA,0),change(XXX,YB,0),
change(XA,Y,0),change(XA,YA,0),change(XA,YB,0),
change(XB,Y,0),change(XB,YA,0),change(XB,YB,0).
add_three(1):-random(10,A),random(8,B),firstrand(A,B,3,1,X,Y),
YY=Y+1,YYY=Y+2,YA=Y+3,YB=Y-1,XA=X-1,XB=X+1,
change(X,Y,-3),change(XA,Y,0),change(XB,Y,0),
change(X,YY,-3),change(XA,YY,0),change(XB,YY,0),
change(X,YYY,-3),change(XA,YYY,0),change(XB,YYY,0),
change(X,YA,0),change(XA,YA,0),change(XB,YA,0),
change(X,YB,0),change(XA,YB,0),change(XB,YB,0).
% 4-палубный размещаем первым - проверок не надо
add_four(0):-random(7,X),random(10,Y),
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.