From 7a6df4fbe5308ffe6f16f681d4e2ffe7834c6e69 Mon Sep 17 00:00:00 2001 From: DarthMooMancer Date: Fri, 26 Sep 2025 21:11:30 -0400 Subject: [PATCH] game is in a working state again, now just cleaning up --- include/element.hpp | 11 +------- src/element.cpp | 64 +++++++++++++++++++++------------------------ src/main.cpp | 28 +------------------- src/window.cpp | 1 + 4 files changed, 33 insertions(+), 71 deletions(-) diff --git a/include/element.hpp b/include/element.hpp index 56bdc0b..f5b81bd 100644 --- a/include/element.hpp +++ b/include/element.hpp @@ -3,14 +3,12 @@ #include "globals.hpp" -static int _score = 0; - struct Point { int m_row; int m_col; char m_symbol; int m_direction; - Point() : m_row(0), m_col(0), m_symbol('@') {} + Point() : m_row(-1), m_col(-1), m_symbol('@') {} Point(int x, int y, char s) : m_row(x), m_col(y), m_symbol(s) {} Point(int x, int y, char s, int d) : m_row(x), m_col(y), m_symbol(s), m_direction(d) {} void to_string(); @@ -19,13 +17,6 @@ struct Point { void determine_index_zero_pos(Point* (*board)[COL], Point** segments); void move_tail_indicies(Point** segments); -void input_new_tail(Point *(*board)[10], Point** segments); void on_fruit_eaten(Point* (*board)[COL], Point** segments); -struct Fruit { - Fruit(); - Point m_point {0, 0, 'o'}; - void on_fruit_eaten(Point* (*board)[COL], Point** segments); -}; - #endif // ELEMENT_HPP diff --git a/src/element.cpp b/src/element.cpp index 5f5431f..0a6ce88 100644 --- a/src/element.cpp +++ b/src/element.cpp @@ -1,14 +1,20 @@ #include "element.hpp" -#include #include #include -void determine_index_zero_pos(Point* (*board)[COL], Point** segments) { - Point new_point; - Point old_point; +void Point::set_new_point(int row, int col) { + m_row = row; + m_col = col; +} - new_point.set_new_point(segments[0]->m_row, segments[0]->m_col); - old_point.set_new_point(segments[0]->m_row, segments[0]->m_col); +void determine_index_zero_pos(Point* (*board)[COL], Point** segments) { + Point new_point = { segments[0]->m_row, segments[0]->m_col, '.' }; + + if(segments[1] == nullptr) { + segments[1] = new Point { segments[0]->m_row, segments[0]->m_col, '.' }; + } else { + segments[1]->set_new_point(segments[0]->m_row, segments[0]->m_col); + } if (segments[0]->m_direction == -1) { if (new_point.m_col <= 0) new_point.m_col = COL - 1; @@ -23,47 +29,37 @@ void determine_index_zero_pos(Point* (*board)[COL], Point** segments) { if (new_point.m_row >= ROW - 1) new_point.m_row = 0; else new_point.m_row++; } - if(segments[1] == nullptr) { - segments[1] = new Point { old_point.m_row, old_point.m_col, '.' }; - } else { - segments[1]->set_new_point(old_point.m_row, old_point.m_col); - } - board[segments[0]->m_row][segments[0]->m_col] = nullptr; segments[0]->set_new_point(new_point.m_row, new_point.m_col); - board[segments[0]->m_row][segments[0]->m_col] = segments[0]; -} - -void input_new_tail(Point *(*board)[10], Point** segments) { - for(int i = (ROW * COL) - 1; i >= 3; i--) { - segments[i] = segments[i - 1]; - } - determine_index_zero_pos(board, segments); - segments[3] = new Point {}; } void move_tail_indicies(Point** segments) { Point* previous_head = segments[1]; int new_row = segments[1]->m_row; int new_col = segments[1]->m_col; - Point* index = nullptr; - for(int i = (ROW * COL) - 1; i >= 3; i--) { + Point* last_point = nullptr; + for(int i = (ROW * COL) - 1; i > 3; i--) { if(segments[i] == nullptr) { - index = segments[i - 1]; + last_point = segments[i - 1]; continue; } segments[i] = segments[i - 1]; } - segments[3] = index; - segments[3]->set_new_point(new_row, new_col); + segments[3] = last_point; + if(segments[3] != nullptr) { + segments[3]->set_new_point(new_row, new_col); + } } -void Point::to_string() { - std::cout << "(" << m_row << ", " << m_col << ")\n"; -} - -void Point::set_new_point(int row, int col) { - m_row = row; - m_col = col; +void _append_tail(Point *(*board)[10], Point** segments) { + for(int i = (ROW * COL) - 1; i >= 3; i--) { + segments[i] = segments[i - 1]; + } + Point* old_tail = segments[4]; + if(old_tail != nullptr) { + segments[3] = new Point { old_tail->m_row, old_tail->m_col, '@', -1 }; + } else { + segments[3] = new Point {}; + } } void on_fruit_eaten(Point* (*board)[COL], Point** segments) { @@ -74,6 +70,6 @@ void on_fruit_eaten(Point* (*board)[COL], Point** segments) { col = (rand() % COL); } while (board[row][col] != nullptr); segments[2]->set_new_point(row, col); - input_new_tail(board, segments); + _append_tail(board, segments); } } diff --git a/src/main.cpp b/src/main.cpp index 0249d40..b7238a6 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -21,28 +21,9 @@ int main () { std::ref(running)); while (running) { - // for(int i = 0; i < 10; i++) { - // if(segments[i] != nullptr) segments[i]->to_string(); - // else if(segments[i] == nullptr) std::cout << "NULLPTR" << "\n"; - // } - // std::cout << "\n"; + on_fruit_eaten(window.m_board, segments); determine_index_zero_pos(window.m_board, segments); move_tail_indicies(segments); - // g++; - // for(int i = 0; i < ROW; i++) { - // for(int j = 0; j < COL; j++) { - // if(window.m_board[i][j] == nullptr) std::cout << "0 "; - // if(window.m_board[i][j] != nullptr) std::cout << "p "; - // } - // std::cout << "\r\n"; - // if(segments[i] != nullptr) segments[i]->to_string(); - // else if(segments[i] == nullptr) std::cout << "NULLPTR" << "\n"; - // } - // std::cout << "\n"; - // segments[0]->to_string(); - // segments[1]->to_string(); - // check_new_tail(segments); - // body.check_new_tail(); // if(body.m_body.size() >= (ROW * COL)) { // std::cout << "You win! Score: " + std::to_string(body.m_body.size()) << std::endl; // running = false; @@ -50,13 +31,6 @@ int main () { // std::cout << "You died! Score: " + std::to_string(body.m_body.size()) << std::endl; // running = false; // } - // head.get_new_pos(); - // // fruit.get_new_pos(window.m_board, head); - // body.get_new_pos(head); - // - // head.m_previous_head.set_new_point(head.m_head); - // std::cout << _score << "\n"; - on_fruit_eaten(window.m_board, segments); window.clear_display(); window.update_display(segments); window.draw_display(200); diff --git a/src/window.cpp b/src/window.cpp index 540d888..741dc71 100644 --- a/src/window.cpp +++ b/src/window.cpp @@ -29,6 +29,7 @@ void Window::update_display(Point* segments[]) { m_board[segments[2]->m_row][segments[2]->m_col] = segments[2]; for(int i = 3; i < ROW * COL; i++) { if(segments[i] != nullptr) { + if(segments[i]->m_row < 0 || segments[i]->m_col < 0) continue; m_board[segments[i]->m_row][segments[i]->m_col] = segments[i]; } }