На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
  
> Крестики нолики на пролог
    Всем привет,

    может кто подскажет где у меня ошибка

    ExpandedWrap disabled
      Игра "Крестики-нолики"
      Дана NxM игральная доска. Найти как "нолики" двумя ходами выигрывают против "крестиков"


    ExpandedWrap disabled
      Predicates
      z(integer, integer, symbol)
      predicates pictre
      move(integer, symbol, symbol)
      block(symbol, symbol)
      than(integer, symbol)
      ANSP(symbol, symbol)
      goal
      write("Who goes first? (1 - a man, 0 - computer)",
      readint(player), write("What? (1 - crosses, 0 - null)"),
      readint(N, than(N,I1), ANSP(I1,I2), move(player, I1,I2),!,nl, nl; write("The rules violated."), 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,"-").
      than(1,x), than(0,o), ANSP(x,o), ANSP(o,x).
      move(0,S,_):- block(S,S),!,image,write("nComputer win!").
      move(0,S,C):- block(S,C),!image,move(1,C,S).
      move(0,S,C):- retract(z(2,2,"-")),!assert(z(2,2,S)),
      image,move(1,C,S).
      move(0,S,C): -z(R,St,"-"),(R+St) mod 2=0, retract(z(R,St,"-")),!,
      assert(z(R,St,S)), image, move(1,C,S).
      move(0,S,C):- retract(z(R,St,"-")),!assert(z(R,St,S)),
      image,move(1,C,S).
      move(1,C,S):- z(_,_,"-"), write("Walk:", "stroka(1-3)-"),
      readint(R,R>0,R<4,write("stolbec(1-3)-"),
      readint(St),St>0,St<4,retract(z(R,St,"-")),!,
      readint(St,St>0,St<4, retract(z(R,St,"-")),!,
      assert(z(R,St,C)),move(0,S,C).
      move(_,_,_):- not(z(_,_,"-")), nl, write("Draw!").
      block(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)).
      image:- 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("nNow play computer."),nl,nl,
      writef("t%t%t%nt%t%t%nt%t%t%",
      S1,S2,S3,S4,S5,S6,S7,S8,S9),nl,nl.
      Здесь, вроде, первый ход всегда человек делает.
      Прикреплённый файлПрикреплённый файл________.rar (4,46 Кбайт, скачиваний: 316)
        Хмм пытаюсь разобраться в своём

        ExpandedWrap disabled
          database
          z(integer,integer,symbol)
          predicates image
          move(integer,symbol,symbol)
          block(symbol,symbol)
          with(integer,symbol)
          vv(symbol,symbol)
          goal
          write("Кто ходит первым? (1 - человек, 0 - компьютер) "),
          readint(gamer),write("чем? (1 - крестиками, 0 - ноликами) "),
          readint(N),with(N,I1),vv(I1,I2),move(gamer,I1,I2),!,
          nl,nl; write("Правила нарушены."),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,"-").
          with(1,x). with(0,o). vv(x,o). vv(o,x).
          move(0,S,_):- block(S,S),!,image,write("nКомпьютер выиграл!").
          move(0,S,C):- block(S,C),!,image,move(1,C,S).
          move(0,S,C):- retract(z(2,2,"-")),!,assert(z(2,2,S)),
          image,move(1,C,S).
          move(0,S,C):- z(R,St,"-"), (R+St) mod 2=0,retract(z(R,St,"-")),!,
          assert(z(R,St,S)),image,move(1,C,S).
          move(0,S,C):- retract(z(R,St,"-")),!,assert(z(R,St,S)),
          image,move(1,C,S).
          move(1,C,S):- z(_,_,"-"),write("Ходи:","ncтрока (от 1 до 3) - "),
          readint(R),R>0,R<4,write("cтолбец (от 1 до 3) - "),
          readint(St),St>0,St<4,retract(z(R,St,"-")),!,
          assert(z(R,St,C)),move(0,S,C).
          move(_,_,_):- not(z(_,_,"-")),nl,write("Ничья!").
          block(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)).
          image:- 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("nХод компьютера."),nl,nl,
          writef("t%t%t%nt%t%t%nt%t%t%",
          S1,S2,S3,S4,S5,S6,S7,S8,S9),nl,nl.


        512 Type error: Wrong object type

        как описать gamer объект :rolleyes:
        Сообщение отредактировано: xpoint -
          последний код исправлен ;)
          Сообщение отредактировано: xpoint -
          0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
          0 пользователей:


          Рейтинг@Mail.ru
          [ Script execution time: 0,0305 ]   [ 17 queries used ]   [ Generated: 2.05.24, 14:10 GMT ]