|
6082 / 1327 / 195
Регистрация: 12.12.2012
Сообщений: 1,023
|
||||||
Программа крестики-нолики27.07.2019, 12:53. Показов 6845. Ответов 57
Метки логические игры (Все метки)
Здравствуйте, дорогие форумчане.Представляю вашему вниманию свою попытку разработать на Паскале искусственный интеллект для игры крестики-нолики. Программа играет не идеально, но некоторое сопротивление оказать все же способна... Надеюсь, вам понравится. P.S. Управление осуществляется с помощью клавиатуры:
С уважением, Аксима
1
|
||||||
| 27.07.2019, 12:53 | |
|
Ответы с готовыми решениями:
57
Крестики-нолики Крестики-нолики NxN Крестики-нолики |
|
Модератор
|
|||||||||||
| 27.07.2019, 20:41 | |||||||||||
|
Касательно кода и синтаксиса.
Строки 7-78 преобразовать по образу
Добавлено через 24 минуты Строки 210-224 эквивалентны
1
|
|||||||||||
|
2374 / 776 / 561
Регистрация: 15.01.2019
Сообщений: 2,394
|
||||||
| 27.07.2019, 22:36 | ||||||
|
Во Free Pascal работать не захотела, даже с WinCRT.
2
|
||||||
|
6082 / 1327 / 195
Регистрация: 12.12.2012
Сообщений: 1,023
|
|||||||||||
| 27.07.2019, 22:45 [ТС] | |||||||||||
|
bormant, оптимизировать можно до бесконечности...
В принципе, первый совет можно оптимизировать до использования циклов вместо жестко закодированных значений...
С уважением, АксимаДобавлено через 5 минут ValentinNemo, я писал программу в Turbo Pascal, а в Free Pascal не тестировал. Расскажите, что за ошибка у вас возникает, будем ее исправлять.
1
|
|||||||||||
|
Модератор
|
||
| 27.07.2019, 23:07 | ||
|
Да и составными операторами злоупотреблять нет никакой нужды... Добавлено через 1 минуту Ах да, это пока никакая не оптимизация, просто использование средств языка к месту, дабы повысить читаемость и сопровождаемость программы, не более того.
0
|
||
|
1059 / 980 / 153
Регистрация: 10.08.2015
Сообщений: 5,314
|
||
| 28.07.2019, 03:47 | ||
|
тп никому не интересен, код убогий, комментариев 0, управление убогое если уж создавать ИИ, то нужно понимать, что для того, чтоб выиграть в крестики нолики есть всего 8 комбинаций. пусть поле это массив клеток 0..7, тогда комбинации: 012,345,678;036;147;258;048,246. клетка 4 присутствует в 4 комбинациях значит у нее наивысший приоритет для хода. Если игрок походил в клетку 4, то ход в клетку 0 помешает игроку создать 3 комбинации и даст возможность компьютеру создать 2 комбинации, например ход в клетку 1 помешает создать только 2 комбинации и поможет создать 1 комбинацию. так же компутер должен определять какие комбинации можно создать в данный момент и насколько игрок близок к созданию комбинации и какой. вот и вся логика
1
|
||
|
2374 / 776 / 561
Регистрация: 15.01.2019
Сообщений: 2,394
|
|
| 28.07.2019, 14:42 | |
|
Аксима, во Free Pascal есть такая бяка - процедуры модуля CRT, не работают в графическом режиме. (В TP такой проблемы нет). Как правило помогает подсоединение WinCRT, но и при нем не заработал. Я подумал, так. Я сделал попытку оптимизации и вероятно что-то нарушил. Проверять программы на TP у меня нет никакого желания, ибо от этого нет никакого проку.
Я просматриваю и разбираю такого рода примеры, чтобы потом немного подучиться. Связка Lazarus/Free Pascal меня устраивает, но комментаторы тут совершенно правы: TP - мертвый. Турбо паскалем мучают исключительно школьников. А ваш код с Free Pascal можно потом переложить на Lazarus. Но... не заработало. Проверьте на своем TP мой чуть оптимизированный код и скажите работает или нет. Я тогда продолжу свои упражнения с вашим кодом, и если вам интересно выложу его в виде готового проекта на Lazarus. Да. Спасибо вам за труды по программированию такой чудесной простоты. Для кого-то это может быть блажь, но на самом деле интересно именно тем, что относительно просто. Мой совет. Никогда не используйте в кодах строчную литеру "l" и литеру "o" в именах переменных. Это потом такой гемор присматриваться к каждой букве в коде, так как они сливаются с нулем и единицей.
1
|
|
|
Модератор
|
|
| 28.07.2019, 14:52 | |
|
ValentinNemo,
>Это потом такой гемор присматриваться к каждой букве в коде, так как они сливаются с нулем и единицей. Откройте для себя шрифты, предназначенные для программного кода, и проблема уйдет в небытие. В таких шрифтах похожие литеры специально делают явно различимыми.
0
|
|
|
6082 / 1327 / 195
Регистрация: 12.12.2012
Сообщений: 1,023
|
|
| 28.07.2019, 15:01 [ТС] | |
|
vlisp, полностью согласен с вами, что если подумать как следует, то можно достаточно успешно реализовать логику для игры в крестики нолики.
Только у меня крестики-нолики "пять в ряд" и поле 15 на 15 клеток, а не 0..7. Мне кажется, в этих условиях количество комбинаций все же больше того, что вы подсчитали .ValentinNemo, ваш чуть оптимизированный код работает у меня отлично, только объявление массива Li пришлось перенести из раздела объявления переменных в раздел объявления констант. Посмотреть на вариацию моей программы в виде проекта на Lazarus мне было бы интересно. Если выложите, посмотрю с удовольствием.
1
|
|
|
3410 / 1829 / 489
Регистрация: 28.02.2015
Сообщений: 3,696
|
||
| 28.07.2019, 15:31 | ||
|
Аксима,
В сети есть куча сайтов посвященных стратегиям игры "Х/О" и "GO". Стртегию ИИ, Вам можно взять там. И я полностью согласен с:
0
|
||
|
1059 / 980 / 153
Регистрация: 10.08.2015
Сообщений: 5,314
|
||
| 28.07.2019, 17:35 | ||
|
0
|
||
|
3410 / 1829 / 489
Регистрация: 28.02.2015
Сообщений: 3,696
|
|||
| 28.07.2019, 18:22 | |||
0
|
|||
|
2374 / 776 / 561
Регистрация: 15.01.2019
Сообщений: 2,394
|
|
| 28.07.2019, 23:17 | |
|
Аксима, спасибо что проверили. Буду теперь уверен и "сражаться" с Lazarus.
Тема ИИ применительно к играм и применительно к общим задачам по программированию сейчас очень актуальна. Я рекомендую кому интересно поискать книгу Сергей Соболенко. "Искусственный интеллект: начала MSM." В ней все толково разъяснено и главное - приводится код ИИ на Pascal. У кого есть терпение, могут этот код перенести из книги в файлы и предоставить публике работающий код. Аксима, если вам интересна тема ИИ, то для вас это самое лучшее, что можно найти. bormant, может быть вы мне не поверите, но мне набросать интерфейс ввода-вывода (в том числе и с компонентами графической информации ) в Lazarus в 2-3 раза проще, чем придумывать собственные интерфейсные велосипеды в консольных программах. Оценка конечно субъективная.
1
|
|
|
6082 / 1327 / 195
Регистрация: 12.12.2012
Сообщений: 1,023
|
|
| 29.07.2019, 00:06 [ТС] | |
|
Конечно, разработка искусственного интеллекта - это интересно!
Спасибо вам за наводку. С уважением, Аксима
0
|
|
|
2374 / 776 / 561
Регистрация: 15.01.2019
Сообщений: 2,394
|
|
| 30.07.2019, 16:40 | |
|
Аксима, Я выложил вашу программу переложенную под приложение. Сделано в среде Lazarus/Free Pascal.
Скачивайте проект и пробуйте. Игра "Крестики-нолики" в виде приложения
2
|
|
|
Модератор
10360 / 5634 / 3394
Регистрация: 17.08.2012
Сообщений: 17,195
|
|
| 31.07.2019, 23:39 | |
|
Constantin Cat, Constantin Cat... Ну как же это так всё... Эх... Ну как Вы могли... Как Вы могли перепутать Великую Игру Го не то с рендзю, не то с гомоку! Две последних игры похожи на "крестики-нолики", и достаточно сложные, но вот Его Величество Го... Нисколько не крестики-нолики, и на порядок сложнее шахмат.
0
|
|
|
1059 / 980 / 153
Регистрация: 10.08.2015
Сообщений: 5,314
|
|
| 01.08.2019, 03:35 | |
|
0
|
|
|
3410 / 1829 / 489
Регистрация: 28.02.2015
Сообщений: 3,696
|
|
| 01.08.2019, 10:04 | |
|
Cyborg Drone, сорри, бес попутал.
0
|
|
|
2388 / 1300 / 1492
Регистрация: 29.08.2014
Сообщений: 4,665
|
|
| 02.08.2019, 08:09 | |
|
0
|
|
| 02.08.2019, 08:09 | |
|
Помогаю со студенческими работами здесь
20
Крестики нолики Крестики-нолики Крестики-нолики Крестики-нолики Крестики-нолики в графическом режиме Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Музыка, написанная Искусственным Интеллектом
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
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|
Фото: Daniel Greenwood
kumehtar 13.11.2025
|
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга,
Ты же видел моря и метели.
Как сменялись короны и стяги,
Как эпохи стрелою летели.
- Этот мир — это крылья и горы,
Снег и пламя, любовь и тревоги,
И бескрайние. . .
|
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1
У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\
А в самом низу файла-профиля. . .
|