C++ Минимакс мини-шахматыC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 C++ Минимакс мини-шахматы

Сообщение Anonymous »

У меня есть шахматная партия, и я пытаюсь минимаксить ее. Например, у меня есть мини-версия шахмат 4x4, но я не могу помочь минимаксу найти оптимальное решение.
Вы заметите, что функция оценки возвращает +1000, если я проверил мат. , но, я ни разу не получал значения больше +1000, я имею в виду в том месте, где я перечисляю val (лучший ход), но я например нашел мат соперника т.е. значения ниже -1000.Должно быть, где-то у меня ошибка, но мы не можем ее обнаружить.
Управляя программой, чередуя ходы игрока и компьютера, я замечаю, что делаю ход дальше копию, а затем передать ее в функцию minimaxAlg, где запускается проигрыватель

Код: Выделить всё

void CGame::minimaxAlphaBeta(int depth, Color color, bool random)
{
while(!isFinished())
{
if(color == m_Player)
{
if(random)
makeRandomMove(m_Player);
}
else
{
int bestVal = INT_MIN;
CPosition bestFromPosition;
CPosition bestToPosition;

auto& playableMoves = (m_Computer == Color::WHITE) ? m_WhitePlayable : m_BlackPlayable;

for(auto &[from, to] : playableMoves)
{
CGame gameCopy = *this;
gameCopy.makeMove(from, to, m_Computer, true);

int val = gameCopy.minimaxAlphaBetaAlg(gameCopy, depth, INT_MIN, INT_MAX, false, gameCopy.m_Player);
cout 

Подробнее здесь: [url]https://stackoverflow.com/questions/78530637/c-minimax-mini-chess[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»