我目前处于其中一个编码任务的中间,我们为逆转游戏(奥赛罗)创建了一个游戏板,给它一些初始条件,并检查移动的合法性。
代码首先向用户询问电路板的尺寸(边长),并使用一个功能初始化电路板,另一个用于打印电路板。
我的代码适用于boardDim = 4和boardDim = 6,但是当我输入8时,在负责初始化电路板的函数执行其所有语句之后,boardDim的值跳转到类似21568的值并导致分段错误注意:实验室讲义说我们可以假设板的边长不会超过26 谢谢你的阅读!
这是我的代码:
void InitBoard(char reversiBoard[][26], const int a) {
for (int i = 0; i < a; i++) {
for (int j = 0; j < a; j++) {
if ((i == (a / 2 - 1)) && (j == (a / 2 - 1))) {
reversiBoard[i][j] = 'W';
}
else if ((i == (a / 2 - 1)) && (j == a / 2)) {
reversiBoard[i][j] = 'B';
}
else if ((i == a / 2) && (j == (a / 2 - 1))) {
reversiBoard[i][j] = 'B';
}
else if ((i == a / 2) && (j == a / 2)) {
reversiBoard[i][j] = 'W';
}
else {
reversiBoard[i][j] = 'U';
}
}
}
return;
}
void printBoardCurr(char reversiBoard[][26], const int a) {
char alphabet[] = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z' };
printf(" ");
for (int i = 0; i < a; i++) {
printf("%c", (alphabet[i]));
}
printf("\n\n");
for (int j = 0; j < a; j++) {
printf("%c ", (alphabet[j]));
for (int k = 0; k < a; k++) {
printf("%c", reversiBoard[j][k]);
}
printf("\n");
}
return;
}
int main(void) {
int boardDim = 0;
printf("Enter the board dimension: ");
scanf(" %d", &boardDim);
char reversiBoard[boardDim][boardDim];
InitBoard(reversiBoard, boardDim);
printBoardCurr(reversiBoard, boardDim);
return 0;
}