BOX
int ALGOR::try_good_turn(BOX& box, size_t y, size_t x, int& dir, BOARD& b)
RANDOM rd(BOX::last);
for (dir = rd(); dir < BOX::last; dir = rd())
size_t by = y + BOX::edges[dir].y;
size_t bx = x + BOX::edges[dir].x;
BOX nbox(by, bx, b);
BOX box(y, x, nb);
int ALGOR::try_bad_turn(BOX& box, size_t& y, size_t& x, int& dir, BOARD& b,
for (dir = BOX::first; dir < BOX::last; dir++)
BOX box(y, x, b);
BOX box(y, x, b);
for (dir = BOX::first; dir < BOX::last; dir++)
BOX tbox(0, x, b);
ne += tbox.isset(BOX::top);
BOX bbox(b.ny() - 1, x, b);
ne += bbox.isset(BOX::bottom);
BOX lbox(y, 0, b);
ne += lbox.isset(BOX::left);
BOX rbox(y,_b.nx() - 1, b);
ne += rbox.isset(BOX::right);
class BOX;
int try_bad_turn(BOX& box, size_t& y, size_t& x, int& dir, BOARD& b,
int try_good_turn(BOX& box, size_t y, size_t x, int& dir, BOARD& b);
BOX box1(y, x, *this);
x += BOX::edges[dir].x;
y += BOX::edges[dir].y;
BOX box2(y, x, *this);
BOX box(y, x, const_cast<BOARD&>(*this));
BOX box(y, x, const_cast<BOARD&>(*this));
BOX box(y, x, *this);
int& BOX::name(void)
void BOX::set(int e)
void BOX::clr(int e)
int BOX::isset(int e) const
int& BOX::edge(int e)
int BOX::count(void) const
for (int e = BOX::first; e < BOX::last; e++)
void BOX::reset(void)
for (int e = BOX::first; e < BOX::last; e++)
const POINT BOX::edges[BOX::last] =
const POINT BOX::corners[BOX::last] =
const int BOX::syms[BOX::last] =
BOX::BOX(size_t py, size_t px, BOARD& b) :
void BOX::addcorner(size_t y, size_t x)
void BOX::paint(void)
for (e = BOX::first; e < BOX::last; e++) {
class BOX {
BOX(size_t py, size_t px, BOARD& b);
static const POINT edges[BOX::last];
static const POINT corners[BOX::last];
static const int syms[BOX::last];
dir = BOX::left;
dir = BOX::right;
dir = BOX::top;
dir = BOX::bottom;
| NO BOX { cur_menu->info->mopt |= MC_NOBOX; }
| BOX { cur_menu->info->mopt &= ~MC_NOBOX; }
%token <i_value> X Y W H NO BOX SUB HELP MENU NEXT EXIT ACTION ENDWIN OPTION