Keep track of total mines and total unknowns

This commit is contained in:
Camden Dixie O'Brien 2025-03-06 22:19:40 +00:00
parent b9fda50c95
commit 027fea745d

19
main.c
View File

@ -59,7 +59,7 @@ int main(void)
puzz_t field; puzz_t field;
memset(field, UNKNOWN, sizeof(field)); memset(field, UNKNOWN, sizeof(field));
bool solved = false; int total_mines = 0, total_unknowns = WIDTH * HEIGHT;
do { do {
int x = rand() % WIDTH; int x = rand() % WIDTH;
int y = rand() % HEIGHT; int y = rand() % HEIGHT;
@ -71,6 +71,13 @@ int main(void)
} }
update: update:
total_mines = total_unknowns = 0;
for (y = 0; y < HEIGHT; ++y) {
for (x = 0; x < WIDTH; ++x) {
total_mines += field[x][y] == MINE ? 1 : 0;
total_unknowns += field[x][y] == UNKNOWN ? 1 : 0;
}
}
for (y = 0; y < HEIGHT; ++y) { for (y = 0; y < HEIGHT; ++y) {
for (x = 0; x < WIDTH; ++x) { for (x = 0; x < WIDTH; ++x) {
if (field[x][y] == UNKNOWN || field[x][y] == MINE) if (field[x][y] == UNKNOWN || field[x][y] == MINE)
@ -92,14 +99,8 @@ int main(void)
} }
} }
} }
} while (total_mines < NMINES);
solved = true; puts(total_mines == NMINES ? "Solved" : "Died");
for (y = 0; y < HEIGHT; ++y) {
for (x = 0; x < WIDTH; ++x)
solved &= field[x][y] != UNKNOWN;
}
} while (!solved);
puts(solved ? "Solved" : "Dead");
putchar('\n'); putchar('\n');
for (int y = 0; y < HEIGHT; ++y) { for (int y = 0; y < HEIGHT; ++y) {