al_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 і слід хід користувача.
4. ОПИС ПРОГРАМИ
global_field (integer, integer, integer, integer, integer, integer, integer, integer, integer) Факт бази даних, що визначає стан ігрового поля._score (integer, integer) Факт бази даних, що визначає стан рахунку._game_end (integer) Факт бази даних визначає кінець ігри.Предікат реалізує циклічний висновок головного меню.С даного предиката починається програма. Предикат виводить на екран пункти меню і пропонує користувачеві вибрати один з них. (Integer) Предикат реалізує вибір одного з пунктів меню._score () Предикат виводить на екран поточний стан счёта._first () Предикат опитує користувача про право першого ходу. (Integer) Предикат виводить повідомлення про те, кому належить перший хід і запускає гру. (integer) Предикат, що здійснює безпосередній ігровий процес у двох варіаціях, залежно від що ходить.
make_move (integer, integer, integer) Предикат виконує хід ігрока._field (integer, integer, integer, integer, integer, integer, integer, integer, integer) Предикат виконує промальовування ігрового поля.
scan_x_o (integer) Допоміжний предикат вибирає символ необхідний для виведення в осередок поля.
edit_global_field (integer, integer, integer, integer, integer, integer, integer, integer, integer) Предикат змінює стан ігрового поля в базі даних.
edit_global_score (integer) Предикат змінює стан рахунку в базі данних._global_game_end (integer) Предикат, що змінює поточний стан ігрового процесу (кінець гри) ._ field (integer) Предикат підраховує кількість зайнятих осередків поля._empty (integer , integer) Допоміжний предикат перевіряючий осередок поля на пустоту._win (integer) Предикат перевіряючий наявність виграшної комбінації на поле._won (integer) Предикат визначає переможця раунда._move (integer, integer) Допоміжний предикат, перевіряючий можливість заданого хода._move (integer) Предикат визначає хід компьютера._end_game (integer) Предикат перевіряючий ситуацію закінчення гри.
5. ОПИС користувальницький інтерфейс
Програма має простий користувальницький інтерфейс:
При запуску програми на екран виводитися головне меню (рис. 2):
Малюнок 2 - Головне меню
У відповідності з кожним пунктом меню користувач отримує можливість:
почати нову гру,
переглянути поточний рахунок,
закінчити гру.
При виборі першого пункту користувач бачить опитування про право першого ходу (рис. 3):
Малюнок 3 - Право першого ходу
Вибравши, кому належатиме перший хід, користувач починає ігровий процес. На екран виводиться ігрове поле і повідомлення про перший ході (рис. 4).
Малюнок 4 - Ігрове поле
Користувачеві пропонується зробити хід (ввести порядковий номер комірки, нумерація зліва на право, куди користувач хоче походити, якщо номер введений неправильно, виводиться пропозиція про повторне вводі).
По закінченню гри на екран виводиться ігрове поле і головне меню (рис. 5).
Малюнок 5 - Закінчення гри
СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ
1. Стерлінг Л., Шапіро Е. Мистецтво програмування мовою Пролог.- М .: Світ, 1990. - 333 с.
. Братко І. Програмування на мові Пролог для штучного інтелекту: Пер. з англ.- М .: Світ, 1990. - 560 с., Іл.
. Матеріал з Вікіпедії - вільної енциклопедії.- 2010. [Електронний ресурс]. URL: # justify gt; ДОДАТОК
Вихідний код програми
% ========================================= ==========%
DATABASE - mydb
global_field (integer, integer, integer, integer, integer, integer, integer, integer, integer) _score (integer, integer) _game_end (integer)
% ===========================...