Поиск:

Ответ в темуСоздание новой темы Создание опроса
> крестики нолики Swi Prolog, крестики нолики 
:(
    Опции темы
Влад11
Дата 12.12.2015, 18:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 12.12.2015

Репутация: нет
Всего: нет



можно этот код перевести на swi prolog?
Код

scan_empty(0,NX):- NX=0.
scan_empty(_,NX):- NX=1.
count_field(End):- global_field(X1,X2,X3,X4,X5,X6,X7,X8,X9),
scan_empty(X1,A),
scan_empty(X2,B),
scan_empty(X3,C),
scan_empty(X4,D),
scan_empty(X5,E),
scan_empty(X6,F),
scan_empty(X7,G),
scan_empty(X8,H),
scan_empty(X9,I),
End=A+B+C+D+E+F+G+H+I.
edit_global_score(1):-
global_score(You,Comp),
retract(global_score(_,_), mydb),
NewYou=You+1,
assertz(global_score(NewYou,Comp), mydb).
edit_global_score(2):-
global_score(You,Comp),
retract(global_score(_,_), mydb),
NewComp=Comp+1,
assertz(global_score(You,NewComp), mydb).
edit_global_score(_).
edit_global_game_end(X):-
retract(global_game_end(_), mydb),
assertz(global_game_end(X), mydb),!.
who_won(1):- edit_global_score(1), edit_global_field(0,0,0,0,0,0,0,0,0), edit_global_game_end(1), write("> You won! =)"), nl, nl,!.
who_won(2):- edit_global_score(2), edit_global_field(0,0,0,0,0,0,0,0,0), edit_global_game_end(1), write("> You lose.:("), nl, nl,!.
who_won(_).
find_win(1):- global_field(X1,X2,X3,X4,X5,X6,X7,X8,X9), X1<>0, X1=X2,X1=X3, who_won(X1),!.
find_win(1):- global_field(X1,X2,X3,X4,X5,X6,X7,X8,X9), X4<>0, X4=X5,X4=X6, who_won(X4),!.
find_win(1):- global_field(X1,X2,X3,X4,X5,X6,X7,X8,X9), X7<>0, X7=X8,X7=X9, who_won(X7),!.
find_win(1):- global_field(X1,X2,X3,X4,X5,X6,X7,X8,X9), X1<>0, X1=X4,X1=X7, who_won(X1),!.
find_win(1):- global_field(X1,X2,X3,X4,X5,X6,X7,X8,X9), X2<>0, X2=X5,X2=X8, who_won(X2),!.
find_win(1):- global_field(X1,X2,X3,X4,X5,X6,X7,X8,X9), X3<>0, X3=X6,X3=X9, who_won(X3),!.
find_win(1):- global_field(X1,X2,X3,X4,X5,X6,X7,X8,X9), X1<>0, X1=X5,X1=X9, who_won(X1),!.
find_win(1):- global_field(X1,X2,X3,X4,X5,X6,X7,X8,X9), X3<>0, X3=X5,X3=X7, who_won(X3),!.
find_win(0).
scan_move(1,1):- global_field(X1,_,_,_,_,_,_,_,_), X1>0 ,!.
scan_move(2,1):- global_field(_,X2,_,_,_,_,_,_,_), X2>0 ,!.
scan_move(3,1):- global_field(_,_,X3,_,_,_,_,_,_), X3>0 ,!.
scan_move(4,1):- global_field(_,_,_,X4,_,_,_,_,_), X4>0 ,!.
scan_move(5,1):- global_field(_,_,_,_,X5,_,_,_,_), X5>0 ,!.
scan_move(6,1):- global_field(_,_,_,_,_,X6,_,_,_), X6>0 ,!.
scan_move(7,1):- global_field(_,_,_,_,_,_,X7,_,_), X7>0 ,!.
scan_move(8,1):- global_field(_,_,_,_,_,_,_,X8,_), X8>0 ,!.
scan_move(9,1):- global_field(_,_,_,_,_,_,_,_,X9), X9>0 ,!.
scan_move(_,0).
edit_global_field(NewX1,NewX2,NewX3,NewX4,NewX5,NewX6,NewX7,NewX8,NewX9):-
global_field(X1,X2,X3,X4,X5,X6,X7,X8,X9),
retract(global_field(X1,X2,X3,X4,X5,X6,X7,X8,X9), mydb),
assertz(global_field(NewX1,NewX2,NewX3,NewX4,NewX5,NewX6,NewX7,NewX8,NewX9)).
scan_x_o(1):- !, write("x").
scan_x_o(2):- !, write("o").
scan_x_o(0):- !, write(" ").
draw_field(X1,X2,X3,X4,X5,X6,X7,X8,X9):- clearwindow,
write(" -------------"), nl,
write(" | "), scan_x_o(X1), write(" | "), scan_x_o(X2), write(" | "), scan_x_o(X3), write(" |"), nl,
write(" -------------"), nl,
write(" | "), scan_x_o(X4), write(" | "), scan_x_o(X5), write(" | "), scan_x_o(X6), write(" |"), nl,
write(" -------------"), nl,
write(" | "), scan_x_o(X7), write(" | "), scan_x_o(X8), write(" | "), scan_x_o(X9), write(" |"), nl,
write(" -------------"), nl, nl.
make_move(First, 1, 1):- scan_move(1,Pusto), Pusto<1,!,global_field(X1,X2,X3,X4,X5,X6,X7,X8,X9), edit_global_field(First,X2,X3,X4,X5,X6,X7,X8,X9), draw_field(First,X2,X3,X4,X5,X6,X7,X8,X9),!.
make_move(First, 2, 1):- scan_move(2,Pusto), Pusto<1,!,global_field(X1,X2,X3,X4,X5,X6,X7,X8,X9), edit_global_field(X1,First,X3,X4,X5,X6,X7,X8,X9), draw_field(X1,First,X3,X4,X5,X6,X7,X8,X9),!.
make_move(First, 3, 1):- scan_move(3,Pusto), Pusto<1,!,global_field(X1,X2,X3,X4,X5,X6,X7,X8,X9), edit_global_field(X1,X2,First,X4,X5,X6,X7,X8,X9), draw_field(X1,X2,First,X4,X5,X6,X7,X8,X9),!.
make_move(First, 4, 1):- scan_move(4,Pusto), Pusto<1,!,global_field(X1,X2,X3,X4,X5,X6,X7,X8,X9), edit_global_field(X1,X2,X3,First,X5,X6,X7,X8,X9), draw_field(X1,X2,X3,First,X5,X6,X7,X8,X9),!.
make_move(First, 5, 1):- scan_move(5,Pusto), Pusto<1,!,global_field(X1,X2,X3,X4,X5,X6,X7,X8,X9), edit_global_field(X1,X2,X3,X4,First,X6,X7,X8,X9), draw_field(X1,X2,X3,X4,First,X6,X7,X8,X9),!.
make_move(First, 6, 1):- scan_move(6,Pusto), Pusto<1,!,global_field(X1,X2,X3,X4,X5,X6,X7,X8,X9), edit_global_field(X1,X2,X3,X4,X5,First,X7,X8,X9), draw_field(X1,X2,X3,X4,X5,First,X7,X8,X9),!.
make_move(First, 7, 1):- scan_move(7,Pusto), Pusto<1,!,global_field(X1,X2,X3,X4,X5,X6,X7,X8,X9), edit_global_field(X1,X2,X3,X4,X5,X6,First,X8,X9), draw_field(X1,X2,X3,X4,X5,X6,First,X8,X9),!.
make_move(First, 8, 1):- scan_move(8,Pusto), Pusto<1,!,global_field(X1,X2,X3,X4,X5,X6,X7,X8,X9), edit_global_field(X1,X2,X3,X4,X5,X6,X7,First,X9), draw_field(X1,X2,X3,X4,X5,X6,X7,First,X9),!.
make_move(First, 9, 1):- scan_move(9,Pusto), Pusto<1,!,global_field(X1,X2,X3,X4,X5,X6,X7,X8,X9), edit_global_field(X1,X2,X3,X4,X5,X6,X7,X8,First), draw_field(X1,X2,X3,X4,X5,X6,X7,X8,First),!.
make_move(_,_,0):- !.
scan_end_game(9):-edit_global_game_end(1).
scan_end_game(_).
game(1):-
global_game_end(Endgame), Endgame=0,!,
write("Your step (1-9): "), readint(Xod),
make_move(1, Xod, XodEst), XodEst>0,
find_win(Find_win), Find_win<1 ,!,
count_field(End), scan_end_game(End),
game(2).
game(1):- global_game_end(End), End=0,!, game(1).
game(2):-
global_game_end(Endgame), Endgame=0,!,
select_move(Xod),
%write("Computer's lead: ",Xod), nl, readchar(QWERTY),
make_move(2, Xod, XodEst), XodEst>0,
find_win(Find_win), Find_win<1 ,!,
count_field(End), scan_end_game(End),
game(1).
game(2):- global_game_end(End), End=0,!, game(2).
game(_):-!.
first(1):- draw_field(0,0,0,0,0,0,0,0,0),
write("> Your step is the first!"), nl, nl,
game(1),menu.
first(2):- draw_field(0,0,0,0,0,0,0,0,0),
write("> Your step is the second"), readchar(JKHBVJD), nl, nl,
game(2),menu.
first(_):- clearwindow, write(">! Incorrect input ! Please try again."), nl, nl, who_first().
who_first():-
write("The first step?"), nl,nl,
write("1. You's"), nl,
write("2. Computer's"), nl,
write("=>"), readint(Select), nl,
first(Select).
show_score():-
global_score(You,Comp),
write(" You: "), write(You), nl,
write(" Computer: "), write(Comp).
select_move(1):- global_field(X1,X2,X3,X4,X5,X6,X7,X8,X9), X2<>0,X3<>0,X4<>0,X5<>0,X6<>0,X7<>0,X8<>0,X9<>0,!.
select_move(2):- global_field(X1,X2,X3,X4,X5,X6,X7,X8,X9), X1<>0,X3<>0,X4<>0,X5<>0,X6<>0,X7<>0,X8<>0,X9<>0,!.
select_move(3):- global_field(X1,X2,X3,X4,X5,X6,X7,X8,X9), X1<>0,X2<>0,X4<>0,X5<>0,X6<>0,X7<>0,X8<>0,X9<>0,!.
select_move(4):- global_field(X1,X2,X3,X4,X5,X6,X7,X8,X9), X1<>0,X2<>0,X3<>0,X5<>0,X6<>0,X7<>0,X8<>0,X9<>0,!.
select_move(5):- global_field(X1,X2,X3,X4,X5,X6,X7,X8,X9), X1<>0,X2<>0,X3<>0,X4<>0,X6<>0,X7<>0,X8<>0,X9<>0,!.
select_move(6):- global_field(X1,X2,X3,X4,X5,X6,X7,X8,X9), X1<>0,X2<>0,X3<>0,X4<>0,X5<>0,X7<>0,X8<>0,X9<>0,!.
select_move(7):- global_field(X1,X2,X3,X4,X5,X6,X7,X8,X9), X1<>0,X2<>0,X3<>0,X4<>0,X5<>0,X6<>0,X8<>0,X9<>0,!.
select_move(8):- global_field(X1,X2,X3,X4,X5,X6,X7,X8,X9), X1<>0,X2<>0,X3<>0,X4<>0,X5<>0,X6<>0,X7<>0,X9<>0,!.
select_move(9):- global_field(X1,X2,X3,X4,X5,X6,X7,X8,X9), X1<>0,X2<>0,X3<>0,X4<>0,X5<>0,X6<>0,X7<>0,X8<>0,!.
select_move(3):- global_field(X1,X2,X3,X4,X5,X6,X7,X8,X9), X1<>0,X1=X2,X3=0,!.
select_move(6):- global_field(X1,X2,X3,X4,X5,X6,X7,X8,X9), X4<>0,X4=X5,X6=0,!.
select_move(9):- global_field(X1,X2,X3,X4,X5,X6,X7,X8,X9), X7<>0,X7=X8,X9=0,!.
select_move(1):- global_field(X1,X2,X3,X4,X5,X6,X7,X8,X9), X2<>0,X2=X3,X1=0,!.
select_move(4):- global_field(X1,X2,X3,X4,X5,X6,X7,X8,X9), X5<>0,X5=X6,X4=0,!.
select_move(7):- global_field(X1,X2,X3,X4,X5,X6,X7,X8,X9), X8<>0,X8=X9,X7=0,!.
select_move(7):- global_field(X1,X2,X3,X4,X5,X6,X7,X8,X9), X1<>0,X1=X4,X7=0,!.
select_move(8):- global_field(X1,X2,X3,X4,X5,X6,X7,X8,X9), X2<>0,X2=X5,X8=0,!.
select_move(9):- global_field(X1,X2,X3,X4,X5,X6,X7,X8,X9), X3<>0,X3=X6,X9=0,!.
select_move(1):- global_field(X1,X2,X3,X4,X5,X6,X7,X8,X9), X4<>0,X4=X7,X1=0,!.
select_move(2):- global_field(X1,X2,X3,X4,X5,X6,X7,X8,X9), X5<>0,X5=X8,X2=0,!.
select_move(3):- global_field(X1,X2,X3,X4,X5,X6,X7,X8,X9), X6<>0,X6=X9,X3=0,!.
select_move(9):- global_field(X1,X2,X3,X4,X5,X6,X7,X8,X9), X1<>0,X1=X5,X9=0,!.
select_move(1):- global_field(X1,X2,X3,X4,X5,X6,X7,X8,X9), X5<>0,X5=X9,X1=0,!.
select_move(7):- global_field(X1,X2,X3,X4,X5,X6,X7,X8,X9), X5<>0,X5=X3,X7=0,!.
select_move(3):- global_field(X1,X2,X3,X4,X5,X6,X7,X8,X9), X5<>0,X5=X7,X3=0,!.
select_move(2):- global_field(X1,X2,X3,X4,X5,X6,X7,X8,X9), X1<>0,X1=X3,X2=0,!.
select_move(5):- global_field(X1,X2,X3,X4,X5,X6,X7,X8,X9), X4<>0,X4=X6,X5=0,!.
select_move(8):- global_field(X1,X2,X3,X4,X5,X6,X7,X8,X9), X7<>0,X7=X9,X8=0,!.
select_move(4):- global_field(X1,X2,X3,X4,X5,X6,X7,X8,X9), X1<>0,X1=X7,X4=0,!.
select_move(5):- global_field(X1,X2,X3,X4,X5,X6,X7,X8,X9), X2<>0,X2=X8,X5=0,!.
select_move(6):- global_field(X1,X2,X3,X4,X5,X6,X7,X8,X9), X3<>0,X3=X9,X6=0,!.
select_move(5):- global_field(X1,X2,X3,X4,X5,X6,X7,X8,X9), X1<>0,X1=X9,X5=0,!.
select_move(5):- global_field(X1,X2,X3,X4,X5,X6,X7,X8,X9), X3<>0,X3=X7,X5=0,!.
select_move(Xod):- random(8,TempXod),Xod=TempXod+1,!.
case(1):- clearwindow, write("New Game"),nl,
edit_global_game_end(0),edit_global_field(0,0,0,0,0,0,0,0,0),
nl, who_first(), nl, nl.
case(2):- clearwindow, write("Score"), nl, show_score(), nl, nl,fail.
case(0):-!.
case(_).

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума Prolog
Void
  • Пожалуйста, создавайте темы с содержательными названиями.
  • Уважаемые учащиеся, здесь всегда рады помочь Вам, но не делать за Вас вашу работу. У вас гораздо больше шансов получить помощь, если Вы приложите усилия и поделитесь с нами проблемами и результатами. В противном случае добро пожаловать в раздел Центр Помощи.
  • Получив ответ на интересующий Вас вопрос, не забудьте пометить его как решённый.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Void.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Prolog | Следующая тема »


 




[ Время генерации скрипта: 0.0988 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.