Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.12.2011, 20:43   #1
Valtor
Новичок
Джуниор
 
Регистрация: 20.12.2011
Сообщений: 1
По умолчанию Пролог "крестики-нолики"

Добрый день. Есть програма реализующяя игру в крестики нолики.
Собственно код:
database
z(integer,integer,symbol)
Predicates
predicates kartinka
hod(integer,symbol,symbol)
blok(symbol,symbol)
chem(integer,symbol)
naob(symbol,symbol)
goal
write("KTO XODUT IIEPBblM? (1 - 4EJlOBEK, 0 - KOMII) "),
readint(Igrok),write("4EM? (1 - X, 0 - O) "),
readint(N),chem(N,I1),naob(I1,I2),h od(Igrok,I1,I2),!,
nl,nl; write("IIPABUJlA HAPyIIIEHbl."),nl.
clauses
z(1,1,"-"). z(1,2,"-"). z(1,3,"-"). z(2,1,"-"). z(2,2,"-").
z(2,3,"-"). z(3,1,"-"). z(3,2,"-"). z(3,3,"-").
chem(1,x). chem(0,o). naob(x,o). naob(o,x).
hod(0,S,_):- blok(S,S),!,kartinka,write("KOMII BblUrPAJl!").
hod(0,S,C):- blok(S,C),!,kartinka,hod(1,C,S).
hod(0,S,C):- retract(z(2,2,"-")),!,assert(z(2,2,S)),
kartinka,hod(1,C,S).
hod(0,S,C):- z(R,St,"-"), (R+St) mod 2=0,retract(z(R,St,"-")),!,
assert(z(R,St,S)),kartinka,hod(1,C, S).
hod(0,S,C):- retract(z(R,St,"-")),!,assert(z(R,St,S)),
kartinka,hod(1,C,S).
hod(1,C,S):- z(_,_,"-"),write("XODU:","CTPOKA (ot 1 do 3) - "),
readint(R),R>0,R<4,write("CTOJlb (ot 1 do 3) - "),
readint(St),St>0,St<4,retract(z(R,S t,"-")),!,
assert(z(R,St,C)),hod(0,S,C).
hod(_,_,_):- not(z(_,_,"-")),nl,write("HET IIObEDUTEJi9l!").
blok(S,C):- z(N1,St,C),z(N2,St,C),N1<>N2,
retract(z(N3,St,"-")),!,assert(z(N3,St,S));
z(R,N1,C),z(R,N2,C),N1<>N2,retract( z(R,N3,"-")),!,
assert(z(R,N3,S));
z(I,I1,C),I=I1,z(J,J1,C),J=J1,I<>J, z(K,K1,"-"),K=K1,
retract(z(K,K1,"-")),!,assert(z(K,K1,S));
z(I,J,C),I+J=4,z(N,K,C),N<>I,N+K=4, z(M,L,"-"),M+L=4,
retract(z(M,L,"-")),!,assert(z(M,L,S)).
kartinka:- z(1,1,S1),z(1,2,S2),z(1,3,S3),z(2,1 ,S4),z(2,2,S5),
z(2,3,S6),z(3,1,S7),z(3,2,S8),z(3,3 ,S9),!,
write("XODUT KOMII."),nl,nl,
writef("%|%|% %|%|% %|%|%",
S1,S2,S3,S4,S5,S6,S7,S8,S9),nl,nl.
Может ктонибуть помоч разобраться в принцыпе работы програмы.
Valtor вне форума Ответить с цитированием
Старый 21.12.2011, 18:58   #2
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

могу помочь, а что конкретно не понятно?
rrrFer вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" aleksei78 Microsoft Office Excel 13 25.08.2009 12:04
Подскажите пожалуйста. "турбо-Пролог" Dentin Помощь студентам 1 30.05.2009 15:34
помогите с курсовой "Крестики нолики" Prikol Помощь студентам 1 18.01.2009 18:50
"Поиск оптимального пути движения снегоочистительных машин с учетом приоритета дорог" Пролог Kvax Помощь студентам 4 21.12.2008 22:18
Создание игры "Крестики-нолики" Cubar Помощь студентам 9 22.01.2008 23:07