Files
tic_tac_toe/src/elements.cpp
T
2025-10-07 12:08:57 -04:00

54 lines
1.4 KiB
C++

#include "elements.hpp"
#include "globals.hpp"
void cleanup(Point** buffer, int buffer_size) {
for(int i = 0; i < buffer_size; i++) {
delete buffer[i];
}
}
void allocate_points(Point** buffer, char symbol) {
int index = 0;
for(int i = 0; i < ROW; i += 2) {
for(int a = 0; a < ROW; a += 2) {
buffer[index++] = new Point { i, a, symbol };
}
}
}
Player* get_current_player(Player* current_player, Player* player_one, Player* player_two) {
if(current_player == nullptr) { current_player = player_one; }
else if(current_player->m_id == 1) { current_player = player_two; }
else if(current_player->m_id == 2) { current_player = player_one; }
return current_player;
}
bool Player::on_line(Point** buffer) {
for(int i = 0; i <= 6; i += 3) {
if(buffer[i]->m_symbol == buffer[i+1]->m_symbol && buffer[i+1]->m_symbol == buffer[i+2]->m_symbol) {
if(buffer[i]->m_symbol == m_symbol) {
return true;
}
}
}
for(int i = 0; i < 3; i++) {
if(buffer[i]->m_symbol == buffer[i+3]->m_symbol && buffer[i+3]->m_symbol == buffer[i+6]->m_symbol) {
if(buffer[i]->m_symbol == m_symbol) {
return true;
}
}
}
if(buffer[0]->m_symbol == buffer[4]->m_symbol && buffer[4]->m_symbol == buffer[8]->m_symbol) {
if(buffer[0]->m_symbol == m_symbol) {
return true;
}
}
if(buffer[2]->m_symbol == buffer[4]->m_symbol && buffer[4]->m_symbol == buffer[6]->m_symbol) {
if(buffer[2]->m_symbol == m_symbol) {
return true;
}
}
return false;
}