Крестики нолики для 2 игроков - Prolog
Формулировка задачи:
Помогите переделать код, чтобы было 2 игрока, а не игрок и компьютер.
Мною это непостижимо...
Решение задачи: «Крестики нолики для 2 игроков»
textual
Листинг программы
database db(integer,integer,symbol) Predicates predicates new pole nondeterm go(symbol,symbol) goal retractall(db(_,_,_)),new,go("X","O"),!,nl. clauses new:-assert(db(1,1,"-")),assert(db(1,2,"-")),assert(db(1,3,"-")), assert(db(2,1,"-")),assert(db(2,2,"-")),assert(db(2,3,"-")), assert(db(3,1,"-")),assert(db(3,2,"-")),assert(db(3,3,"-")). db(1,1,"-"). db(1,2,"-"). db(1,3,"-"). db(2,1,"-").db(2,2,"-"). db(2,3,"-"). db(3,1,"-"). db(3,2,"-"). db(3,3,"-"). go(_,_):- db(X,1,Gamer),Gamer<>"-",db(X,2,Gamer),db(X,3,Gamer),write(Gamer," win!\n"),!. go(_,_):- db(1,X,Gamer),Gamer<>"-",db(2,X,Gamer),db(3,X,Gamer),write(Gamer," win!\n"),!. go(_,_):- db(1,1,Gamer),Gamer<>"-",db(2,2,Gamer),db(3,3,Gamer),write(Gamer," win!\n"),!. go(_,_):- db(1,3,Gamer),Gamer<>"-",db(2,2,Gamer),db(3,1,Gamer),write(Gamer," win!\n"),!. go(Gamer1,Gamer2):-write("Gamer ",Gamer1,":\n","line (ot 1 do 3): "), readint(R),R>0,R<4,write("column (ot 1 do 3): "), readint(St),St>0,St<4,db(R,St,"-"),!,retract(db(R,St,"-")), assert(db(R,St,Gamer1)),pole,go(Gamer2,Gamer1). go(Gamer1,Gamer2):-write("Error!\n"),go(Gamer1,Gamer2). pole:- db(1,1,S1),db(1,2,S2),db(1,3,S3),db(2,1,S4),db(2,2,S5), db(2,3,S6),db(3,1,S7),db(3,2,S8),db(3,3,S9),!,nl,nl, write(S1,S2,S3),nl,write(S4,S5,S6),nl,write(S7,S8,S9),nl,nl.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д