Разработка программы для игры в морской бой с игровым полем 10х10 позиций, страница 4

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),