И это всё МОЁ
Пытаюсь сделать соперника компьютера, игра сама похожа на доту только шашками, нужно используя ходы вверх,вниз,влево и вправо за ход пройти мимо шашек соперника и раньше встать на позиции соперника изначальные по очереди, клетки 8*8 поля, 9 твоих и 9 соперника, надо пройти по диагонали из угла в угол. проблема в том что шашки не могут проходить через друг друга и стоит выбор в выборе могущей походить, только у меня рекурсия и stack overfow выпадает когда я не выбиваю из массива те которые походить не могут
bool Game::Move_UpAI(int i,int j)
{
if (i != 0 && Matrix[i - 1][j] == 0)
{
Matrix[i - 1][j] = Matrix[i][j];
Matrix[i][j] = 0;
ChessY[Matrix[i][j] - 1] += 0.2;
std::cout << "MoveUp AI" << std::endl;
return true;
}
else
return false;
}
void Game::ReccurentWalk(int numbernotuse)
{
current = -1, currentI = -1, currentJ = -1;
for (int i = 10; i < 18; i++)
if (!ai[i] )
{
current = i;
if (current == numbernotuse)
continue;
break;
}
for (int i = 0; i < 8; i++)
for (int j = 0; j < 8; j++)
if (Matrix[i][j] == current)
{
currentI = i;
currentJ = j;
break;
}
if (!Move_UpAI(currentI, currentJ))
if(!Move_LeftAI(currentI, currentJ))
{
ReccurentWalk(current);
}
// Move_LeftAI(currentI, currentJ);
}
void Game::AI()
{
if (secondplayer)
{
secondplayer = false;
firstplayer = true;
ReccurentWalk(-2);
if (currentI == 0 && currentJ == 0)
{
ai[9] = true;
ReccurentWalk(9);
}