Game-Oware

Oware, the African sow and capture game, under the Abapa rules: twelve
houses, two stores and forty-eight seeds, for two players. Perfect
information, and no randomness of any kind.

The engine prints nothing, reads nothing and never calls rand. A refused
move comes back as a flagged object rather than an exception, a game
serialises as its move log rather than as a position, and a log that
records something the rules would not have produced is refused on replay.

Two rules in this game surprise people, and this distribution says so
wherever it can: a move that would take every seed an opponent has takes
none, and a seat that cannot give a starved opponent seeds takes its own
and ends the game. A third, the rule that stops a game which will not end,
is a HOUSE RULE rather than a rule of Oware, and is documented as one.

A terminal game and a bot come with it:

    oware --level 3

The board is drawn as a board: a store at each end, a seed cluster in every
house beside its count, and a mark on every house the last move touched. On a
terminal with Term::ReadKey installed the legal moves are listed under the
board and chosen with the arrow keys, and the board above the list is the one
the move under the cursor would produce, so a capture is seen before it is
played. Without it, or off a terminal, the moves are typed out a letter at a
time. The marks are characters rather than colours, so NO_COLOR, --no-ansi and
a redirected handle all keep them.

INSTALLATION

    perl Makefile.PL
    make
    make test
    make install

LICENSE AND COPYRIGHT

This software is Copyright (c) 2026 by LNATION <email@lnation.org>.

This is free software, licensed under the Artistic License 2.0.
