69 lines
1.5 KiB
C
69 lines
1.5 KiB
C
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <time.h>
|
|
|
|
typedef struct Board {
|
|
char* board;
|
|
int width, height, mine_rng;
|
|
} Board;
|
|
|
|
typedef enum Difficulty {
|
|
Easy,
|
|
Medium,
|
|
Hard
|
|
} Difficulty;
|
|
|
|
Board create_board(Difficulty difficulty) {
|
|
Board board = { 0 };
|
|
|
|
switch(difficulty) {
|
|
case Easy:
|
|
board.width = 25;
|
|
board.height = 25;
|
|
board.mine_rng = 10;
|
|
break;
|
|
|
|
case Medium:
|
|
board.width = 35;
|
|
board.height = 35;
|
|
board.mine_rng = 7;
|
|
break;
|
|
|
|
case Hard:
|
|
board.width = 50;
|
|
board.height = 50;
|
|
board.mine_rng = 5;
|
|
break;
|
|
}
|
|
|
|
board.board = calloc(sizeof(char), board.width * board.height);
|
|
return board;
|
|
}
|
|
|
|
void generate_board(Board board) {
|
|
for(int x = 0; x < board.width; x++) {
|
|
for(int y = 0; y < board.height; y++) {
|
|
int index = y * board.width + x;
|
|
if(rand() % board.mine_rng == 0)
|
|
board.board[index] = 'b';
|
|
else
|
|
board.board[index] = ' ';
|
|
}
|
|
}
|
|
}
|
|
|
|
void print_board(Board board) {
|
|
for(int x = 0; x < board.width; x++) {
|
|
for(int y = 0; y < board.height; y++)
|
|
printf("%c", board.board[y * board.width + x]);
|
|
printf("\n");
|
|
}
|
|
}
|
|
|
|
int main() {
|
|
srand(time(NULL));
|
|
Board board = create_board(Easy);
|
|
generate_board(board);
|
|
print_board(board);
|
|
}
|