この課題で困っています。マインスイーパ風の配列を作成することになっています。ファイルを読み取ります:
100
3
0 0
2 1
7 7
10
0 0
0 1
0 2
0 3
0 4
0 5
0 6
0 7
7 0
7 1
最初の行はボードの数 (100) で、2 行目はボード内の爆弾の数です。2 つの整数行は、それぞれ爆弾の位置の行と列です。
私の問題は、ボードが 1 つしか印刷されないことです。2 番目の質問は、ボードの 9 を * に切り替えるにはどうすればよいですか?
ありがとう!
#include <stdio.h>
#define BOARD_SIZE 8
#define BOMB 9
int main() {
FILE *fp;
fp = fopen("mine.txt","r");
int numberBoards = 0;
int numberMines = 0;
int col;
int row;
int currentBoard = 0;
// first row is going to be the number of boards
fscanf(fp,"%d",&numberBoards);
while ( fscanf(fp,"%d",&numberMines) > 0 ) {
int i,j;
// start board with all zeros
int board[BOARD_SIZE][BOARD_SIZE] = { {0} };
currentBoard++;
printf("Board #%d:\n",currentBoard);
//Read in the mines and set them
for (i=0; i<numberMines; i++) {
fscanf(fp,"%d %d",&col,&row);
board[col-1][row-1] = BOMB;
}
//mine proximity
for (i=0; i<BOARD_SIZE; i++) {
for (j=0; j<BOARD_SIZE; j++) {
if ( board[i][j] == BOMB ) {
//Square to the left
if (j > 0 && board[i][j-1] != BOMB) {
board[i][j-1]++;
}
//Square to the right
if (j < 0 && board [i][j+1] !=BOMB){
board [i][j+1]++;
}
//Square to the top
if (i > 0 && board [i-1][j] !=BOMB) {
board [i-1][j]++;
}
//Square to the bottom
if ( i < 0 && board [i+1][j] !=BOMB){
board [i+1][j]++;
}
}
}
//Print out the minesweeper board
for (i=0; i<BOARD_SIZE; i++) {
for (j=0; j<BOARD_SIZE; j++) {
printf("%d ",board[i][j]);
}
printf("\n");
}
printf("\n");
}
//Close the file.
fclose(fp);
return 0;
}
}