wip
This commit is contained in:
+1
-1
@@ -16,7 +16,7 @@ struct Point {
|
|||||||
int m_col;
|
int m_col;
|
||||||
char m_symbol;
|
char m_symbol;
|
||||||
enum Direction m_dir;
|
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) {}
|
Point(int x, int y, char s) : m_row(x), m_col(y), m_symbol(s) {}
|
||||||
void set_new_point(int row, int col);
|
void set_new_point(int row, int col);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -3,7 +3,6 @@
|
|||||||
#include "element.hpp"
|
#include "element.hpp"
|
||||||
|
|
||||||
struct Input {
|
struct Input {
|
||||||
enum Direction m_current_key = NONE;
|
|
||||||
int m_getch = 0;
|
int m_getch = 0;
|
||||||
void get_input(enum Direction &dir, bool &r);
|
void get_input(enum Direction &dir, bool &r);
|
||||||
};
|
};
|
||||||
|
|||||||
+4
-4
@@ -11,16 +11,16 @@ void Input::get_input(enum Direction &dir, bool &running) {
|
|||||||
endwin();
|
endwin();
|
||||||
switch (m_getch) {
|
switch (m_getch) {
|
||||||
case 65: // Up arrow
|
case 65: // Up arrow
|
||||||
if(m_current_key != DOWN) dir = m_current_key = UP;
|
if(dir != DOWN) dir = UP;
|
||||||
break;
|
break;
|
||||||
case 66: // Down arrow
|
case 66: // Down arrow
|
||||||
if(m_current_key != UP) dir = m_current_key = DOWN;
|
if(dir != UP) dir = DOWN;
|
||||||
break;
|
break;
|
||||||
case 67: // Right arrow
|
case 67: // Right arrow
|
||||||
if(m_current_key != LEFT) dir = m_current_key = RIGHT;
|
if(dir != LEFT) dir = RIGHT;
|
||||||
break;
|
break;
|
||||||
case 68: // Left arrow
|
case 68: // Left arrow
|
||||||
if(m_current_key != RIGHT) dir = m_current_key = LEFT;
|
if(dir != RIGHT) dir = LEFT;
|
||||||
break;
|
break;
|
||||||
case 113:
|
case 113:
|
||||||
running = false;
|
running = false;
|
||||||
|
|||||||
+2
-5
@@ -12,13 +12,10 @@ int main () {
|
|||||||
bool running = true;
|
bool running = true;
|
||||||
|
|
||||||
Point* segments[(ROW * COL) + 3] = {}; // 2 for head, 1 for fruit, rest for tail
|
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
|
segments[2] = new Point { (rand() % ROW), (rand() % COL), 'o' }; // Fruit
|
||||||
|
|
||||||
std::thread input_thread(
|
std::thread input_thread([&] { input.get_input(segments[0]->m_dir, running); } );
|
||||||
&Input::get_input, &input,
|
|
||||||
std::ref(segments[0]->m_dir),
|
|
||||||
std::ref(running));
|
|
||||||
|
|
||||||
while (running) {
|
while (running) {
|
||||||
on_fruit_eaten(window.m_board, segments);
|
on_fruit_eaten(window.m_board, segments);
|
||||||
|
|||||||
@@ -28,7 +28,6 @@ void Window::update_display(Point* segments[]) {
|
|||||||
m_board[segments[2]->m_row][segments[2]->m_col] = segments[2];
|
m_board[segments[2]->m_row][segments[2]->m_col] = segments[2];
|
||||||
for(int i = 3; i < ROW * COL; i++) {
|
for(int i = 3; i < ROW * COL; i++) {
|
||||||
if(segments[i] != nullptr) {
|
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];
|
m_board[segments[i]->m_row][segments[i]->m_col] = segments[i];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user