Sufferball
-
Briefly explained,
public abstract class Scoring implements BallScores, PlayerScores, GoalieScores { /** * Any gerbils not in a gerbil cage, count as free. * Gerbil cages will eject hamsters on detection. * Gerbil cages will eject gerbils at random. */ protected volatile int freeGerbils; /** * Hamster cages work like gerbil cages, but for hamsters. */ protected volatile int freeHamsters; protected volatile int playerScore; /** * Implementations must * count the number of gerbil cages without a gerbil in them * and may * signal ejection of hamsters from gerbil cages. */ @Override public abstract int countFreeGerbils(); /** * Hamster freedom works like gerbil freedom, but for hamsters. */ @Override public abstract int countFreeHamsters(); /** * The goalie bot can't * go faster than this. */ @Override public int getMaxKph() { return 10 * freeGerbils; } /** * The goalie bot can't * turn more sharply than this. */ @Override public int getMaxTurnDegrees() { return 10 * freeHamsters; } /** * The razor-sharp toughened steel blade on the front of the goalie bot * can't turn faster than this. */ @Override public int getBladeRpm() { return getMaxKph() * getMaxTurnDegrees(); } /** * You are in an Atlasphere, the inside surface has small-animal cages on it. * Score is re-evaluated for every meter you move. */ public void incrementScore() { playerScore += freeGerbils * freeHamsters; } }