wip
This commit is contained in:
+28
-4
@@ -4,14 +4,38 @@
|
|||||||
#include <vector>
|
#include <vector>
|
||||||
#include "point.hpp"
|
#include "point.hpp"
|
||||||
|
|
||||||
|
/* NOTE
|
||||||
|
* tail
|
||||||
|
* ARGS
|
||||||
|
* - direction
|
||||||
|
* - old point
|
||||||
|
* - new point
|
||||||
|
* - new direction (x and y of old point and what direction it needs to swtich to so once it gets to it changes)
|
||||||
|
* - symbol
|
||||||
|
* IMPLEMENTATION
|
||||||
|
* - predict the new point
|
||||||
|
* - save old point
|
||||||
|
* - find if previous tail has new direction
|
||||||
|
* - once tail hits point change direction
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Struct Tail
|
||||||
|
* separate the snake and tail from each other
|
||||||
|
* */
|
||||||
|
|
||||||
struct Snake {
|
struct Snake {
|
||||||
Snake(int default_direction, int row, int col);
|
Snake(int default_direction, int row, int col);
|
||||||
Point m_head;
|
Point m_head;
|
||||||
std::vector<Point> m_tails;
|
std::vector<Point> m_tails;
|
||||||
int m_direction; // 1: Down, 2: Up, 3: Left, 4: Right
|
// 1: Down, 2: Up, 3: Left, 4: Right
|
||||||
|
int m_direction;
|
||||||
void create_tail(int row, int col); // Adds a new tail to m_tails at { row, col }
|
// Adds a new tail to m_tails at { row, col }
|
||||||
void get_new_tail_point(int tail_index, int direction);
|
void create_tail(int row, int col);
|
||||||
|
void get_new_head_point(int tail_index, int direction);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// struct Tail {
|
||||||
|
//
|
||||||
|
// }
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
+5
-11
@@ -18,6 +18,11 @@ int main (int argc, char *argv[]) {
|
|||||||
std::thread input_thread(&Input::get_input, &input);
|
std::thread input_thread(&Input::get_input, &input);
|
||||||
bool running = true;
|
bool running = true;
|
||||||
int count = 0;
|
int count = 0;
|
||||||
|
/* NOTE
|
||||||
|
* if 3 or 4 then "-"
|
||||||
|
* if 1 or 2 then "|"
|
||||||
|
* if "corner" then "~"
|
||||||
|
*/
|
||||||
while (running) {
|
while (running) {
|
||||||
switch (input.m_current_key) {
|
switch (input.m_current_key) {
|
||||||
case 's':
|
case 's':
|
||||||
@@ -38,17 +43,6 @@ int main (int argc, char *argv[]) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fruit.reset(window.m_board, snake.m_head.m_row, snake.m_head.m_col, window.m_score, count);
|
fruit.reset(window.m_board, snake.m_head.m_row, snake.m_head.m_col, window.m_score, count);
|
||||||
if (window.m_score % 2 == 0 && count > 0) {
|
|
||||||
if (snake.m_direction == 1) {
|
|
||||||
int r = snake.m_head.m_row;
|
|
||||||
if (r + 1 > ROW - 1) {
|
|
||||||
r = snake.m_head.m_row;
|
|
||||||
}
|
|
||||||
snake.create_tail(snake.m_head.m_row + r + 1, snake.m_head.m_col);
|
|
||||||
++r;
|
|
||||||
}
|
|
||||||
count--;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* TODO
|
/* TODO
|
||||||
* update tail positions
|
* update tail positions
|
||||||
|
|||||||
+1
-1
@@ -17,7 +17,7 @@ void Snake::create_tail(int row, int col) {
|
|||||||
m_tails.push_back(Point {row, col});
|
m_tails.push_back(Point {row, col});
|
||||||
}
|
}
|
||||||
|
|
||||||
void Snake::get_new_tail_point(int tail_index, int direction) {
|
void Snake::get_new_head_point(int tail_index, int direction) {
|
||||||
if (direction == 1) {
|
if (direction == 1) {
|
||||||
if (m_tails.at(tail_index).m_row >= ROW - 1) m_tails.at(tail_index).m_row = 0;
|
if (m_tails.at(tail_index).m_row >= ROW - 1) m_tails.at(tail_index).m_row = 0;
|
||||||
else ++m_tails.at(tail_index).m_row;
|
else ++m_tails.at(tail_index).m_row;
|
||||||
|
|||||||
Reference in New Issue
Block a user