![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#11 |
Высокая репутация
СуперМодератор
Регистрация: 27.07.2008
Сообщений: 15,837
|
![]()
Мини-максный поиск - это из теории игр. В кратце метод основан на том, что строится игровое дерево (дерево всех возможных ходов), затем делается оценка каждого хода и выбирается ход с максимальной оценкой. Построение ведётся с предположением о том, что противник будет играть по оптимальной стратегии.
Компьютер ориентируется на самую неблагоприятную обстановку и выбирает стратегию с минимальным риском. Такие алгоритмы используются чаще в играх с полной информацией (шашки, шахматы, крестики-нолики и т.д.). Кое-что есть тут: http://www.aigroup.narod.ru/search1r.htm E-Mail: arigato.freelance@gmail.com
|
![]() |
![]() |
![]() |
#12 |
В тени
Старожил
Регистрация: 19.12.2008
Сообщений: 5,788
|
![]()
Arigato Спасибо! Попробую разобраться..
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем. ___________________________________ ___________________________________ _______ [=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль] |
![]() |
![]() |
![]() |
#13 |
В тени
Старожил
Регистрация: 19.12.2008
Сообщений: 5,788
|
![]()
Просьба оценить мой первый опыт работы с Delphi. Крестики-нолики 10x10. ))
Как мне показалось, наиболее оптимальное значение агрессивности 0,5.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем. ___________________________________ ___________________________________ _______ [=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль] |
![]() |
![]() |
![]() |
#14 |
Особый статус
Участник клуба
Регистрация: 24.11.2008
Сообщений: 1,535
|
![]()
Первый опыт удался!
Даже удивили меня, что Delphi — это не только средство «помощи» студентам!!! А каковы трудозатраты?
Формула 1 (календарь чемпионата-2016): 26.11.2016 15:55 — Абу-Даби: http://ru.wikipedia.org/wiki/Гран-при_Абу-Даби — (квалификация)! Эфир: http://lion-tv.com/28-match-tv.html
Последний раз редактировалось Sasha_Smirnov; 25.01.2009 в 05:54. Причина: вопрос и спасибо! |
![]() |
![]() |
![]() |
#15 | |
В тени
Старожил
Регистрация: 19.12.2008
Сообщений: 5,788
|
![]()
Sasha_Smirnov Спасибо )
Цитата:
Игру делал где-то сутки (полные).. Большая часть времени ушла на отладку. Как показалось, Делфи довольно легок в освоении.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем. ___________________________________ ___________________________________ _______ [=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль] |
|
![]() |
![]() |
![]() |
#16 |
Высокая репутация
СуперМодератор
Регистрация: 27.07.2008
Сообщений: 15,837
|
![]()
А чего без исходников? Вроде, ничего секретного. Компьютер часто тупит, судя по всему, он не видит границу поля и думает, что сможет походить за пределы игрового поля.
E-Mail: arigato.freelance@gmail.com
|
![]() |
![]() |
![]() |
#17 | ||
В тени
Старожил
Регистрация: 19.12.2008
Сообщений: 5,788
|
![]()
Arigato
Цитата:
Там осталось много тестовых кусков. В основном, в их названиях (переменных, объектов) присутствует слово "test". Когда программа была готова где-то наполовину, вдруг узнал, что в StrtingGrid сначала пишется номер столбца (Col), а потом строки(Row), а не наоборот.. Поэтому некоторые комменты могут быть неточными (например, относительно направления просмотра). Это меня и так сильно запутало, и я не уже не стал исправлять ) Цитата:
Возможно, дело в методе поиска хода. Программа для каждой ячейки считает длины ряда по всем направлениям (8) сначала для себя, а потом для игрока. Для каждой длины считается значение коэффициента. Коэффициенты компьютера и игрока суммируются (получаются два значения - M и N) и вычисляется конечное значение по формуле result := M + Q*N (где Q - значение агрессивности компьютера). Arigato кстати, вам отдельное спасибо за ваш пример крестиков-ноликов.. Почерпнул оттуда кое-какие идеи.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем. ___________________________________ ___________________________________ _______ [=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль] Последний раз редактировалось Sazary; 25.01.2009 в 14:51. |
||
![]() |
![]() |
![]() |
#18 |
Linux C++ Qt ARM
Старожил
Регистрация: 30.11.2008
Сообщений: 3,030
|
![]()
Ничего себе, тема оказалсь актуальна)))
Благодарю за критику, будет свободное время - постараюсь исправить. Что касается 11 неправильных ходов, у меня алгоритм "АИ" (да, в данном случае именно в ковычках) прост: функция рандома выбирает столбец и строку, а далее действует общий и для игрока и для компа алгоритм проверки допустимости хода - если он недопустим, то пишется ообщение об ошибке и ход делается снова. Просто мне неизвестен алгоритм для таких случаев, а в голову ничего умнее не пришло. Вот версия 1.1 (исходники ее) Правда она совсем не рациональная, это мой первый опыт создания чего-то своего (надоели всякие лабы, типа "ряд тейлора" или "сортировка строк матрицы") P.S. Вопрос про определение победы. Как ее определить, у меня простым перебором всех вариантов победы (благо в поле 3х3 их всего 8), а если это дело не подругом сделать, что бы алгоритм был более компактный, как это можно сделать?
Дилетант широкого профиля.
"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс Последний раз редактировалось ROD; 25.01.2009 в 16:43. |
![]() |
![]() |
![]() |
#19 |
В тени
Старожил
Регистрация: 19.12.2008
Сообщений: 5,788
|
![]()
ROD
Про определение победы..Описываю, как сделано у меня: для каждой ячейки нужно проверить 4 направления: горизонталь, вертикаль и 2 диагонали (вправо вверх и вправо вниз). Например, есть поле MxN, а длина ряда - D. Направления, в которых точно не может быть ряда нужной длины отбрасываются.. Например, цикл для проверки горизонтали будет выглядеть как-то так: Код:
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем. ___________________________________ ___________________________________ _______ [=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль] |
![]() |
![]() |
![]() |
#20 |
Новичок
Джуниор
Регистрация: 25.06.2010
Сообщений: 1
|
![]()
Возникли ошибки с изменением уровня агрессивности, играл на уровне 1: за крестики без труда удается выиграть, за нолики в принципе тоже
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
крестики нолики | aesoem | Общие вопросы Delphi | 11 | 12.06.2011 11:32 |
Крестики нолики на C++ | Alar | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 11 | 15.03.2010 16:09 |
Крестики-нолики С++ | ROD | Помощь студентам | 7 | 21.12.2008 20:07 |
Крестики - Нолики | Иваненко | Помощь студентам | 6 | 09.05.2008 22:09 |
Крестики-нолики Delphi | yulia | Помощь студентам | 12 | 18.04.2007 18:03 |