fix: fixed bug with diagonal where it would break early without the point dropping all the way down and added left diagonal check

This commit is contained in:
DarthMooMancer
2025-09-08 09:34:50 -04:00
parent 0f7984e1d0
commit 46a2394e9e
2 changed files with 18 additions and 1 deletions
+17
View File
@@ -12,6 +12,8 @@ void Point::assign(int row, int col) {
void Point::move() { void Point::move() {
if(m_row < ROW - 1) { if(m_row < ROW - 1) {
m_row++; m_row++;
} else {
m_collided = true;
} }
} }
@@ -60,6 +62,21 @@ bool Player::check_chain(std::array<std::array<char, COL>, ROW> &m_board, std::v
if(m_board[i - 1][j + 1] != 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 - 2][j + 2] != m_symbol) continue;
if(m_board[i - 3][j + 3] != 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; return true;
} }
} }
+1 -1
View File
@@ -20,7 +20,7 @@ int main() {
points_list[i].move(); points_list[i].move();
points_list[i].check_collision(points_list); 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; std::cout << "Hello" << std::endl;
running = false; running = false;
} }