private static RouletteResult ProcessBets(RouletteResult rouletteResult, int number, Color color) { rouletteResult.Bets.ForEach( x => x.BetResult = x.Bet.BetValue * (x.Bet.Number == number ? 5m : x.Bet.Color == color ? 1.8m : 0m) ); return(rouletteResult); }
/// <summary> /// The Amount that the player receives at the end of a round /// </summary> /// <param name="result">Called to detail the result of the most recent roll from the wheel.</param> public void NotifyTheResult(RouletteResult result) { _rouletteResultProbabilities[result] -= _enumLength; foreach (var idx in Enum.GetValues(typeof(RouletteResult))) { var rIdx = (RouletteResult)idx; _rouletteResultProbabilities[rIdx]++; } }
private ConcurrentQueue <RouletteResult> CreateResultsList(List <Candidate> candList, double fittnesSum) { ConcurrentQueue <RouletteResult> rouletteResults = new ConcurrentQueue <RouletteResult>(); double probability = 0; double p2 = 0; Parallel.ForEach(candList, candidate => { probability = (1 / candidate.fitness) / fittnesSum; RouletteResult result = new RouletteResult(p2, probability, candidate); p2 += probability; rouletteResults.Enqueue(result); }); return(rouletteResults); }
private List <RouletteResult> CreateResultsList(List <Candidate> candList, double fittnesSum) { List <RouletteResult> rouletteResults = new List <RouletteResult>(); double probability = 0; double p2 = 0; foreach (var candidate in candList) { probability = (1 / candidate.fitness) / fittnesSum; RouletteResult result = new RouletteResult(p2, probability, candidate); p2 += probability; rouletteResults.Add(result); } return(rouletteResults); }
public RouletteResult CloseBets(Guid id) { var roulette = GetRoulette(id); var(number, color) = SpinRoulette(); var rouletteResult = new RouletteResult() { Id = roulette.Id, Number = number, Color = color, Bets = roulette.Bets }; rouletteResult = ProcessBets(rouletteResult, number, color); _cache.JsonSet(id.ToString(), rouletteResult); Roulettes = Roulettes.Where(x => x != id).ToList(); RouletteResults = RouletteResults.Append(id).ToList(); return(rouletteResult); }
public async Task RouletteAsync(RouletteBetMode mode, long wager) { if (wager < 0) { await Context.Channel.SendMessageAsync($"> 👁️ You can't specify a **negative** value.\n> *\"I know what you were trying to do.\"*"); return; } if (wager == 0) { // $"> ⚠️ You need to specify a positive amount of **Chips** to bet." await Context.Channel.SendMessageAsync($"> ⚠️ You need to specify a positive amount of **Chips** to bet."); return; } if (wager > Context.Account.ChipBalance) { await Context.Channel.SendMessageAsync($"> ⚠️ You don't have enough **Chips** to bet with."); return; } if (wager > Roulette.MaxWager) { await Context.Channel.SendMessageAsync($"> ⚠️ The maximum wager for **Roulette** is {Icons.Chips} **{Roulette.MaxWager:##,0}**."); return; } RouletteResult result = Roulette.Next(Context.Account, mode, wager); Message message = result.ApplyAndDisplay(Context.Account); await Context.Channel.SendMessageAsync(Context.Account, message).ConfigureAwait(false); }
/// <summary> /// The Amount that the player receives at the end of a round /// </summary> /// <param name="result">Called to detail the result of the most recent roll from the wheel.</param> public void NotifyTheResult(RouletteResult result) { //do nothing... I to dum }
public void Setup() { FakeRouletteId = Guid.Parse("8cc32b40-578d-47c1-bb9f-63240737243f"); FakeNotFoundRouletteId = Guid.Parse("00000000-0000-0000-0000-000000000000"); FakeOpenRouletteId = Guid.Parse("b5b1a0c6-efc7-43b4-91b1-024a0268a7cf"); FakeCloseRouletteId = Guid.Parse("90e031e0-9db9-4aa2-af94-832c6e13eed4"); FakeBetId = Guid.Parse("496929ae-c452-41ea-8b45-67e179b75f36"); FakeRoulette = GetRouletteFake(FakeRouletteId, false); FakeOpenRoulette = GetRouletteFake(FakeOpenRouletteId, true); FakeCloseRoulette = GetRouletteFake(FakeCloseRouletteId, false); FakeBet = GetBetFake(FakeBetId, 4, 5000m); FakeRouletteResult = GetRouletteResultFake(FakeRouletteId, new List <BetUser>() { FakeBet }); _rouletteRepositoryMock.Setup(x => x.GetById(It.Is <Guid>(x => x == FakeRouletteId))) .Returns(FakeRoulette); _rouletteRepositoryMock.Setup(x => x.GetById(It.Is <Guid>(x => x == FakeOpenRouletteId))) .Returns(FakeOpenRoulette); _rouletteRepositoryMock.Setup(x => x.Get()) .Returns(new List <dynamic>() { FakeRoulette, FakeRouletteResult }); _rouletteRepositoryMock.Setup(x => x.Create()) .Returns(FakeRouletteId); _rouletteRepositoryMock.Setup(x => x.OpenBets(It.Is <Guid>(x => x == FakeRouletteId))) .Returns(true); _rouletteRepositoryMock.Setup(x => x.CloseBets(It.Is <Guid>(x => x == FakeOpenRouletteId))) .Returns(FakeRouletteResult); _rouletteRepositoryMock.Setup(x => x.Exist(It.Is <Guid>(x => x == FakeRouletteId))) .Returns(true); _rouletteRepositoryMock.Setup( x => x.MakeBet( It.Is <Guid>(x => x == FakeOpenRouletteId), It.Is <Guid>(x => x == FakeBetId), FakeBet.Bet )).Returns(true); Roulette nullObj = null; _rouletteRepositoryMock.Setup(x => x.GetById(It.Is <Guid>(x => x == FakeNotFoundRouletteId))) .Returns(nullObj); _rouletteRepositoryMock.Setup(x => x.GetById(It.Is <Guid>(x => x == FakeOpenRouletteId))) .Returns(FakeOpenRoulette); _rouletteRepositoryMock.Setup(x => x.GetById(It.Is <Guid>(x => x == FakeCloseRouletteId))) .Returns(FakeCloseRoulette); _rouletteRepositoryMock.Setup(x => x.Exist(It.Is <Guid>(x => x == FakeNotFoundRouletteId))) .Returns(false); _rouletteRepositoryMock.Setup(x => x.Exist(It.Is <Guid>(x => x == FakeOpenRouletteId))) .Returns(true); _rouletteRepositoryMock.Setup(x => x.Exist(It.Is <Guid>(x => x == FakeCloseRouletteId))) .Returns(true); var httpContext = new DefaultHttpContext(); httpContext.Request.Headers["UserId"] = FakeBetId.ToString(); RouletteController = new RoulettesController( _rouletteRepositoryMock.Object, _loggerMock.Object ) { ControllerContext = new ControllerContext() { HttpContext = httpContext, } }; }
/// <summary> /// The Amount that the player receives at the end of a round /// </summary> /// <param name="result">Called to detail the result of the most recent roll from the wheel.</param> public void NotifyTheResult(RouletteResult result) { //do nothing... just keep swimming }