diff --git a/include/element.hpp b/include/element.hpp index 08b0911..8a00081 100644 --- a/include/element.hpp +++ b/include/element.hpp @@ -16,7 +16,7 @@ struct Point { int m_col; char m_symbol; enum Direction m_dir; - Point() : m_row(-1), m_col(-1), m_symbol('@') {} + Point() : m_row(0), m_col(0), m_symbol('@') {} Point(int x, int y, char s) : m_row(x), m_col(y), m_symbol(s) {} void set_new_point(int row, int col); }; diff --git a/include/input.hpp b/include/input.hpp index da39ba5..3b20576 100644 --- a/include/input.hpp +++ b/include/input.hpp @@ -3,7 +3,6 @@ #include "element.hpp" struct Input { - enum Direction m_current_key = NONE; int m_getch = 0; void get_input(enum Direction &dir, bool &r); }; diff --git a/src/input.cpp b/src/input.cpp index e9a27d2..14a4362 100644 --- a/src/input.cpp +++ b/src/input.cpp @@ -11,16 +11,16 @@ void Input::get_input(enum Direction &dir, bool &running) { endwin(); switch (m_getch) { case 65: // Up arrow - if(m_current_key != DOWN) dir = m_current_key = UP; + if(dir != DOWN) dir = UP; break; case 66: // Down arrow - if(m_current_key != UP) dir = m_current_key = DOWN; + if(dir != UP) dir = DOWN; break; case 67: // Right arrow - if(m_current_key != LEFT) dir = m_current_key = RIGHT; + if(dir != LEFT) dir = RIGHT; break; case 68: // Left arrow - if(m_current_key != RIGHT) dir = m_current_key = LEFT; + if(dir != RIGHT) dir = LEFT; break; case 113: running = false; diff --git a/src/main.cpp b/src/main.cpp index f44ed30..dfc994a 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -12,13 +12,10 @@ int main () { bool running = true; Point* segments[(ROW * COL) + 3] = {}; // 2 for head, 1 for fruit, rest for tail - segments[0] = new Point { 5, 5, '*' }; // Head + segments[0] = new Point { ROW / 2, COL / 2, '*' }; // Head segments[2] = new Point { (rand() % ROW), (rand() % COL), 'o' }; // Fruit - std::thread input_thread( - &Input::get_input, &input, - std::ref(segments[0]->m_dir), - std::ref(running)); + std::thread input_thread([&] { input.get_input(segments[0]->m_dir, running); } ); while (running) { on_fruit_eaten(window.m_board, segments); diff --git a/src/window.cpp b/src/window.cpp index 3f5c181..890387c 100644 --- a/src/window.cpp +++ b/src/window.cpp @@ -28,7 +28,6 @@ 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]; } }