From c25beb21fbe3f01e00eeee1abfbd4ab5ff0132d3 Mon Sep 17 00:00:00 2001 From: DarthMooMancer <107283522+DarthMooMancer@users.noreply.github.com> Date: Tue, 16 Sep 2025 09:10:41 -0400 Subject: [PATCH] feat: _check_collision for stage one of checks to collide --- include/elements.hpp | 7 +++--- src/elements.cpp | 57 +++++++++++++++++++++++++++++++------------- src/input.cpp | 12 ++++++++++ src/main.cpp | 18 +++++++++++++- 4 files changed, 74 insertions(+), 20 deletions(-) diff --git a/include/elements.hpp b/include/elements.hpp index 660259b..370c987 100644 --- a/include/elements.hpp +++ b/include/elements.hpp @@ -2,17 +2,18 @@ #define ELEMENTS_HPP #include -#include "globals.hpp" struct Point { - Point() : m_row(0), m_col(0), m_symbol(2), m_direction('n') {}; - Point(int row, int col) : m_row(row), m_col(col), m_symbol(2), m_direction('n') {}; + Point() : m_row(0), m_col(0), m_symbol(2), m_direction('n'), m_collide(false) {}; + Point(int row, int col) : m_row(row), m_col(col), m_symbol(2), m_direction('n'), m_collide(false) {}; char m_direction; int m_row; int m_col; int m_symbol; + bool m_collide; void assign(); void assign(int row, int col); + std::string to_string(); }; struct PointCollection { diff --git a/src/elements.cpp b/src/elements.cpp index ddadfa9..d22f89c 100644 --- a/src/elements.cpp +++ b/src/elements.cpp @@ -1,6 +1,9 @@ #include "elements.hpp" +#include "globals.hpp" #include #include +#include +#include void Point::assign() { std::srand(std::time(0)); @@ -13,6 +16,10 @@ void Point::assign(int row, int col) { m_col = col; } +std::string Point::to_string() { + return "(" + std::to_string(m_row) + ", " + std::to_string(m_col) + " )\n"; +} + void PointCollection::set_direction(char direction) { for(int i = m_point_list.size() - 1; i >= 0; i--) { m_point_list[i].m_direction = direction; @@ -37,22 +44,40 @@ void PointCollection::move() { } } -void PointCollection::check_collision() { - for(int i = m_point_list.size() - 1; i >= 0; i--) { - if(m_point_list[i].m_direction == 'u') { - // if(m_point_list[i + 1].m_row == m_point_list[i].m_row || m_point_list[i - 1].m_row == m_point_list[i].m_row) { - // if(m_point_list[i + 1].m_col == m_point_list[i].m_col || m_point_list[i - 1].m_col < m_point_list[i].m_col) { - // if(m_point_list[i].m_row > m_point_list[i + 1].m_row || m_point_list[i].m_row > m_point_list[i - 1].m_row) { - // m_point_list[i].m_row += 1; +// bool _check_collision(Point &a, Point &b) { +// if(a.m_row == b.m_row && a.m_col == b.m_col && a.m_symbol == b.m_symbol) { +// return true; +// } +// return false; +// } + +// void PointCollection::check_collision() { + // for(int i = m_point_list.size() - 1; i >= 0; i--) { + // for(int a = m_point_list.size() - 1; a >= 0; a--) { + // if (i == a) continue; + // _check_collision(m_point_list[i], m_point_list[a]); + // if(m_point_list[i].m_row == m_point_list[a].m_row) { + // if(m_point_list[i].m_col == m_point_list[a].m_col) { + // if (m_point_list[i].m_symbol == m_point_list[a].m_symbol) { + // if(m_point_list[i].m_direction == 'u') { + // if(!m_point_list[a].m_collide) { + // m_point_list[a].m_collide = true; + // m_point_list[a].m_symbol *= 2; + // m_point_list.erase(m_point_list.begin() + i); + // } + // else { + // m_point_list[i].m_row++; + // } + // } + // if(m_point_list[i].m_direction == 'd') { + // } + // if(m_point_list[i].m_direction == 'l') { + // } + // if(m_point_list[i].m_direction == 'r') { + // } // } // } // } - } - if(m_point_list[i].m_direction == 'd') { - } - if(m_point_list[i].m_direction == 'l') { - } - if(m_point_list[i].m_direction == 'r') { - } - } -} +// } +// } +// } diff --git a/src/input.cpp b/src/input.cpp index 8e45df5..1bbce6d 100644 --- a/src/input.cpp +++ b/src/input.cpp @@ -15,24 +15,36 @@ void Input::get_input(bool &running, PointCollection &collection) { collection.set_direction('u'); collection.m_point_list.push_back(Point()); collection.m_point_list.back().assign(); + for(int i = collection.m_point_list.size() - 1; i >= 0; i--) { + collection.m_point_list[i].m_collide = false; + } } else if(_getch == 66) { _getch = 0; collection.set_direction('d'); collection.m_point_list.push_back(Point()); collection.m_point_list.back().assign(); + for(int i = collection.m_point_list.size() - 1; i >= 0; i--) { + collection.m_point_list[i].m_collide = false; + } } else if(_getch == 67) { _getch = 0; collection.set_direction('r'); collection.m_point_list.push_back(Point()); collection.m_point_list.back().assign(); + for(int i = collection.m_point_list.size() - 1; i >= 0; i--) { + collection.m_point_list[i].m_collide = false; + } } else if(_getch == 68) { _getch = 0; collection.set_direction('l'); collection.m_point_list.push_back(Point()); collection.m_point_list.back().assign(); + for(int i = collection.m_point_list.size() - 1; i >= 0; i--) { + collection.m_point_list[i].m_collide = false; + } } else if(_getch == 113) running = false; } diff --git a/src/main.cpp b/src/main.cpp index 689e432..c789b95 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -4,6 +4,13 @@ #include "window.hpp" #include "elements.hpp" +bool _check_collision(Point &a, Point &b) { + if(a.m_row == b.m_row && a.m_col == b.m_col && a.m_symbol == b.m_symbol) { + return true; + } + return false; +} + int main() { Input input; Window window; @@ -15,9 +22,18 @@ int main() { collection.m_point_list.back().assign(); while (running) { - collection.check_collision(); + // collection.check_collision(); collection.move(); window.draw_window(collection); + for(int i = collection.m_point_list.size() - 1; i >= 0; i--) { + for(int a = collection.m_point_list.size() - 1; a >= 0; a--) { + if (i == a) continue; + if(_check_collision(collection.m_point_list[i], collection.m_point_list[a])) { + std::cout << "Collision with " << collection.m_point_list[i].to_string() << " & " << collection.m_point_list[a].to_string() << "\n"; + } + } + } + std::cout << collection.m_point_list.size() << "\n"; } input_thread.join();