From 626d7261d4f7d7bb3ecdff446dfd163b921b20c0 Mon Sep 17 00:00:00 2001 From: DarthMooMancer Date: Fri, 12 Sep 2025 22:46:59 -0400 Subject: [PATCH] refactor --- include/element.hpp | 17 +++++------------ src/element.cpp | 36 ++++++++++++++---------------------- src/main.cpp | 6 +++--- src/window.cpp | 2 +- 4 files changed, 23 insertions(+), 38 deletions(-) diff --git a/include/element.hpp b/include/element.hpp index 9d65f1b..b8a0b5c 100644 --- a/include/element.hpp +++ b/include/element.hpp @@ -4,27 +4,20 @@ #include #include "globals.hpp" -struct Point; -struct Head; -struct Tail; -struct Body; -struct Fruit; - struct Point { int m_row; int m_col; - int m_direction; Point() {} Point(int x, int y) : m_row(x), m_col(y) {} - Point(int x, int y, int dir) : m_row(x), m_col(y), m_direction(dir) {} - void set_new_point(int row, int col, int dir); + void set_new_point(int row, int col); void set_new_point(Point &point); }; struct Head { - Head() : m_head(5, 5, 2) {}; - Point m_head; + Head() : m_direction(2) {}; + Point m_head {5, 5}; Point m_previous_head; + int m_direction; void get_new_pos(); }; @@ -41,7 +34,7 @@ struct Body { }; struct Fruit { - Fruit(char (&board)[ROW][COL]); + Fruit(); Point m_point; void get_new_pos(char (&board)[ROW][COL], Head &head); }; diff --git a/src/element.cpp b/src/element.cpp index 8457b2f..7488e66 100644 --- a/src/element.cpp +++ b/src/element.cpp @@ -1,26 +1,20 @@ #include "element.hpp" #include #include -#include int _score = 0; -void Point::set_new_point(int row, int col, int dir) { +void Point::set_new_point(int row, int col) { m_row = row; m_col = col; - m_direction = dir; } void Point::set_new_point(Point &point) { - m_row = point.m_row; - m_col = point.m_col; - m_direction = point.m_direction; + set_new_point(point.m_row, point.m_col); } -Fruit::Fruit(char (&board)[ROW][COL]) { - int row = (rand() % ROW); - int col = (rand() % COL); - m_point.set_new_point(row, col, 0); +Fruit::Fruit() { + m_point.set_new_point((rand() % ROW), (rand() % COL)); } void Fruit::get_new_pos(char (&board)[ROW][COL], Head &head) { @@ -30,22 +24,22 @@ void Fruit::get_new_pos(char (&board)[ROW][COL], Head &head) { row = (rand() % ROW); col = (rand() % COL); } while (board[row][col] != '.'); - m_point.set_new_point(row, col, 0); + m_point.set_new_point(row, col); _score++; } } void Head::get_new_pos() { - if (m_head.m_direction == -1) { + if (m_direction == -1) { if (m_head.m_col <= 0) m_head.m_col = COL - 1; else m_head.m_col--; - } else if (m_head.m_direction == 1) { + } else if (m_direction == 1) { if (m_head.m_col >= COL - 1) m_head.m_col = 0; else m_head.m_col++; - } else if (m_head.m_direction == -2) { + } else if (m_direction == -2) { if (m_head.m_row <= 0) m_head.m_row = ROW - 1; else m_head.m_row--; - } else if (m_head.m_direction == 2) { + } else if (m_direction == 2) { if (m_head.m_row >= ROW - 1) m_head.m_row = 0; else m_head.m_row++; } @@ -53,11 +47,9 @@ void Head::get_new_pos() { bool Body::check_collision(Head &head) { for(int i = 0; i < m_body.size(); i++) { - if(m_body.at(i).m_tail_pos.m_row == head.m_head.m_row) { - if(m_body.at(i).m_tail_pos.m_col == head.m_head.m_col) { - return true; - } - } + if(m_body[i].m_tail_pos.m_row != head.m_head.m_row) continue; + if(m_body[i].m_tail_pos.m_col != head.m_head.m_col) continue; + return true; } return false; } @@ -70,9 +62,9 @@ void Body::get_new_pos(Head &head) { if(m_body.empty()) return; m_body[0].m_previous_tail_pos.set_new_point(head.m_previous_head); for (int i = 1; i < m_body.size(); i++) { - m_body.at(i).m_previous_tail_pos.set_new_point(m_body[i - 1].m_tail_pos); + m_body[i].m_previous_tail_pos.set_new_point(m_body[i - 1].m_tail_pos); } for (int i = 0; i < m_body.size(); i++) { - m_body.at(i).m_tail_pos.set_new_point(m_body[i].m_previous_tail_pos); + m_body[i].m_tail_pos.set_new_point(m_body[i].m_previous_tail_pos); } } diff --git a/src/main.cpp b/src/main.cpp index b6450f4..1d0ad0c 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -9,13 +9,13 @@ int main () { std::srand(std::time(0)); Window window; Input input; - Fruit fruit(window.m_board); + Fruit fruit; Body body; Head head; bool running = true; std::thread input_thread( &Input::get_input, &input, - std::ref(head.m_head.m_direction), + std::ref(head.m_direction), std::ref(running)); while (running) { @@ -31,7 +31,7 @@ int main () { fruit.get_new_pos(window.m_board, head); body.get_new_pos(head); - head.m_previous_head.set_new_point(head.m_head.m_row, head.m_head.m_col, head.m_head.m_direction); + head.m_previous_head.set_new_point(head.m_head); window.update_display(fruit, head, body); } diff --git a/src/window.cpp b/src/window.cpp index b9dd3ea..8fd1e4b 100644 --- a/src/window.cpp +++ b/src/window.cpp @@ -10,7 +10,7 @@ void Window::update_display(Fruit &fruit, Head &head, Body &body) { } } m_board[head.m_head.m_row][head.m_head.m_col] = '*'; - m_board[fruit.m_point.m_row][fruit.m_point.m_col] = 'X'; + m_board[fruit.m_point.m_row][fruit.m_point.m_col] = 'o'; for(int i = 0; i < body.m_body.size(); i++) { m_board[body.m_body.at(i).m_tail_pos.m_row][body.m_body.at(i).m_tail_pos.m_col] = '@'; }