1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
|
/* square.cc
*/
#include "osl/square.h"
#include "osl/boardTable.h"
#include <boost/static_assert.hpp>
#include <iostream>
BOOST_STATIC_ASSERT(sizeof(osl::Square) == 4);
bool osl::Square::isOnBoardSlow() const
{
return (1<=x() && x() <=9
&& 1<=y() && y() <=9);
}
bool osl::Square::isValid() const
{
return isPieceStand() || isOnBoard();
}
const osl::Square osl::
Square::squareForBlackSlow(Player player) const
{
if (player == BLACK)
return *this;
return Square(reverseX(x()),reverseY(y()));
}
const osl::Square osl::
Square::neighbor(Player P, Direction D) const
{
return Board_Table.nextSquare(P, *this, D);
}
const osl::Square osl::
Square::back(Player P, Direction D) const
{
return Board_Table.nextSquare(alt(P), *this, D);
}
std::ostream& osl::operator<<(std::ostream& os, Square square)
{
if (square.isPieceStand())
return os << "OFF";
return os << "Square(" << square.x() << square.y() << ")";
}
/* ------------------------------------------------------------------------- */
// ;;; Local Variables:
// ;;; mode:c++
// ;;; c-basic-offset:2
// ;;; End:
|