This commit is contained in:
DarthMooMancer
2025-09-12 22:46:59 -04:00
parent 9d3f6b3308
commit 626d7261d4
4 changed files with 23 additions and 38 deletions
+14 -22
View File
@@ -1,26 +1,20 @@
#include "element.hpp"
#include <cstdlib>
#include <ctime>
#include <vector>
int _score = 0;
void Point::set_new_point(int row, int col, int dir) {
void Point::set_new_point(int row, int col) {
m_row = row;
m_col = col;
m_direction = dir;
}
void Point::set_new_point(Point &point) {
m_row = point.m_row;
m_col = point.m_col;
m_direction = point.m_direction;
set_new_point(point.m_row, point.m_col);
}
Fruit::Fruit(char (&board)[ROW][COL]) {
int row = (rand() % ROW);
int col = (rand() % COL);
m_point.set_new_point(row, col, 0);
Fruit::Fruit() {
m_point.set_new_point((rand() % ROW), (rand() % COL));
}
void Fruit::get_new_pos(char (&board)[ROW][COL], Head &head) {
@@ -30,22 +24,22 @@ void Fruit::get_new_pos(char (&board)[ROW][COL], Head &head) {
row = (rand() % ROW);
col = (rand() % COL);
} while (board[row][col] != '.');
m_point.set_new_point(row, col, 0);
m_point.set_new_point(row, col);
_score++;
}
}
void Head::get_new_pos() {
if (m_head.m_direction == -1) {
if (m_direction == -1) {
if (m_head.m_col <= 0) m_head.m_col = COL - 1;
else m_head.m_col--;
} else if (m_head.m_direction == 1) {
} else if (m_direction == 1) {
if (m_head.m_col >= COL - 1) m_head.m_col = 0;
else m_head.m_col++;
} else if (m_head.m_direction == -2) {
} else if (m_direction == -2) {
if (m_head.m_row <= 0) m_head.m_row = ROW - 1;
else m_head.m_row--;
} else if (m_head.m_direction == 2) {
} else if (m_direction == 2) {
if (m_head.m_row >= ROW - 1) m_head.m_row = 0;
else m_head.m_row++;
}
@@ -53,11 +47,9 @@ void Head::get_new_pos() {
bool Body::check_collision(Head &head) {
for(int i = 0; i < m_body.size(); i++) {
if(m_body.at(i).m_tail_pos.m_row == head.m_head.m_row) {
if(m_body.at(i).m_tail_pos.m_col == head.m_head.m_col) {
return true;
}
}
if(m_body[i].m_tail_pos.m_row != head.m_head.m_row) continue;
if(m_body[i].m_tail_pos.m_col != head.m_head.m_col) continue;
return true;
}
return false;
}
@@ -70,9 +62,9 @@ void Body::get_new_pos(Head &head) {
if(m_body.empty()) return;
m_body[0].m_previous_tail_pos.set_new_point(head.m_previous_head);
for (int i = 1; i < m_body.size(); i++) {
m_body.at(i).m_previous_tail_pos.set_new_point(m_body[i - 1].m_tail_pos);
m_body[i].m_previous_tail_pos.set_new_point(m_body[i - 1].m_tail_pos);
}
for (int i = 0; i < m_body.size(); i++) {
m_body.at(i).m_tail_pos.set_new_point(m_body[i].m_previous_tail_pos);
m_body[i].m_tail_pos.set_new_point(m_body[i].m_previous_tail_pos);
}
}