Так что я занимаюсь шахматной игрой, однако я не могу правильно перемещать часть епископа.C++ - Ошибка шахматного Bishop MoveCode?
Это моя шахматная доска:
string board[8][8] = {
{"_" , "_", "_" , "_" ,"_", "_" , "_" , "_"},
{"_" , "_", "_" , "_" ,"_", "_" , "_" , "_"},
{"_" , "_", "_" , "_" ,"_", "B" , "_" , "_"},
{"_" , "_", "_" , "_" ,"_", "_" , "_" , "_"},
{"_" , "_", "_" , "_" ,"_", "_" , "_" , "_"},
{"_" , "_", "_" , "_" ,"_", "_" , "_" , "_"},
{"_" , "_", "_" , "_" ,"_", "_" , "_" , "_"},
{"_" , "_", "_" , "_" ,"_", "_" , "_" , "_"} };
Вот функция Draw, чтобы нарисовать доску.
void Draw()
{
for(int i = 0; i < 8; i++)
{
for(int j = 0; j < 8; j++)
std::cout << board[ i ][ j ] << ' ';
std::cout << '\n';
}
cout<<"\n";
}
Епископский код движения до сих пор.
if (board[x][y] == "B")
{ //Highlight the users chosen piece
board[x][y] = "\033[0;31mB\033[0m";
//Now showing available moves the chosen bishop can move to
for(int counter=1; counter <=7; counter++) {
if(board[x+counter][y+counter] == "_") { //if there is an empty space, then place X to show peice can move there
board[x+counter][y+counter] = "X";
}
else { //if cannot move their ,then break
break;
}
}
}
Это моя проблема. Он показывает пробелы X, которые кусок может перемещаться к пользователю в некоторых местах на доске. однако, когда кусок находится в определенных местах массива, как место, которое оно находится в коде платы. Он перекрывает и показывает Xs на другой стороне платы, вместо того, чтобы останавливать рисование Xs, когда их нет «_».
Вы пытались выполнить свой код с помощью отладчика? –
У вас превышены и недоиспользуются индексы платы [x + counter] [y + counter]. – PanicSheep
кроме комментария @ PanicSheep, епископ также движется назад. – bansi