Крестики нолики для 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.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.733 из 5
Похожие ответы