/// <summary> /// Generates a roll of the given type and removes and returns that many pins. /// </summary> /// <param name="rollType"></param> /// <param name="manualValue"></param> /// <returns></returns> public int Bowl(RollOptions.RollTypes rollType, int manualValue = 0) { Roll roll = new Roll(PinsStanding, rollType, manualValue); ProcessRoll(roll); return(roll.RollValue); }
/// <summary> /// Constructor /// </summary> /// <param name="pinsStanding"></param> /// <param name="rollType"></param> /// <param name="manualRoll"></param> public Roll(int pinsStanding, RollOptions.RollTypes rollType, int manualRoll = 0) { if (pinsStanding < Roll.MIN_SINGLE_ROLL || pinsStanding > Roll.MAX_SINGLE_ROLL) { throw new InvalidRollException($"The number of pins standing must be between {MIN_SINGLE_ROLL} and {MAX_SINGLE_ROLL} inclusive."); } RollType = rollType; switch (RollType) { case RollOptions.RollTypes.MANUAL: RollValue = manualRoll; break; case RollOptions.RollTypes.RANDOM: default: //this is not a very good random number generator Random random = new Random((int)DateTime.UtcNow.TimeOfDay.TotalMilliseconds); RollValue = random.Next(0, pinsStanding + 1); break; } }
/// <summary> /// Have the bowler bowl. /// </summary> /// <param name="rollType"></param> /// <param name="manualRoll">Used if roll type is manual</param> /// <returns></returns> public int Bowl(RollOptions.RollTypes rollType, int manualRoll = 0) { return(game.Bowl(rollType, manualRoll)); }