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; }