Ancient African board game as exercise in MVP and Mocking
Mancala
=======
I've had this nice wooden Mancala set for years but only recently started playing it -- a lot. I like the game because its small and simple. It is no coincidence that these tend to be favorable qualities for software as well. I couldn't resist trying my hand at writing a GUI implementation of this game, especially since I've been studying Object-Oriented GUI Best Practices (MVC, MVP, SoC, Mocking, etc.)
Mancala Rules
-------------
Much like a deck of cards has no canonical set of rules of play, a Mancala board is simply a medium for any one of hundreds of various
games. Though there are many games, most games have the following features in common:
* There are two sides to the board, each player gets six cups and a goal cup. Some have more or less than six, but I think six is typical.
* At the start of the game all of the regular cups are filled with seeds (rocks, game pieces, whatever you want to call them). I think it is typical to start with four seeds in each cup, but I've read of games starting with fewer.
* A move is made by choosing a cup, picking up the seeds and "sowing" the seeds by redistributing them to the next consecutive cups in a counter-clockwise direction.
* The objective typically involves one or both of the following
* Getting more seeds in your goal cup than your opponent does.
* Getting rid of your seeds faster than your opponent does.
**So, how do I play?** My game is influenced by my observation of games I've seen on YouTube. Until more recently, I'd never actually seen anyone play, so when I wanted to learn, I just searched for a videos of gameplay and evolved my own game from there. My game has the following rules in addition to the ones mentioned above:
* If, upon sowing your last seed, you should land in *your* goal cup, you get to go again.
* If, upon sowing your last seed, you land in a cup on your side that has only one seed, thus resulting in two seeds, you get to go again.
* If you are the first to clear out your s …