1183 / 468 / 87
Регистрация: 23.06.2009
Сообщений: 6,390
|
||||||
1 | ||||||
Интеллект компьютера в игре Крестик-Нолик01.04.2014, 22:47. Показов 3568. Ответов 6
Метки нет Все метки)
(
вот написал себе игру крестик нолик. Все нормально получилось. Просто вот не могу объяснить компьютеру как правильно думать.
У меня есть схема тактики в игре. Вот: А вот и сам код
0
|
|
01.04.2014, 22:47 | |
Ответы с готовыми решениями:
6
крестик-нолик - функция победы крестик-нолик - функция пoбеды крестик-нолик-условие ничьи Искусственный интеллект в игре |
02.04.2014, 08:55 | 2 |
Так и в чём проблема? Если
Создайте список или словарь, где ключём будет текущее состояние поля, а данными координаты хода. И выбирайте поиском. Для игры "Крестики нолики" словарь будет не такой уж и большой.
Добавлено через 4 минуты 19683 - вариантов. словарь, отсилы, полмегабайта будет, а то и меньше. А если хранить данные одной ячейки в char, то вообще 171 КБ. Компьютер будет не больше 50 мкс думать. Добавлено через 53 секунды Но это если клеточек 9 . 3X3. Добавлено через 2 минуты Вот если бы вариантов было как в шахматах, порядка 10^50, то пришлось бы обучать случайный лес или что-то подобное. А для "Крестики нолики", даже не заморачивайтесь.
0
|
02.04.2014, 11:32 | 4 | |||||
Если компьютер всегда играет нулями, то всё просто.
Я это как-то так вижу:
Только вот AI_DataBase заполнять будете сами. Туда, собственно, и запихивается стратегия игры. Добавлено через 2 минуты Можно попытаться читать из файла, или написать метод, заполняющий map при запуске. Вот справка по map и ещё на русском. Добавлено через 1 минуту Только не пытайтесь использовать данный метод для чего-то сложнее, чем крестики нолики. Так обычно не делают, но задача слишком уж простая, что бы настоящий AI подключать.
0
|
1183 / 468 / 87
Регистрация: 23.06.2009
Сообщений: 6,390
|
|
02.04.2014, 12:50 [ТС] | 5 |
Спасибо большое конечно за код, но я открыл пост для того чтобы помогли создать стратегию. Сам то могу, но будет ооочень много усл. операторов if ..else
Думаю чтобы сократить кол-во усл. операторов, можно использовать циклы, но как?
0
|
02.04.2014, 13:08 | 6 | |||||
Какие циклы? Какие условные операторы? Вам нужно просто заполнить AI_DataBase. Можно на крайний случай запустить кучу игр со случайными ходами, в конце каждой из которых программа будет прибавлять веса ходам победителя и убавлять ходам проигравшего.
Т.е. тут у вас получится что-то вроде:
Добавлено через 4 минуты Если хотите совсем заморочиться, то можно сохранить и map<XOmap,map<XOstep, int>> AllSteps; и после каждой игры плюсовать ходы, если выиграл или минусовать, если проиграл. И ваш компьютер будет в добавок самообучаем. Только тогда придётся периодически пересматривать AI_DataBase. PS: Я как-то давноым давно пытался так шашки написать. Работало неимоверно долго, но играло неплохо. Но в шашках куда больше вариантов, а вот для крестиков и ноликов думаю как раз подойдёт. Добавлено через 3 минуты Это просто попытка запомнить все ходы влоб. Только вместо точного алгоритма поиска используется эвристический. Но можно и точный, т.е. просто перебрать все возможные партии, хотя это, мне кажется, даже для "Крестики нолики" будет слишком.
0
|
1183 / 468 / 87
Регистрация: 23.06.2009
Сообщений: 6,390
|
|
02.04.2014, 19:56 [ТС] | 7 |
НеСказочник, я с картами и ключами не знаком. Поэтому и говорю помогите мне с кодом.
0
|
02.04.2014, 19:56 | |
Помогаю со студенческими работами здесь
7
Интеллект бота в игре "Покер на костях" Реализация компьютера в игре Зависание компьютера в игре WWT Выключение компьютера при игре CS:GO Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |