83 lines
1.2 KiB
C
83 lines
1.2 KiB
C
|
|
#include "util.h"
|
|
|
|
/**
|
|
* Returns the absolute value of an index_t value
|
|
*
|
|
* \param p positive or negative index_t
|
|
*/
|
|
index_t abs_pos(index_t p)
|
|
{
|
|
if (p < 0)
|
|
return -1 * p;
|
|
|
|
return p;
|
|
}
|
|
|
|
/**
|
|
* Returns the absolute value of a tile_t value
|
|
*
|
|
* \param t positive or negative tile_t
|
|
* */
|
|
tile_t abs_tile(tile_t t)
|
|
{
|
|
if (t < 0)
|
|
return -1 * t;
|
|
|
|
return t;
|
|
}
|
|
|
|
/**
|
|
* Returns true if tile is empty, false otherwise
|
|
*
|
|
* \param t tile to check if empty
|
|
* */
|
|
bool tile_empty(tile_t t)
|
|
{
|
|
return t == E;
|
|
}
|
|
|
|
/**
|
|
* Returns row number of 1D board index
|
|
*
|
|
* \param i index to get row number of
|
|
* */
|
|
index_t row(index_t i)
|
|
{
|
|
return i / ROW;
|
|
}
|
|
|
|
/**
|
|
* Returns column number of board index
|
|
*
|
|
* \param i index to get column number of
|
|
* */
|
|
index_t column(index_t i)
|
|
{
|
|
return i % ROW;
|
|
}
|
|
|
|
/**
|
|
* Returns true if a and b are tiles of opposite color, false otherwise
|
|
*
|
|
* \param a Tile to compare
|
|
* \param b Tile to compare it with
|
|
* */
|
|
bool opposite_color(tile_t a, tile_t b)
|
|
{
|
|
return a * b < 0;
|
|
}
|
|
|
|
/**
|
|
* Returns true if a and b are pieces of the same color, false otherwise
|
|
*
|
|
* \param a Tile to compare
|
|
* \param b Tile to compare it with
|
|
* */
|
|
bool same_color(tile_t a, tile_t b)
|
|
{
|
|
return a * b > 0;
|
|
}
|
|
|
|
|