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:
@@ -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<std::array<char, COL>, 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;
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user