MATATU (c) 2016 Digital Monastery
Digital Monastery (HF) presenting a
Forum64.de Game in listable CBM V2 Basic
tight and FAST code - no compiler needed
Cursor keys = Select card
Return = Play card
"D" = Draw card
WHY WE DID IT - A REPORT BY BUGJAM
Matatu is a card game widely played in
Uganda, with slightly varying rules.
The word "matatu" means a "mix of
everything", and is also phonetic for
the sound when shuffling.
The word matatu (for Swahili "for three"
most probably after the standard price
of 3 Shillings per ride) is used for
minibus taxis as well, which provide the
main means of transport for people in
most of East Africa.
I have learned to play Matatu many years
back, when I was working with MSF
(Doctors without Borders) in Northern
Uganda; especially our drivers played it
all the time, and it was a favourite
pastime for all of us in the evenings,
as there was neither electricity nor
internet in many places.
When I came back to Uganda in early 2015
I immediately picked up playing again;
and soon I learned that there had been
created a mobile app for Android (and an
online version in flash as well) by a
Ugandan development team.
I downloaded it right away, and while it
is good fun to play (there is also an
online option to play against other
players anywhere), it turned out that
the AI does not really deserve the "I".
It was all too obvious how the computer
opponent is playing.
Anyway, at some point I came up with the
idea to suggest a conversion to my
favourite platform on the German
Forum64.de, and lo and behold the idea
was really picked up!
I had imagined it could be relatively
easily done in BASIC, and it was indeed
chosen. The whole project turned out to
be a prime example of cooperation
between various experts; the thread
quickly became one of the busiest on the
forum. Of course it was not as easy as I
as non-coder had imagined, but various
obstacles were overcome, and in many
ways the resulting AI is indeed much
cleverer than the Android app!
Each player gets 7 cards; goal of the
game is to shed all your cards first.
You always have to follow either suit or
rank, with exception of the Ace (more on
that below) - you might decide to draw a
card instead though (as you have to if
you can't serve), for tactical reasons.
But you can also finish the game by
"cutting": the first card on the stack
is deciding the cut suit, and whoever
has the 7 of that suit can finish the
game, if there are less or equal than 25
points on his hand. Then the one with
less points wins, so the number of cards
is not necessarily a reliable indicator.
For cutting, you need to know the value
of the cards, which are 3 to 10 for the
respective ranks, 11 for Jack, 12 for
Queen, 13 for King, 15 for Ace and 20
2, 8, Jack and Ace have special
functions: 8 and Jack allow/force you to
play another card (or draw if you can't)
unless they are the very last card, and
the game is finished afterwards.
The 2 forces your opponent to draw 2
cards, unless he has also a 2, in which
case you will have to draw 4!
The Ace can be played on any other card
(except the 2), and allows you to
request a suit of your choice.
There are a few differences to the
original card game as it is played in
Uganda. If the drawing stack gets
finished, the shedding stack is shuffled
again (except the topmost card) and used
as new drawing stack.
Also, the first card (deciding the cut
suit) is not used as first card on the
shedding stack, but is normally put
sideways under the drawing stack, so
that it is visible during the game at
And usually the player is still allowed
to play after picking a card (except
after a 2).
But as with many card games, there are
After all, a great and entertaining game
has emerged; my sincere thanks to
everybody involved, whom I nagged with
constant bug reports and suggestions!
Main code and game engine:
Additional code and optimizations:
RKSoft & JeeK
S!ink of Desire
Grass of Hokuto Force
Idea and docs:
Hexworx, Mac Bacon, Froehn, Unseen