다차원 배열을 더 잘 이해하기 위해 모든 요소에 대해 -1로 초기화되는 3x3 배열을 의미하는 tic-tac-toe 프로그램을 작성합니다.C : 매트릭스 요소에 대한 부울 테스트
행/열/대각선의 모든 요소가 같고 (비어 있지 않으므로 -1과 다른 경우) "win"조건이 true가되도록하려고합니다.
하지만 저는 계속해서 승리해야합니다 ...하지 말아야 할 때, 게임은 끝나야 할 때까지 계속됩니다. 어떻게 해결할 수 있습니까? 운영자가 C로는 이행하지 않는
#define GRID_SIZE 3
#define EMPTY -1
#define PLAYER0 0
#define PLAYER1 1
printf("Player %d turn: Insert the tile coordinates\n", player);
scanf("%d %d", &x, &y);
/* Update tile */
if (player == PLAYER0)
grid[x][y] = PLAYER0;
else
grid[x][y] = PLAYER1;
/* Winning diagonals? */
i = 0;
d1 = ((grid[i][i] == grid[i+1][i+1] == grid[i+2][i+2]) && (grid[i][i] != EMPTY));
d2 = ((grid[i][GRID_SIZE-i-1] == grid[i+1][GRID_SIZE-i] == grid[i+2][GRID_SIZE-i+1]) && (grid[i][GRID_SIZE-i-1] != EMPTY));
if ((d1) || (d2)) {
printf("Player %d wins!\n", player);
victory_or_draw = 1;
}
/* Winning rows or column? */
for (j = 0; j < GRID_SIZE; ++j) {
row = ((grid[i][j] == grid[i+1][j] == grid[i+2][j]) && (grid[i][j] != EMPTY));
column = ((grid[j][i] == grid[j][i+1] == grid[j][i+2]) && (grid[j][i] != EMPTY));
if ((row) || (column)) {
printf("Player %d wins!\n", player);
victory_or_draw = 1;
}
}
감사합니다. 처음에는 의심의 여지가 있었지만 항의하지 않는 컴파일러에 속았습니다 ... 어쨌든 체크 했어야했습니다. – Marzian