Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.01.2009, 18:34   #11
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 16,216
По умолчанию

Мини-максный поиск - это из теории игр. В кратце метод основан на том, что строится игровое дерево (дерево всех возможных ходов), затем делается оценка каждого хода и выбирается ход с максимальной оценкой. Построение ведётся с предположением о том, что противник будет играть по оптимальной стратегии.
Компьютер ориентируется на самую неблагоприятную обстановку и выбирает стратегию с минимальным риском.
Такие алгоритмы используются чаще в играх с полной информацией (шашки, шахматы, крестики-нолики и т.д.).
Кое-что есть тут:
http://www.aigroup.narod.ru/search1r.htm
Arigato вне форума Ответить с цитированием
Старый 23.01.2009, 18:46   #12
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Arigato Спасибо! Попробую разобраться..
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 25.01.2009, 02:21   #13
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Просьба оценить мой первый опыт работы с Delphi. Крестики-нолики 10x10. ))
Как мне показалось, наиболее оптимальное значение агрессивности 0,5.
Вложения
Тип файла: rar Krestiki-noliki-10x10.rar (182.0 Кб, 171 просмотров)
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 25.01.2009, 03:32   #14
Sasha_Smirnov
Особый статус
Участник клуба
 
Аватар для Sasha_Smirnov
 
Регистрация: 24.11.2008
Сообщений: 1,535
По умолчанию

Первый опыт удался!
Даже удивили меня, что Delphi — это не только средство «помощи» студентам!!!
А каковы трудозатраты?
Изображения
Тип файла: jpg Capture.jpg (51.5 Кб, 241 просмотров)

Последний раз редактировалось Sasha_Smirnov; 25.01.2009 в 05:54. Причина: вопрос и спасибо!
Sasha_Smirnov вне форума Ответить с цитированием
Старый 25.01.2009, 13:18   #15
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Sasha_Smirnov Спасибо )
Цитата:
А каковы трудозатраты?
Не могу сказать, что большие..
Игру делал где-то сутки (полные).. Большая часть времени ушла на отладку.
Как показалось, Делфи довольно легок в освоении.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 25.01.2009, 14:22   #16
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 16,216
По умолчанию

Цитата:
Сообщение от Sazary Посмотреть сообщение
Просьба оценить мой первый опыт работы с Delphi. Крестики-нолики 10x10. ))
Как мне показалось, наиболее оптимальное значение агрессивности 0,5.
А чего без исходников? Вроде, ничего секретного. Компьютер часто тупит, судя по всему, он не видит границу поля и думает, что сможет походить за пределы игрового поля.
Arigato вне форума Ответить с цитированием
Старый 25.01.2009, 14:45   #17
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Arigato
Цитата:
А чего без исходников?
Просто там бардак, т.к. писал для себя ) Прикладываю.

Там осталось много тестовых кусков. В основном, в их названиях (переменных, объектов) присутствует слово "test".
Когда программа была готова где-то наполовину, вдруг узнал, что в StrtingGrid сначала пишется номер столбца (Col), а потом строки(Row), а не наоборот.. Поэтому некоторые комменты могут быть неточными (например, относительно направления просмотра). Это меня и так сильно запутало, и я не уже не стал исправлять )

Цитата:
Компьютер часто тупит, судя по всему, он не видит границу поля и думает, что сможет походить за пределы игрового поля.
С этим были проблемы, но, вроде как, они были решены.
Возможно, дело в методе поиска хода. Программа для каждой ячейки считает длины ряда по всем направлениям (8) сначала для себя, а потом для игрока. Для каждой длины считается значение коэффициента. Коэффициенты компьютера и игрока суммируются (получаются два значения - M и N) и вычисляется конечное значение по формуле result := M + Q*N (где Q - значение агрессивности компьютера).

Arigato кстати, вам отдельное спасибо за ваш пример крестиков-ноликов.. Почерпнул оттуда кое-какие идеи.
Вложения
Тип файла: rar Krestiki-noliki-10x10 + src.rar (185.5 Кб, 135 просмотров)
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]

Последний раз редактировалось Sazary; 25.01.2009 в 14:51.
Sazary вне форума Ответить с цитированием
Старый 25.01.2009, 16:32   #18
ROD
Linux C++ Qt ARM
Старожил
 
Аватар для ROD
 
Регистрация: 30.11.2008
Сообщений: 3,030
По умолчанию

Ничего себе, тема оказалсь актуальна)))

Благодарю за критику, будет свободное время - постараюсь исправить.

Что касается 11 неправильных ходов, у меня алгоритм "АИ" (да, в данном случае именно в ковычках) прост: функция рандома выбирает столбец и строку, а далее действует общий и для игрока и для компа алгоритм проверки допустимости хода - если он недопустим, то пишется ообщение об ошибке и ход делается снова.

Просто мне неизвестен алгоритм для таких случаев, а в голову ничего умнее не пришло.

Вот версия 1.1 (исходники ее)

Правда она совсем не рациональная, это мой первый опыт создания чего-то своего (надоели всякие лабы, типа "ряд тейлора" или "сортировка строк матрицы")

P.S.

Вопрос про определение победы.

Как ее определить, у меня простым перебором всех вариантов победы (благо в поле 3х3 их всего 8), а если это дело не подругом сделать, что бы алгоритм был более компактный, как это можно сделать?
Вложения
Тип файла: txt Крестики-нолики (исходник)txt.txt (4.8 Кб, 246 просмотров)
Дилетант широкого профиля.

"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс

Последний раз редактировалось ROD; 25.01.2009 в 16:43.
ROD вне форума Ответить с цитированием
Старый 25.01.2009, 17:05   #19
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

ROD
Про определение победы..Описываю, как сделано у меня:
для каждой ячейки нужно проверить 4 направления: горизонталь, вертикаль и 2 диагонали (вправо вверх и вправо вниз).
Например, есть поле MxN, а длина ряда - D. Направления, в которых точно не может быть ряда нужной длины отбрасываются..
Например, цикл для проверки горизонтали будет выглядеть как-то так:
Код:
for(i=0;i<M;i++)
for(j=0;i<=N-D;i++)
  {
   fl := true; //изначально считаем, что ряд нужной длины есть
   for(k=j+1;k<N;k++)
     if (mass[i,k]!=mass[i,k-1]) 
       {  fl:=false;
           break; }
    if (fl) return 1; //возвращаем код победы
   }
Примерно так.. Этот алгоритм я использовал в своих крестиках-ноликах (постом выше).
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 25.06.2010, 22:30   #20
kamikadze67
Новичок
Джуниор
 
Регистрация: 25.06.2010
Сообщений: 1
По умолчанию

Цитата:
Сообщение от Sazary Посмотреть сообщение
Просьба оценить мой первый опыт работы с Delphi. Крестики-нолики 10x10. ))
Как мне показалось, наиболее оптимальное значение агрессивности 0,5.
Возникли ошибки с изменением уровня агрессивности, играл на уровне 1: за крестики без труда удается выиграть, за нолики в принципе тоже
kamikadze67 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
крестики нолики 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