Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <boost/config.hpp>
- #include <regex>
- #include "../include/view.h"
- struct BOOST_SYMBOL_VISIBLE view_pretty : abstract_view {
- private:
- static const int width_field = 50;
- static const int heigth_field = 30;
- static const int height_cell = 5;
- static const int width_cell = 3;
- static void print_cell_border() {
- std::cout << " ";
- for (int j = 0; j < width_field; j++) {
- if (j % height_cell == 0) {
- std::cout << "+";
- } else {
- std::cout << "-";
- }
- }
- std::cout << "+" << std::endl;
- }
- void print_inside_cell(int cur_x, int cur_y) const {
- if (pointer_game->map[cur_x / height_cell][cur_y / width_cell] ==
- tictactoe::OptionalPlayer::X) {
- if (cur_y % width_cell == 1) {
- std::cout << " \\/ ";
- } else {
- std::cout << " /\\ ";
- }
- } else if (pointer_game->map[cur_x / height_cell][cur_y / width_cell] ==
- tictactoe::OptionalPlayer::O) {
- std::cout << " @@ ";
- } else {
- std::cout << " ";
- }
- }
- public:
- void print_map() const final {
- int digit_coordinate_outside_map = 9;
- for (int i = 0; i <= heigth_field; i++) {
- if (i % width_cell == 0) {
- print_cell_border();
- } else {
- if (i % width_cell == 1) {
- std::cout << digit_coordinate_outside_map << " ";
- digit_coordinate_outside_map--;
- } else {
- std::cout << " ";
- }
- for (int j = 0; j < width_field; j++) {
- if (j % height_cell == 0) {
- std::cout << "|";
- } else {
- print_inside_cell(j, i);
- j += width_cell;
- }
- }
- std::cout << "|" << std::endl;
- }
- }
- char letter = 'a';
- std::cout << " ";
- for (int i = 0; i <= width_field; i++) {
- if (i % height_cell == 2) {
- std::cout << letter;
- letter += 1;
- } else {
- std::cout << " ";
- }
- }
- std::cout << std::endl;
- }
- std::pair<int, int> parse_line(std::string &line) final {
- std::regex preset(R"(^[\s]*[a-z]{1}[0-9]{1}[\s]*$)");
- if (std::regex_match(line, preset)) {
- std::stringstream buffer;
- buffer << line;
- std::string new_line;
- buffer >> new_line;
- if (new_line[0] <= 'j' && new_line[0] >= 'a' &&
- new_line[1] >= '0' && new_line[1] <= '9') {
- return {new_line[0] - 'a', '9' - new_line[1]};
- }
- }
- return {INT32_MAX, INT32_MAX};
- }
- };
- // NOLINTNEXTLINE
- extern "C" BOOST_SYMBOL_EXPORT view_pretty view;
- // NOLINTNEXTLINE
- view_pretty view;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement