// The "Maker & Taker" Game sclass MakerAndTakerGame { Bool makerSaysUp; int takersCurrentBet; int takersScore; bool takersTurn = true; // taker always starts int roundsPlayed; void step { if (takersTun) take(); else make(); } // This defines the crypto's movement over time. swappable bool nextMoveIsUp() { fail("Put something here"); } void make { makerSaysUp = nextMoveIsUp(); takersScore += takersCurrentBet*(makerSaysUp ? 1 : -1); ++roundsPlayed; takersTurn = true; } // Taker's secret sauceee swappable void magicJuice {} void take { // Do strategy XYZ super-smart mega calculation stuff. // (you can, but don't have to, make use of the value of makerSaysUp.) // Set takersCurrentBet to a really smart value. // If you're done betting, just say takersCurrentBet = 0 and you're out // immediately. magicJuice(); takersTurn = false; } }