#include #include #include #include #include using namespace std; class Board { private: int width, height; int cur_x, cur_y; WINDOW *win; int n_bomb; void init_board(); int pos_to_index(int x, int y); int check_neighbours(int x, int y); void clear_cursor(); void draw_cursor(); void print_char(int c, int x, int y); void draw_cell(int x, int y); public: Board(int width, int height, WINDOW *win); void draw_board(); int open_cell(); int place_flag(); void move_cursor(int x_off, int y_off); WINDOW *get_win() { return win; }; }; Board::Board(int w, int h, WINDOW *win) { this->width = w; this->height = h; this->win = win; this->cur_x = 0; this->cur_y = 0; init_board(); draw_board(); draw_cursor(); wrefresh(win); } void Board::init_board() { } int Board::pos_to_index(int x, int y) { return (width * y) + x; } int Board::check_neighbours(int x, int y) { return 0; } void Board::clear_cursor() { draw_cell(cur_x, cur_y); } void Board::draw_cursor() { print_char('[', cur_x*3, cur_y); print_char(']', cur_x*3 + 2, cur_y); } void Board::print_char(int c, int x, int y) { wmove(win, y, x); waddch(win, c); } void Board::draw_cell(int x, int y) { print_char(' ', x*3, y); print_char(' ', x*3 + 2, y); } void Board::draw_board() { for (int y = 0; y < height; y++) { for (int x = 0; x < width; x++) { //draw_cell(x, y); //wrefresh(win); //sleep(0.01); } } } int Board::open_cell() { print_char('k', cur_x*3 + 1, cur_y); } void Board::move_cursor(int x_off, int y_off) { clear_cursor(); int new_x = cur_x + x_off; int new_y = cur_y + y_off; if (new_x >= 0 && new_x < width) cur_x = new_x; if (new_y >= 0 && new_y < height) cur_y = new_y; draw_cursor(); wrefresh(win); }