clickable mode, waiting for sprite
This commit is contained in:
parent
116ad70894
commit
d3fa107bc7
77
main.c
77
main.c
|
@ -33,7 +33,7 @@ typedef enum GameType {
|
||||||
EXPERT,
|
EXPERT,
|
||||||
} GameType;
|
} GameType;
|
||||||
|
|
||||||
GameType current_game_type = INTERMEDIATE;
|
GameType current_game_type = BEGINNER;
|
||||||
|
|
||||||
typedef struct Vec2i {
|
typedef struct Vec2i {
|
||||||
int x;
|
int x;
|
||||||
|
@ -42,6 +42,7 @@ typedef struct Vec2i {
|
||||||
|
|
||||||
Vec2i game_size;
|
Vec2i game_size;
|
||||||
int nb_bomb;
|
int nb_bomb;
|
||||||
|
int nb_bomb_pad = 9;
|
||||||
char *nb_bomb_text;
|
char *nb_bomb_text;
|
||||||
|
|
||||||
int screen_width = 500;
|
int screen_width = 500;
|
||||||
|
@ -52,6 +53,8 @@ int grid_len = 0;
|
||||||
|
|
||||||
Rectangle grid = {0};
|
Rectangle grid = {0};
|
||||||
|
|
||||||
|
const Color text_color = RED;
|
||||||
|
|
||||||
#define INIT_TEXTURE(img, tex) \
|
#define INIT_TEXTURE(img, tex) \
|
||||||
Image img = {0}; \
|
Image img = {0}; \
|
||||||
Texture tex = {0}
|
Texture tex = {0}
|
||||||
|
@ -134,18 +137,21 @@ void fill_game(void)
|
||||||
game_size.x = 9;
|
game_size.x = 9;
|
||||||
game_size.y = 9;
|
game_size.y = 9;
|
||||||
nb_bomb = 10;
|
nb_bomb = 10;
|
||||||
|
nb_bomb_pad = 13;
|
||||||
nb_bomb_text = "10";
|
nb_bomb_text = "10";
|
||||||
break;
|
break;
|
||||||
case INTERMEDIATE:
|
case INTERMEDIATE:
|
||||||
game_size.x = 16;
|
game_size.x = 16;
|
||||||
game_size.y = 16;
|
game_size.y = 16;
|
||||||
nb_bomb = 40;
|
nb_bomb = 40;
|
||||||
|
nb_bomb_pad = 9;
|
||||||
nb_bomb_text = "40";
|
nb_bomb_text = "40";
|
||||||
break;
|
break;
|
||||||
case EXPERT:
|
case EXPERT:
|
||||||
game_size.x = 16;
|
game_size.x = 16;
|
||||||
game_size.y = 30;
|
game_size.y = 30;
|
||||||
nb_bomb = 99;
|
nb_bomb = 99;
|
||||||
|
nb_bomb_pad = 9;
|
||||||
nb_bomb_text = "99";
|
nb_bomb_text = "99";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -214,11 +220,11 @@ void zero_click(int x, int y)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int collision(Rectangle rec, int x, int y)
|
int collision(Vec2i coord, Texture text, int x, int y)
|
||||||
{
|
{
|
||||||
return
|
return
|
||||||
x > rec.x && x < rec.x + rec.width &&
|
x > coord.x && x < coord.x + text.width &&
|
||||||
y > rec.y && y < rec.y + rec.height;
|
y > coord.y && y < coord.y + text.height;
|
||||||
}
|
}
|
||||||
|
|
||||||
void reload_game(void)
|
void reload_game(void)
|
||||||
|
@ -324,10 +330,14 @@ int main(void)
|
||||||
|
|
||||||
Vec2i smiley_coord = {menu.width/2 - menu_smiley->width/2, 0};
|
Vec2i smiley_coord = {menu.width/2 - menu_smiley->width/2, 0};
|
||||||
DrawTexture( *menu_smiley, smiley_coord.x, smiley_coord.y, WHITE);
|
DrawTexture( *menu_smiley, smiley_coord.x, smiley_coord.y, WHITE);
|
||||||
DrawTexture(
|
|
||||||
camera_texture,
|
Vec2i camera_coord = {
|
||||||
menu.width/2 - menu_smiley->width/2 - camera_texture.width -10,
|
menu.width/2 - menu_smiley->width/2 - camera_texture.width -10,
|
||||||
menu.height/2 - camera_texture.height/2,
|
menu.height/2 - camera_texture.height/2,
|
||||||
|
};
|
||||||
|
DrawTexture(
|
||||||
|
camera_texture,
|
||||||
|
camera_coord.x, camera_coord.y,
|
||||||
WHITE
|
WHITE
|
||||||
);
|
);
|
||||||
DrawTexture(
|
DrawTexture(
|
||||||
|
@ -337,7 +347,27 @@ int main(void)
|
||||||
WHITE
|
WHITE
|
||||||
);
|
);
|
||||||
DrawText(nb_bomb_text,
|
DrawText(nb_bomb_text,
|
||||||
menu.width - fixed_tile_texture.width + 9, 13, 30, RED);
|
menu.width - fixed_tile_texture.width + nb_bomb_pad,
|
||||||
|
13, 30, text_color
|
||||||
|
);
|
||||||
|
|
||||||
|
int diff_pad = 10;
|
||||||
|
Vec2i diff_button[3] = {0};
|
||||||
|
char *diff_name[3] = {"BEGINNER", "INTERMEDIATE", "EXPERT"};
|
||||||
|
for (int i=0; i<3; i++) {
|
||||||
|
diff_button[i] = (Vec2i) {
|
||||||
|
fixed_tile_texture.width*i + diff_pad*i, 0
|
||||||
|
};
|
||||||
|
DrawTexture(
|
||||||
|
fixed_tile_texture, // TODO: double_fixed_tile_texture
|
||||||
|
diff_button[i].x, diff_button[i].y,
|
||||||
|
WHITE
|
||||||
|
);
|
||||||
|
DrawText(diff_name[i],
|
||||||
|
diff_button[i].x + 9, diff_button[i].y + 15,
|
||||||
|
20, text_color
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
DrawRectangleRec(grid, (Color) {
|
DrawRectangleRec(grid, (Color) {
|
||||||
.r = 0xC6, .g = 0xC6, .b = 0xC6, .a = 255
|
.r = 0xC6, .g = 0xC6, .b = 0xC6, .a = 255
|
||||||
|
@ -366,7 +396,7 @@ int main(void)
|
||||||
|
|
||||||
DrawTexture(
|
DrawTexture(
|
||||||
*tex,
|
*tex,
|
||||||
grid.x + grid.width/ game_size.x * x,
|
grid.x + grid.width/game_size.x * x,
|
||||||
grid.y + grid.height/game_size.y * y,
|
grid.y + grid.height/game_size.y * y,
|
||||||
WHITE
|
WHITE
|
||||||
);
|
);
|
||||||
|
@ -416,15 +446,34 @@ int main(void)
|
||||||
game_state = LOSE;
|
game_state = LOSE;
|
||||||
}
|
}
|
||||||
} else if (mouse_in_menu) {
|
} else if (mouse_in_menu) {
|
||||||
if (collision(
|
if (collision(smiley_coord, playing_texture,
|
||||||
(Rectangle){
|
mouse_x, mouse_y))
|
||||||
smiley_coord.x, smiley_coord.y,
|
|
||||||
playing_texture.width, playing_texture.height
|
|
||||||
}, mouse_x, mouse_y)
|
|
||||||
)
|
|
||||||
{
|
{
|
||||||
reload_game();
|
reload_game();
|
||||||
}
|
}
|
||||||
|
if (collision(camera_coord, camera_texture,
|
||||||
|
mouse_x, mouse_y))
|
||||||
|
{
|
||||||
|
TakeScreenshot("minesweeper-screenshot.png");
|
||||||
|
}
|
||||||
|
if (collision(diff_button[0], fixed_tile_texture,
|
||||||
|
mouse_x, mouse_y))
|
||||||
|
{
|
||||||
|
current_game_type = BEGINNER;
|
||||||
|
reload_game();
|
||||||
|
}
|
||||||
|
if (collision(diff_button[1], fixed_tile_texture,
|
||||||
|
mouse_x, mouse_y))
|
||||||
|
{
|
||||||
|
current_game_type = INTERMEDIATE;
|
||||||
|
reload_game();
|
||||||
|
}
|
||||||
|
if (collision(diff_button[2], fixed_tile_texture,
|
||||||
|
mouse_x, mouse_y))
|
||||||
|
{
|
||||||
|
current_game_type = EXPERT;
|
||||||
|
reload_game();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
EndDrawing();
|
EndDrawing();
|
||||||
|
|
Loading…
Reference in New Issue