game is in a working state again, now just cleaning up
This commit is contained in:
+1
-10
@@ -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
|
||||
|
||||
+30
-34
@@ -1,14 +1,20 @@
|
||||
#include "element.hpp"
|
||||
#include <iostream>
|
||||
#include <cstdlib>
|
||||
#include <ctime>
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
+1
-27
@@ -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);
|
||||
|
||||
@@ -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];
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user