Форум программистов, компьютерный форум, киберфорум
Prolog
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
0 / 0 / 1
Регистрация: 26.12.2015
Сообщений: 21

Игра "Крестики-нолики": выбор хода, обеспечивающего выигрыш

20.04.2020, 21:00. Показов 1642. Ответов 5

Студворк — интернет-сервис помощи студентам
Игра «Крестики-нолики». Выбор хода, обеспечивающего выигрыш.
Исходные данные:
номера и координаты крестиков в поле 3 на 3,
номера и координаты ноликов в том же поле 3 на 3,
первый вариант проставляемого на поле крестика,
второй вариант проставляемого на поле крестика.
Результат:
или выигрыш (да), номер варианта проставляемого на поле крестика, координаты проставляемого на поле крестика;
или выигрыш (нет)

Разработать программу на языке Visual Prolog. Разработка должна включать:
1. Графическую интерпретацию.
2. Исходные данные.
3. Частное и универсальное правило (правила).
4. Запрос. Результат выполнения.
5. Пошагового выполнения программы для первых пяти положительных сопоставлений целей (условий) с утверждениями.

Начало есть. А как сформировать основной код, затрудняюсь. Помогите пожалуйста

Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
PREDICATES
nondeterm фигура(symbol, integer, integer)
nondeterm ход(int,symbol, integer, integer)
CLAUSES
%1. Исходные данные
фигура(нолик,3,3). %факт 1
фигура(крестик,1,3). %факт 2
фигура(нолик,3,1). %факт 3
фигура(крестик,1,1). %факт 4
фигура(нолик,2,1). %факт 5
ход(1,крестик, 1,2). %факт 6
ход(2,крестик, 3,2). %факт 7
Goal
 
 
ход(,крестик,X,Y):-фигура(крестик,_<>X,_)| фигура(крестик,_,_ <>Y)|
Миниатюры
Игра "Крестики-нолики": выбор хода, обеспечивающего выигрыш  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.04.2020, 21:00
Ответы с готовыми решениями:

Игра крестики-нолики
Здравствуйте! Дали задание написать крестики-нолики на ror3 (игра с компьютером, без ajax). Начала разбирать существующие программы, но...

Консольная игра крестики-нолики.Нужно сделать поле 10на10,при этом чтобы остался выигрыш 5в ряд или по диаголи
Консольная игра крестики-нолики. Нужно сделать поле 10 на 10, при этом чтобы остался выигрыш 5 в ряд или по диагонали. Помогите...

Игра Крестики - нолики: реализовать выбор размера игрового поля
Привет всем. Это игра крестики нолики, играть можно в режиме 3х3. А можно сделать, чтобы был выбор режима , например 3х3, 5х5, 9х9. Если...

5
Фрилансер
 Аватар для Black Fregat
3709 / 2082 / 567
Регистрация: 31.05.2009
Сообщений: 6,683
21.04.2020, 23:48
Цитата Сообщение от NeGaT1qp Посмотреть сообщение
как сформировать основной код,
Дело в том, что проект с графикой на Visual Prolog - это очень сложная структура, автоматически формируемая средой при создании. Туда свой код нужно встраивать в нужные места в виде обработчиков событий. И для пятёрки это не самое приятное занятие )
0
 Аватар для arlat
798 / 601 / 158
Регистрация: 07.10.2013
Сообщений: 1,330
22.04.2020, 18:18
Нет, ну тупо не понятна постановка задачи...
Я в теме крестиков-ноликов давно, но вот не понимаю, что тут надо реализовать.
Попробуйте переформулировать, дополнительно пояснить что-ли...
Можно дать ссылку на проект, но Вы там просто закопаетесь, не вариант, хотя пусть будет
xo game
Цитата Сообщение от NeGaT1qp Посмотреть сообщение
Разработать программу на языке Visual Prolog
какая версия?
Цитата Сообщение от NeGaT1qp Посмотреть сообщение
фигура(нолик,3,3). %факт 1
фигура(крестик,1,3). %факт 2
а где фигура пусто?
0
Фрилансер
 Аватар для Black Fregat
3709 / 2082 / 567
Регистрация: 31.05.2009
Сообщений: 6,683
22.04.2020, 22:04
Цитата Сообщение от arlat Посмотреть сообщение
а где фигура пусто?
Видимо, разреженная матрица - пусто, где нет фигур
0
0 / 0 / 1
Регистрация: 26.12.2015
Сообщений: 21
22.04.2020, 22:23  [ТС]
Реализовал задание таким образом:
Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
PREDICATES
nondeterm крестик1(integer,integer).
nondeterm крестик2(integer,integer).
nondeterm нолик(integer,integer).
nondeterm выигрыш(integer,integer,symbol).
nondeterm программа( integer,integer,integer,integer,symbol,symbol).
CLAUSES
%Исходные данные
крестик1(1,3).%факт1
крестик2(1,1).%факт2
нолик(3,3).%факт3
нолик(3,1).%факт4
нолик(2,1).%факт5
 
Шаг 3
 
