mirror of
https://github.com/coding-horror/basic-computer-games.git
synced 2025-12-22 23:26:40 -08:00
Add game loops and betting
This commit is contained in:
@@ -2,6 +2,7 @@ namespace Cube;
|
|||||||
|
|
||||||
internal class Game
|
internal class Game
|
||||||
{
|
{
|
||||||
|
private const int _initialBalance = 500;
|
||||||
private readonly IReadWrite _io;
|
private readonly IReadWrite _io;
|
||||||
private readonly IRandom _random;
|
private readonly IRandom _random;
|
||||||
|
|
||||||
@@ -14,5 +15,42 @@ internal class Game
|
|||||||
public void Play()
|
public void Play()
|
||||||
{
|
{
|
||||||
_io.Write(Streams.Introduction);
|
_io.Write(Streams.Introduction);
|
||||||
|
|
||||||
|
if (_io.ReadNumber("") != 0)
|
||||||
|
{
|
||||||
|
_io.Write(Streams.Instructions);
|
||||||
|
}
|
||||||
|
|
||||||
|
PlaySeries(_initialBalance);
|
||||||
|
|
||||||
|
_io.Write(Streams.Goodbye);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void PlaySeries(float balance)
|
||||||
|
{
|
||||||
|
while (true)
|
||||||
|
{
|
||||||
|
var wager = _io.ReadWager(balance);
|
||||||
|
|
||||||
|
var gameWon = PlayGame();
|
||||||
|
|
||||||
|
if (wager.HasValue)
|
||||||
|
{
|
||||||
|
balance = gameWon ? (balance + wager.Value) : (balance - wager.Value);
|
||||||
|
if (balance <= 0)
|
||||||
|
{
|
||||||
|
_io.Write(Streams.Bust);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
_io.WriteLine(Formats.Balance, balance);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_io.ReadNumber(Prompts.TryAgain) != 1) { return; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool PlayGame()
|
||||||
|
{
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
20
30_Cube/csharp/IOExtensions.cs
Normal file
20
30_Cube/csharp/IOExtensions.cs
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
namespace Cube;
|
||||||
|
|
||||||
|
internal static class IOExtensions
|
||||||
|
{
|
||||||
|
internal static float? ReadWager(this IReadWrite io, float balance)
|
||||||
|
{
|
||||||
|
io.Write(Streams.Wager);
|
||||||
|
if (io.ReadNumber("") == 0) { return null; }
|
||||||
|
|
||||||
|
var prompt = Prompts.HowMuch;
|
||||||
|
|
||||||
|
while(true)
|
||||||
|
{
|
||||||
|
var wager = io.ReadNumber(prompt);
|
||||||
|
if (wager <= balance) { return wager; }
|
||||||
|
|
||||||
|
prompt = Prompts.BetAgain;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user