game state
This commit is contained in:
parent
aada552e6a
commit
06253110ac
47
main.c
47
main.c
|
@ -14,6 +14,15 @@ static inline int max(int a, int b) {
|
||||||
return a > b ? a : b;
|
return a > b ? a : b;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
typedef enum GameState {
|
||||||
|
PLAYING,
|
||||||
|
WIN,
|
||||||
|
LOSE,
|
||||||
|
} GameState;
|
||||||
|
|
||||||
|
GameState game_state = PLAYING;
|
||||||
|
|
||||||
|
int game_cap = 16*30;
|
||||||
char game[16][30] = {0};
|
char game[16][30] = {0};
|
||||||
char discover[16][30] = {0};
|
char discover[16][30] = {0};
|
||||||
|
|
||||||
|
@ -108,8 +117,9 @@ int count_bomb(int x, int y)
|
||||||
|
|
||||||
void fill_game(GameType type)
|
void fill_game(GameType type)
|
||||||
{
|
{
|
||||||
memset(game, 0, 16*30);
|
game_state = PLAYING;
|
||||||
memset(discover, 0, 16*30);
|
memset(game, 0, game_cap);
|
||||||
|
memset(discover, 0, game_cap);
|
||||||
|
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case BEGINNER:
|
case BEGINNER:
|
||||||
|
@ -197,7 +207,20 @@ int main(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
DrawRectangleRec(menu, RED);
|
Color menu_color;
|
||||||
|
switch (game_state) {
|
||||||
|
case LOSE:
|
||||||
|
menu_color = RED;
|
||||||
|
break;
|
||||||
|
case WIN:
|
||||||
|
menu_color = GREEN;
|
||||||
|
break;
|
||||||
|
case PLAYING:
|
||||||
|
menu_color = YELLOW;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
DrawRectangleRec(menu, menu_color);
|
||||||
DrawRectangleRec(grid, (Color) {
|
DrawRectangleRec(grid, (Color) {
|
||||||
.r = 255, .g = 240, .b = 172, .a = 255
|
.r = 255, .g = 240, .b = 172, .a = 255
|
||||||
});
|
});
|
||||||
|
@ -246,8 +269,24 @@ int main(void)
|
||||||
mouse_x = ((float) (mouse_x - grid_x) / grid_len) * game_size.x;
|
mouse_x = ((float) (mouse_x - grid_x) / grid_len) * game_size.x;
|
||||||
mouse_y = ((float) (mouse_y - grid_y) / grid_len) * game_size.y;
|
mouse_y = ((float) (mouse_y - grid_y) / grid_len) * game_size.y;
|
||||||
|
|
||||||
if (IsMouseButtonDown(MOUSE_BUTTON_LEFT)) {
|
if (game_state == PLAYING && IsMouseButtonDown(MOUSE_BUTTON_LEFT)) {
|
||||||
discover[mouse_y][mouse_x] = 1;
|
discover[mouse_y][mouse_x] = 1;
|
||||||
|
|
||||||
|
int count_undiscovered_cell = 0;
|
||||||
|
for (int x=0; x<game_size.x; x++) {
|
||||||
|
for (int y=0; y<game_size.y; y++) {
|
||||||
|
if (!discover[y][x])
|
||||||
|
count_undiscovered_cell++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (game_state != LOSE && count_undiscovered_cell <= nb_bomb)
|
||||||
|
game_state = WIN;
|
||||||
|
|
||||||
|
if (game[mouse_y][mouse_x] == 'X') {
|
||||||
|
memset(discover, 1, game_cap);
|
||||||
|
game_state = LOSE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
EndDrawing();
|
EndDrawing();
|
||||||
|
|
Loading…
Reference in New Issue