From 46a2394e9ec70ca0b5f23d0be480812bcb77a963 Mon Sep 17 00:00:00 2001 From: DarthMooMancer <107283522+DarthMooMancer@users.noreply.github.com> Date: Mon, 8 Sep 2025 09:34:50 -0400 Subject: [PATCH] fix: fixed bug with diagonal where it would break early without the point dropping all the way down and added left diagonal check --- src/elements.cpp | 17 +++++++++++++++++ src/main.cpp | 2 +- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/elements.cpp b/src/elements.cpp index 3d20e57..7fb0f6d 100644 --- a/src/elements.cpp +++ b/src/elements.cpp @@ -12,6 +12,8 @@ void Point::assign(int row, int col) { void Point::move() { if(m_row < ROW - 1) { m_row++; + } else { + m_collided = true; } } @@ -60,6 +62,21 @@ bool Player::check_chain(std::array, ROW> &m_board, std::v if(m_board[i - 1][j + 1] != m_symbol) continue; if(m_board[i - 2][j + 2] != m_symbol) continue; if(m_board[i - 3][j + 3] != m_symbol) continue; + if(m_board[i][j + 1] == '.') continue; + if(m_board[i - 1][j + 2] == '.') continue; + if(m_board[i - 2][j + 3] == '.') continue; + return true; + } + } + for(int i = ROW - 1; i >= 0; i--) { + for(int j = COL - 1; j >= 0; j--) { + if(m_board[i][j] != m_symbol) continue; + if(m_board[i - 1][j - 1] != m_symbol) continue; + if(m_board[i - 2][j - 2] != m_symbol) continue; + if(m_board[i - 3][j - 3] != m_symbol) continue; + if(m_board[i][j - 1] == '.') continue; + if(m_board[i - 1][j - 2] == '.') continue; + if(m_board[i - 2][j - 3] == '.') continue; return true; } } diff --git a/src/main.cpp b/src/main.cpp index 6824f1c..ddac932 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -20,7 +20,7 @@ int main() { points_list[i].move(); points_list[i].check_collision(points_list); } - if(one.check_chain(window.m_board)) { + if(one.check_chain(window.m_board, points_list)) { std::cout << "Hello" << std::endl; running = false; }