|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
20.02.2012, 07:50 | #1 |
Пользователь
Регистрация: 20.02.2012
Сообщений: 10
|
Пять в линию
Я написал игру пять в линию, где противниками выступают крестик и нолик.
А также ИИ, который играет за нолика. ИИ хорошо защищается и если сильно потерять бдительность, то можем составить линию. Однако проблема в том что ИИ долго думает и не любит атаковать. Прошу помочь в составлении алгоритма ИИ. Заранее спасибо) (Кому интересно исходный код и скомпилированная программа в архиве.) Последний раз редактировалось GamerZAV; 20.02.2012 в 15:16. |
20.02.2012, 21:26 | #3 |
Пользователь
Регистрация: 20.02.2012
Сообщений: 10
|
У меня это первый опыт в создании ИИ. Плюс алгоритм я постоянно менял и было быстрее везде вставить lines++. Но все равно спасибо исправлю
Пока в код коментарии добавляю. Завтра ,может быть, выложу прокоментированный. Последний раз редактировалось GamerZAV; 20.02.2012 в 21:27. Причина: Грамматическая ошибка |
20.02.2012, 21:37 | #4 |
Пользователь
Регистрация: 20.02.2012
Сообщений: 10
|
Но могу в примерно рассказать алгоритм ИИ.
Первое, он ищет четыре в ряд и ставит нолик в конце ряда. Второе, (где идут циклы до minX = 10000000) лучше из кода удалить, так как оказалось, что без них он лучше работает. Третье, (начиная с minX = 10000000 и до конца метода) идет избежание вилок и эта часть кода состоит из нескольких этапов. 1) В пустую клетку ставится нолик 2) В измененной игре поочередно в каждую пустую клетку ставится крестик 3) Считается уровень опасности 4) Добавляется к общей сумме 5) если общая сумма меньше minX, то значения mx , my , minX меняются на x, y, общую сумму 6) возврат к пункту 1) пока не пройдет все поле 7) делает ход в точку с координатами mx и my В общих чертах так |
02.05.2012, 06:52 | #5 |
Пользователь
Регистрация: 20.02.2012
Сообщений: 10
|
Решил проблему с глухой обороной теперь и атакует
|
02.05.2012, 10:32 | #6 |
Форумчанин
Регистрация: 17.12.2008
Сообщений: 250
|
кстати сразу замечание не глядя в код используетe if InvokeRequired this.Invoke() для отрисовки и запускайте вычисления асинхронно ThreadPool или TaskFactory, а то подвисание не комильфо... а про алгоритм на мой взгляд это ГА (генетический алгоритм) чистой воды... Вам нужно найти выгрышную стратегию а не хороший ход в зависимости от предыдущего состояния....а ваш медленно работает и плохо играет не успевает перебрать все варианты, да и не успеет...!!!
|
05.05.2012, 10:55 | #7 |
Пользователь
Регистрация: 20.02.2012
Сообщений: 10
|
Спасибо! Сегодня же посмотрю на эти новые классы. Играть да стал хуже после попытки наладить атаку. Я первый раз делаю ии и поэтому прошу помощи)
|
05.05.2012, 11:32 | #8 |
Форумчанин
Регистрация: 17.12.2008
Сообщений: 250
|
Еще раз повторюсь это не задача на мин макс... т.е. на поиск лучшего хода... можно сделать 5 "плохих" ходов, но которые приведут к победе, и наоборот... т.е. ваш алгоритм заведомо не верен... так что если хотите действительно сделать хороший алгоритм копайте в сторону ГА.
|
11.05.2012, 17:47 | #9 |
Пользователь
Регистрация: 20.02.2012
Сообщений: 10
|
Не получается настроить через ГА. Ну не хочет он думать логически! Ни как не получается.
|
11.05.2012, 23:34 | #10 |
Пользователь
Регистрация: 05.05.2012
Сообщений: 39
|
ГА это сильно. Думаю, надо сначала с весами клеток попробовать.
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Пять программ на математические вычисления | Водонька | Помощь студентам | 1 | 06.10.2011 00:22 |
Пять простых задачек по физике! | Helpmebro | Фриланс | 10 | 20.08.2011 01:15 |
введённый текст вывести пять раз | ziganurov2011 | Паскаль, Turbo Pascal, PascalABC.NET | 11 | 22.07.2011 17:41 |
Пять заданий по практике выручайте!!!!!!!!!! | Warfvare | Помощь студентам | 37 | 30.06.2010 10:08 |
как числа делятся на пять? | Владюшка | Помощь студентам | 4 | 28.01.2010 13:26 |