Simplify Craps (C#) folder structure

This commit is contained in:
Zev Spitz
2022-01-17 08:24:39 +02:00
parent d4fac2463e
commit 7e480f9461
9 changed files with 0 additions and 0 deletions

View File

@@ -0,0 +1,73 @@
namespace Craps
{
public enum Result
{
// It's not used in this program but it's often a good idea to include a "none"
// value in an enum so that you can set an instance of the enum to "invalid" or
// initialise it to "none of the valid values".
noResult,
naturalWin,
snakeEyesLoss,
naturalLoss,
pointLoss,
pointWin,
};
class CrapsGame
{
private readonly UserInterface ui;
private Dice dice1 = new Dice();
private Dice dice2 = new Dice();
public CrapsGame(ref UserInterface ui)
{
this.ui = ui;
}
public Result Play(out int diceRoll)
{
diceRoll = dice1.Roll() + dice2.Roll();
if (Win(diceRoll))
{
return Result.naturalWin;
}
else if (Lose(diceRoll))
{
return (diceRoll == 2) ? Result.snakeEyesLoss : Result.naturalLoss;
}
else
{
var point = diceRoll;
ui.Point(point);
while (true)
{
var newRoll = dice1.Roll() + dice2.Roll();
if (newRoll == point)
{
diceRoll = newRoll;
return Result.pointWin;
}
else if (newRoll == 7)
{
diceRoll = newRoll;
return Result.pointLoss;
}
ui.NoPoint(newRoll);
}
}
}
private bool Lose(int diceRoll)
{
return diceRoll == 2 || diceRoll == 3 || diceRoll == 12;
}
private bool Win(int diceRoll)
{
return diceRoll == 7 || diceRoll == 11;
}
}
}