выигрыш(Крестик_X,Крестик_Y,Сообщение):- %проверяется выигрыш
крестик1(_,Крестик_Y),крестик2(_,Крестик_Y), Сообщение = " Выигрыш" ; % проверяется строка крестиков
крестик1(Крестик_X,_), крестик2(Крестик_X,_), Сообщение = "Выигрыш"; % проверяется столбец крестиков
крестик1(Крестик_1,Крестик_1), крестик2(Крестик_2,Крестик_2), Крестик_X = Крестик_Y, Сообщение = " Выигрыш";% проверка диагонали
Крестик_X = 2 ,Крестик_Y = 2,крестик1(К1X,К2Y),крестик2(К2Y,К1X), Сообщение = " Выигрыш";
крестик1(Крестик_Y,Крестик_X),крестик2(K,K), Сообщение = "Выигрыш";
крестик2(Крестик_Y,Крестик_X),крестик1(K,K), Сообщение = "Выигрыш". %правило1
 
программа (Крестик_1_X, Крестик_1_Y, Крестик_2_X,Крестик_2_Y,Сообщение1 , Сообщение2) :- выигрыш (Крестик_1_X,Крестик_1_Y,Сообщение1),Сообщение1=" Выигрыш",Сообщение2 = " Проигрыш";
выигрыш( Крестик_2_X,Крестик_2_Y,Сообщение2), Сообщение2="Выигрыш",Сообщение1 = " Проигрыш". %правило2
 
 
Шаг 4
GOAL
 
Крестик_1X = 1 , Крестик_1Y = 2,Крестик_2X= 3, Крестик_2Y = 2, 
программа (Крестик_1_X, Крестик_1_Y, Крестик_2_X,Крестик_2_Y, Сообщение_для_первого, Сообщение_для_второго).%запрос1
 
Шаг 5
 
программа(1,2,3,2,Сообщение_для_первого, Сообщение_для_второго)
 
Пошаговое выполнение:
1)запрос1 v факт1 (false)
Программа v крестик1 (false)
2)запрос1 v факт2 (false)
Программа v крестик2 (false)
3)запрос1 v факт3 (false)
Программа v нолик (false)
4)запрос1 v факт4 (false)
Программа v нолик (false)
5)запрос1 v факт5 (false)
Программа v нолик (false)
6)запрос1 v правило1 (false)
Программа v выигрыш (false)
7)запрос1 v правило2 (true)
Программа v Программа (true)
 
Крестик_1_X = 1 
Крестик_1_ Y = 2 
Крестик_2_X = 3 
Крестик_2_ Y = 2 
 
7.1)1 условие правила 2 v факт 1 (false)
Выигрыш v крестик1 (false)
…………………………………
7.2) 1 условие правила 2 v правило 1 (true)
Выигрыш v Выигрыш (true)
 
Крестик_X = Крестик_1_X 
Крестик_ Y = Крестик_1_ Y 
Сообщение = "Выигрыш"
7.2.1) 1 условие правила 1 v факт 1 (true)
крестик1(_,1)
 
крестик1(1,1) (false)
крестик1(2,1) (false)
крестик1(3,1) (false)
………………………………….
7.2.2.1) 1 часть 2 условие правила 1 v факт 1 (true)
крестик1(1,_)
 
крестик1(1,1) (false)
крестик1(1,2) (false)
крестик1(1,3) (true)
 
7.2.2.2) 2 часть 2 условие правила 1 v факт 1 (false)
7.2.2.3) 2 часть 2 условие правила 1 v факт 2 (true)
Крестик2(1,_)
 
Крестик2(1,1) (true)
7.2.2.4) 3 часть 2 условие правила 1 (true)
 
Сообщение = " Выигрыш" (true)
1 Solution
Дальнейшее выполнение программы не даст положительных результатов
 
Результат работы программы
Сообщение_для_первого = "Выигрыш"
Сообщение_для_второго = "Проигрыш"
0
 Аватар для arlat
798 / 601 / 158
Регистрация: 07.10.2013
Сообщений: 1,330
23.04.2020, 09:27
Цитата Сообщение от Black Fregat Посмотреть сообщение
Видимо, разреженная матрица
ага и вместе с ней постановка задачи

Добавлено через 7 минут
Цитата Сообщение от NeGaT1qp Посмотреть сообщение
Реализовал задание таким образом
Мне вспомнилась одна девица, у которой дипломная работа была основана на программе ASM строк на 20, которая запускалась и даже давала какой-то результат, причем девица ничего не понимала в ассемблере, - что делает программа и почему понимала на уровне мантры, - защитилась на удовл.

Добавлено через 1 минуту
Цитата Сообщение от NeGaT1qp Посмотреть сообщение
Реализовал
Скриншот результата выполнения в студию...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.04.2020, 09:27
Помогаю со студенческими работами здесь

Проверка на выигрыш в игре "Крестики - нолики" для поля неопределенного размера (нужны комментарии)
Добрый день всем! Первый раз обращаюсь на форум, по этому если сделал что то не так не ругайтесь, всегда готов исправиться. Есть метод по...

игра крестики нолики
1) как изменить алгоритм ходов компьютера 2) как добавить окошки с надписями &quot;Вы выиграли&quot; &quot;Вы проиграли&quot;...

Игра крестики - нолики
Всем добрый день , вобщем сделал я почти игру крестики-нолики = уже не один день мучаясь .... Просто на днях сдавать надо но немного не...

Крестики vs Нолики (игра)
Привет. Решил попробовать сделать Крестики нолики на паскале, но т.к. я только начал изучать Паскаль, то средств (доступных мне операторов)...

Игра крестики нолики
begin pole; while (xod&gt;=0) do begin {xod igroka} K:=0; delay(10000); while k&lt;1 do begin ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru