char Chessboard[8][8] = {'r', 'n', 'b', 'q', 'k', 'b', 'n', 'r', '*', '*', '*', '*', '*', '*', '*', '*',\
'.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', \
'.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '+', '+', '+', '+', '+', '+', '+', '+',\
'R', 'N', 'B', 'Q', 'K', 'B', 'N', 'R'}; //Initializing board
所以,我有这个棋盘,我想把它转过来让它面对对手,也就是倒转阵列,这样价值就会颠倒过来。我只需要一个程序来反转这个数组并将它存储在数组Chessboard中,这样它就不仅仅是一个printf函数。
有人可以帮助我吗?
答案 0 :(得分:1)
真的很简单。这不是逆转,而是旋转180度。就坐标而言,您只需将i,j
映射到7-i,7-j
。
你为董事会制作了一个类型:
typedef char Board[8][8];
然后你会使用这个功能:
Board reversed(const Board board)
{
Board result;
for (int i=0; i<8; i++)
for (int j=0; j<8; j++)
result[i,j] = board[7-i,7-j];
return result;
}
答案 1 :(得分:0)
这听起来像某人的CS家庭作业一样令人怀疑....祝你在嵌套循环测试中好运: - )
int i, j;
for(i=0;i<4;i++){
//just give each entry the value of its mirror by doing a swap
for(j=0;j<8;j++){
char tmp = Chessboard[i][j];
Chessboard[i][j] = Chessboard[7-i][7-j];
Chessboard[7-i][7-j] = tmp;
}
}