Теми рефератів
> Реферати > Курсові роботи > Звіти з практики > Курсові проекти > Питання та відповіді > Ессе > Доклади > Учбові матеріали > Контрольні роботи > Методички > Лекції > Твори > Підручники > Статті Контакти
Реферати, твори, дипломи, практика » Курсовые проекты » Розробка програми з використанням мови логічного програмування Prolog

Реферат Розробка програми з використанням мови логічного програмування Prolog





0, X3=X5, X3=X7, who_won (X3),!.

find_win (0).


Якщо переможець знайдений викликається предикат who_won.

Предикат who_won додає переможцю очко, за допомогою предиката edit_global_score, «скидає» стан ігрового поля до вихідного edit_global_field (0,0,0,0,0,0,0,0,0), змінює стан ігрового процесу (закінчення гри) edit_global_game_end (1) і виводить повідомлення про переможця.

Якщо переможець не знайдений, то викликається предикат count_field, який перевіряє наявність вільних комірок на полі.


count_field (End): - global_field(X1,X2,X3,X4,X5,X6,X7,X8,X9),_empty(X1,A),_empty(X2,B),_empty(X3,C),_empty(X4,D),_empty(X5,E),_empty(X6,F),_empty(X7,G),_empty(X8,H),_empty(X9,I),=A+B+C+D+E+F+G+H+I.


Предикат scan_end_game перевіряє ситуацію закінчення гри (всі комірки заповнені) та за допомогою предиката edit_global_game_end змінює стан факту закінчення гри в базі даних.


scan_end_game (9): - edit_global_game_end (1).

scan_end_game (_).


Якщо гра не закінчена, викликається предикат game і слід хід комп'ютера.

Хід комп'ютера.

Хід користувача починається з предиката game з параметром 2.

Предикат global_game_end (Endgame) виконує перевірку на випадок закінчення гри.

Далі виконаються предикат select_move, який аналізує ситуацію ігрового поля і приймає рішення, який хід найбільш правильний (якщо немає ситуації гарантованого виграшу чи гарантованого програшу хід здійснюється випадковим чином).

select_move (Xod): - random (8, TempXod), Xod=TempXod + 1,!.

Далі виконується предикат make_move (1, Xod, XodEst).

Допоміжний предикат scan_move перевіряє можливість виконання заданого ходу.


scan_move (1,1): - global_field (X1, _, _, _, _, _, _, _, _), X1 gt; 0,! ._ move (2,1):- global_field (_, X2, _, _, _, _, _, _, _), X2 gt; 0,! ._ move (3,1): - global_field (_, _, X3, _, _, _, _, _, _), X3 gt; 0,! ._ move (4,1): - global_field (_, _, _, X4, _, _, _, _, _), X4 gt; 0,! ._ move ( 5,1): - global_field (_, _, _, _, X5, _, _, _, _), X5 gt; 0,! ._ move (6,1): - global_field (_, _, _, _ , _, X6, _, _, _), X6 gt; 0,! ._ move (7,1): - global_field (_, _, _, _, _, _, X7, _, _), X7 gt; 0 ,! ._ move (8,1): - global_field (_, _, _, _, _, _, _, X8, _), X8 gt; 0,! ._ move (9,1): - global_field (_, _, _, _, _, _, _, _, X9), X9 gt; 0,!.

scan_move (_, 0).


Якщо заданий хід можна виконати те, предикат edit_global_field змінює ситуацію на ігровому полі (в обрану позицію заноситься символ гравця x), міняючи вміст фактів бази даних, а предикат draw_field виводить поточний стан ігрового поля на екран.

Предикат draw_field має допоміжний предикат scan_x_o.

За допомогою предиката scan_x_o здійснюється вибір символу для виводу на екран (x, o, залежно від поточного стану перевіряється комірки).

Предикат find_win перевіряє наявність переможця на поточному ході гри.


find_win (1): - global_field (X1, X2, X3, X4, X5, X6, X7, X8, X9), X1 lt; gt; 0, X1=X2, X1=X3, who_won (X1),! ._ win (1): - global_field (X1, X2, X3, X4, X5, X6, X7, X8, X9), X4 lt; gt; 0, X4=X5, X4=X6, who_won (X4 ),!. _win (1): - global_field (X1, X2, X3, X4, X5, X6, X7, X8, X9), X7 lt; gt; 0, X7=X8, X7=X9, who_won (X7),! ._ win ( 1): - global_field (X1, X2, X3, X4, X5, X6, X7, X8, X9), X1 lt; gt; 0, X1=X4, X1=X7, who_won (X1),! ._ win (1):- global_field (X1, X2, X3, X4, X5, X6, X7, X8, X9), X2 lt; gt; 0, X2=X5, X2=X8, who_won (X2),! ._ win (1): -global_field (X1, X2, X3, X4, X5, X6, X7, X8, X9), X3 lt; gt; 0, X3=X6, X3=X9, who_won (X3),! ._ win (1): - global_field ( X1, X2, X3, X4, X5, X6, X7, X8, X9), X1 lt; gt; 0, X1=X5, X1=X9, who_won (X1),! ._ win (1): - global_field (X1, X2, X3, X4, X5, X6, X7, X8, X9), X3 lt; gt; 0, X3=X5, X3=X7, who_won (X3),!.

find_win (0).


Якщо переможець знайдений викликається предикат who_won.

Предикат who_won додає переможцю очко, за допомогою предиката edit_global_score, «скидає» стан ігрового поля до вихідного edit_global_field (0,0,0,0,0,0,0,0,0), змінює стан ігрового процесу (закінчення гри) edit_global_game_end (1) і виводить повідомлення про переможця.

Якщо переможець не знайдений, то викликається предикат count_field, який перевіряє наявність вільних комірок на полі.

програма гра хрестики нулики

count_field (End): - glob...


Назад | сторінка 2 з 6 | Наступна сторінка





Схожі реферати:

  • Реферат на тему: Поняття предиката. Безліч істинності предиката. Класифікація предикатів
  • Реферат на тему: Якщо ремонт виявився модернізацією
  • Реферат на тему: Якщо ваш працівник затриманий чи засуджений
  • Реферат на тему: Якщо ви викликаєте швидку допомогу
  • Реферат на тему: Якщо лікарняний невірно розрахований