54 lines
1.4 KiB
C++
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;
|
|
}
|