/beans

Simple game to illustrate concepts such as technical debt and cost of lost opportunity

Primary LanguageRubyGNU General Public License v3.0GPL-3.0

#Beans - A simple game to explore the concept of technical debt

Copyright (C) 2013-2014 Shark Tank Ltd.

#License This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

#Description There are 5 jars, numbered 1-5. The last jar contains 30 jelly beans; 6 each of the following colours: red, blue, yellow, green, black. The player's job is to sort the jelly beans so that each jar contains 6 jelly beans of the same colour (e.g., jar 1 contains all the red jelly beans, jar 2 contains all the yellow jelly beans, etc).

Every turn the player can withdraw 1 random jelly bean from any of the jars and deposit it in any open jar.
Specific jars are only open at certain times. Jar 2 is open every turn. Jar 2 is open every second turn.
Jar 3 is open every 3rd turn. Jar 4 is open every 4th turn. Jar 5 is open every 5th turn. Alternatively, the user can pass his turn (i.e., not deposit a jelly bean) before or after they have withdrawn a jelly bean. The user can not withdraw another jelly bean until they have deposited the jelly bean that they have already withdrawn, though.

The player gets points by releasing a "snapshot" of the jars. When one of the jars contains exactly 6 jelly beans of the same colour (and no other jelly beans), the player can release a "snapshot". The player receives points for each new jar containing 6 jelly beans of the same colour since the last released snapshot. The player receives no new points for a jar containing jelly beans of the same colour as a previous release, even if the the jar number has changed. For example, jar 0 contains all the red jelly beans and no other beans.
The user releases a snapshot and receives points. The user then moves all the red jelly beans into jar 1. The user can release a snapshot, but they receive no extra points. The user moves all the red jelly beans into jar 2 and has all the blue jelly beans in jar 0. The user receives extra points for the jar with blue jelly beans, but not for the jar with red jelly beans.

The user is not allowed to release a snapshot with less "functionality" than the last release. If they released a snapshot with all the red jelly beans in jar 1, they may not release a snapshot unless they have a jar (any jar) with all the red jelly beans (and no other beans).

The potential points you can score decrease every turn.
The speed at which it decreases changes over time. It decreases faster at the beginning of the game than later on in the game. I do not have a solid idea of the best algorithm to use for decreasing.

The goal is to score the maximum number of points by the time all the jelly beans are sorted.