chainreaction/game.hpp

30 lines
655 B
C++

#ifndef GAME_HPP
#define GAME_HPP
#include <exception>
#include "data.hpp"
namespace game::error
{
struct invalid_move : std::exception
{};
}
namespace game::logic
{
auto play(const data::Board&, const data::Coordinate&, data::Player) -> data::Boards;
auto spread(const data::Board&) noexcept -> data::Boards;
auto winner(const data::Board&) noexcept -> data::Player;
static inline auto square_capacity(const data::Board& b,
const data::Coordinate& c) noexcept -> int
{
if (b.is_corner(c)) return 1;
if (b.is_side(c)) return 2;
return 3;
}
}
#endif