Форум программистов, компьютерный форум CyberForum.ru

Интеллект компьютера в игре Крестик-Нолик - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Выполнить сортировку по убыванию. Пирамидальная сортировка http://www.cyberforum.ru/cpp-beginners/thread1136392.html
Выполнить сортировку по убыванию. Пирамидальная сортировка и сортировка слияния. Размерность массива меняется от 10 до 100 шагом 10. Массив заполнен случайным образом (неупорядочен). template< class T > void downHeap(T a, long k, long n) { // процедура просеивания следующего элемента // До процедуры: a...a - пирамида // После: a...a - пирамида T new_elem;
C++ Проверить что цифры данного трехзначного числа образуют возрастающую последовательность 1 Проверить истинность высказывания: "Цифры данного трехзначного числа образуют возрастающую последовательность" помогите написать программу :( Добавлено через 29 минут Что не кто не знает? мне надо с операторами if , else http://www.cyberforum.ru/cpp-beginners/thread1136332.html
Определить попадание произвольной точки в заштрихованную область C++
Помогите пожалуйста, не могу сделать эту задачу (С++)
Определить количество элементов файла, величина которых меньше среднего арифметического всех элементов данного файла C++
В файле находятся вещественные числа. Определить количество элементов файла, величина которых меньше среднего арифметического всех элементов данного файла. Мой код, который следует дополнить, пока выглядит вот так: #include <stdio.h> #include <conio.h> int main() { int n,i; float m; char str,str1,ch;
C++ Вычислить значение заданной функции y = f(x) на данном интервале [a,b] с заданным шагом \Delta x http://www.cyberforum.ru/cpp-beginners/thread1136303.html
Вычислить значение заданной функции y = f(x) на данном интервале с заданным шагом \Delta X y=ln\frac{x+1}{x} x\epsilon \Delta x=0.5 Напишите программу пожалуйста =*
C++ Словари и множества. SET MAP Помогите с задачей Пишите задачу в тело сообщения! подробнее

Показать сообщение отдельно
НеСказочник
58 / 46 / 7
Регистрация: 12.11.2012
Сообщений: 344
Записей в блоге: 2
02.04.2014, 13:08
Цитата Сообщение от ^Tecktonik_KiLLeR Посмотреть сообщение
будет ооочень много усл. операторов if ..else
Думаю чтобы сократить кол-во усл. операторов, можно использовать циклы, но как?
Какие циклы? Какие условные операторы? Вам нужно просто заполнить AI_DataBase. Можно на крайний случай запустить кучу игр со случайными ходами, в конце каждой из которых программа будет прибавлять веса ходам победителя и убавлять ходам проигравшего.
Т.е. тут у вас получится что-то вроде:
C++
1
map<XOmap,map<XOstep, int>> AllSteps;
Т.е. каждому состоянию поля соответствует map, в котором ключи - это ходы, а значения - их веса. Компьютер обучается Только один раз за всю жизнь. Играет случайно сам с собой до победы, потом Вы берёте каждый ход победителя (в связке с текущим состоянием поля, конечно) и увеличиваете его вес на 1, а у ходов проигравшего все веса уменьшить на 1. Прокрутить несколько миллионов игр для современного компа не вопрос. Потом из каждой карты map<XOstep, int> Вы выбираете тот XOstep, чей вес максимален и ставите его значением для соответствующей XOmap в map<XOmap,XOstep> AI_DataBase;. После чего AI_DataBase пишется в файл, любым удобным для вас образом, и это и будет ваша база знаний.

Добавлено через 4 минуты
Если хотите совсем заморочиться, то можно сохранить и map<XOmap,map<XOstep, int>> AllSteps; и после каждой игры плюсовать ходы, если выиграл или минусовать, если проиграл. И ваш компьютер будет в добавок самообучаем. Только тогда придётся периодически пересматривать AI_DataBase.


PS: Я как-то давноым давно пытался так шашки написать. Работало неимоверно долго, но играло неплохо. Но в шашках куда больше вариантов, а вот для крестиков и ноликов думаю как раз подойдёт.

Добавлено через 3 минуты
Это просто попытка запомнить все ходы влоб. Только вместо точного алгоритма поиска используется эвристический. Но можно и точный, т.е. просто перебрать все возможные партии, хотя это, мне кажется, даже для "Крестики нолики" будет слишком.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru