From 438b0293813d4e9a12a28071edf3f2b2b0edde5c Mon Sep 17 00:00:00 2001 From: DarthMooMancer <107283522+DarthMooMancer@users.noreply.github.com> Date: Fri, 7 Nov 2025 12:46:26 -0500 Subject: [PATCH] removing the map --- include/engine.hpp | 14 ++++---------- src/engine.cpp | 41 +++++++++++++++++------------------------ 2 files changed, 21 insertions(+), 34 deletions(-) diff --git a/include/engine.hpp b/include/engine.hpp index 7897d86..1de5fd8 100644 --- a/include/engine.hpp +++ b/include/engine.hpp @@ -1,7 +1,6 @@ #ifndef ELEMENTS_HPP #define ELEMENTS_HPP -#include #include constexpr int ROW = 5; @@ -26,21 +25,16 @@ public: void run(); private: - std::unique_ptr win; + Window win; struct Player { Player(char id) : id(id) {}; char id; }; - const std::array map; - - struct GameState { - Player player1; - Player player2; - Player *temp; - GameState() : player1('x'), player2('o'), temp { &player1 } {}; - } state; + Player player1 { 'x' }; + Player player2 { 'o' }; + Player *temp { &player1 }; bool process_input(); bool exit_code(); bool check_line(char id); diff --git a/src/engine.cpp b/src/engine.cpp index 740d975..1efe865 100644 --- a/src/engine.cpp +++ b/src/engine.cpp @@ -1,7 +1,6 @@ #include #include #include -#include #include #include #include @@ -28,26 +27,20 @@ void Window::draw_display() { } } -Engine::Engine() : - map { - vec2 { 0, 0 }, vec2 { 2, 0 }, vec2 { 4, 0 }, - vec2 { 0, 2 }, vec2 { 2, 2 }, vec2 { 4, 2 }, - vec2 { 0, 4 }, vec2 { 2, 4 }, vec2 { 4, 4 } - } { +Engine::Engine() { initscr(); cbreak(); noecho(); curs_set(0); nodelay(stdscr, true); - win = std::make_unique(); } Engine::~Engine() {} void Engine::run() { while (exit_code() && process_input()) { - win->draw_display(); - std::cout << "Current Player: " << state.temp->id << "\n"; + win.draw_display(); + std::cout << "Current Player: " << temp->id << "\n"; std::this_thread::sleep_for(std::chrono::milliseconds((int) (150))); } endwin(); @@ -55,16 +48,16 @@ void Engine::run() { bool Engine::exit_code() { int index = 0; - if(check_line(state.player1.id)) { + if(check_line(player1.id)) { std::cout << "Game Over! Player 1 wins!" << std::endl; std::this_thread::sleep_for(std::chrono::seconds(2)); return false; - } else if(check_line(state.player2.id)) { + } else if(check_line(player2.id)) { std::cout << "Game Over! Player 2 wins!" << std::endl; std::this_thread::sleep_for(std::chrono::seconds(2)); return false; } - for(auto &row : win->view) { + for(auto &row : win.view) { for(auto val : row) { if(val != ' ') index++; } @@ -78,16 +71,16 @@ bool Engine::exit_code() { } bool Engine::process_input() { - int ch, index; + int ch, index, x, y; while((ch = getch()) != ERR) { if(ch == 'q') { return false; } if(ch >= '1' && ch <= '9') { index = ch - '1'; - if(win->view[map[index].y][map[index].x] == ' ') { - win->view[map[index].y][map[index].x] = state.temp->id; - if(state.temp->id == 'x') { state.temp = &state.player2; } - else if(state.temp->id == 'o') { state.temp = &state.player1; } - } + x = (index % 3) * 2, y = (index / 3) * 2; + if(win.view[y][x] != ' ') continue; + win.view[y][x] = temp->id; + if(temp->id == 'x') { temp = &player2; } + else if(temp->id == 'o') { temp = &player1; } } } return true; @@ -96,20 +89,20 @@ bool Engine::process_input() { bool Engine::check_line(char id) { for(int i : std::ranges::views::iota(0, COL)) { if(COL % 2 != 0) continue; - if(win->view[0][i] == id && win->view[2][i] == id && win->view[4][i] == id) { + if(win.view[0][i] == id && win.view[2][i] == id && win.view[4][i] == id) { return true; } } for(int i : std::ranges::views::iota(0, ROW)) { if(ROW % 2 != 0) continue; - if(win->view[i][0] == id && win->view[i][2] == id && win->view[i][4] == id) { + if(win.view[i][0] == id && win.view[i][2] == id && win.view[i][4] == id) { return true; } } auto same_symbol = [&](vec2 a, vec2 b) { - return win->view[a.y][a.x] == id && - win->view[2][2] == id && - win->view[b.y][b.x] == id; + return win.view[a.y][a.x] == id && + win.view[2][2] == id && + win.view[b.y][b.x] == id; }; return same_symbol({ 0, 0 }, { 4, 4 }) || same_symbol({ 4, 0 }, { 0, 4 }); }