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

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





МІНІСТЕРСТВО ОСВІТИ І НАУКИ РОСІЙСЬКОЇ ФЕДЕРАЦІЇ

МІНІСТЕРСТВО ОСВІТИ

Державні освітні установи

ВИЩОЇ ОСВІТИ

Новосибірський державний технічний університет

Кафедра обчислювальної техніки







ПОЯСНЮВАЛЬНА ЗАПИСКА

до курсового проекту з дисципліни: «Функціональне та логічне програмування»

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








Новосибірськ 2010

1. ОПИС ПРОГРАМНОГО ПРОДУКТУ


Справжній програмний продукт призначений для гри «Хрестики - нулики». «Хрестики - нулики» - гра для двох учасників, в якій гравці по черзі вписують x або o в таблицю 3 x 3. Мета гравця - першим заповнити рядок, стовпець або діагональ таблиці.


2. ОПИС ДАНИХ


Даними в програмі є 3 динамічних факту для бази даних. Факти складаються з ряду полів:

перший факт містить 9 полів, що позначають поточну ситуацію на полі (рис. 1),

другий факт містить 2 поля, що позначають поточний рахунок гри,

третього факт містить 1 поле і позначає кінець гри.

Шляхом редагування даних здійснюється ігровий процес. Використовується цілочисельний тип даних.


Рисунок 1 - Приклад ігрового поля


3. ОПИС МЕТОДІВ РІШЕННЯ


У програмі реалізовано 2 режими:

Хід користувача - в цьому режимі обробляється хід користувача;

Хід комп'ютера - в цьому режимі обробляється хід комп'ютера.

Обидва ходу реалізовані за допомогою предиката game.

Хід користувача.

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

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

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

Предикат 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; ...


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





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

  • Реферат на тему: Розробка програми з використанням мови логічного програмування Prolog
  • Реферат на тему: Програмування мобільного транкінгового радіостанції ALINCO DJ-382C1 в режим ...
  • Реферат на тему: Сайт з використанням скриптової мови програмування PHP і бази даних MySQL
  • Реферат на тему: Розробка інтерфейсу користувача для роботи з базою даних &Автомайстерня&
  • Реферат на тему: Розробка інтерфейсу користувача для роботи з базою даних Будинку культури