Exemple #1
0
        public void GoAllIn(Collection <Player> players)
        {
            Collection <Player> playersInPot = new Collection <Player>(players.ToList());
            int minPot = GetMinPlayerPot(players);

            foreach (Player P in players)
            {
                P.PlayerPot -= minPot;
                Pots[currPotForBetting].AddChips(minPot);
                if (P.PlayerPot == 0)
                {
                    playersInPot.Remove(P);
                }
            }

            while (playersInPot.Count != 0)
            {
                minPot             = GetMinPlayerPot(playersInPot);
                currPotForBetting += 1;
                Pots.Add(new Pot(playersInPot));
                Collection <Player> playersNewInPot = new Collection <Player>(playersInPot.ToList());
                foreach (Player P in playersInPot)
                {
                    P.PlayerPot -= minPot;
                    Pots[currPotForBetting].AddChips(minPot);
                    if (P.PlayerPot == 0)
                    {
                        playersNewInPot.Remove(P);
                    }
                }
                playersInPot = new Collection <Player>(playersNewInPot.ToList());
            }
        }
Exemple #2
0
        /// <summary>
        /// Takes evey money pots and distribute money to the deserving players
        /// </summary>
        /// <param name="rankedPlayers">Players ranked</param>
        /// <returns>All the won pots</returns>
        public IEnumerable <WonPot> DistributeMoney(IEnumerable <EvaluatedCardHolder <PlayerCardHolder> > rankedPlayers)
        {
            IList <WonPot> pots            = new List <WonPot>();
            var            playersWithRank = rankedPlayers.ToArray();

            //Just to be sure there is no money left in play
            DepositMoneyInPlay();

            //Distribute all money pots
            while (Pots.Any())
            {
                var winners = Pots.Pop().Distribute(playersWithRank).ToArray();
                var wonPot  = new WonPot(Pots.Count, winners.Select(x => x.Value).DefaultIfEmpty(0).Sum(), winners.Where(x => x.Key != null));

                MoneyAmount -= wonPot.TotalPotAmount;

                pots.Add(wonPot);
            }

            //Create a new empty moneypot ready for the next game
            Pots.Push(new MoneyPot());

            //Return pots so they are in good order
            return(pots.OrderBy(x => x.PotId));
        }
Exemple #3
0
        public bool Fold(string name)
        {
            var player = GetPlayer(name);

            VerifyIsPlayersTurn(player);
            BetQueue.RemoveFirst();
            player.Folded  = true;
            player.Hand[0] = null;
            player.Hand[1] = null;
            Pots.ForEach(x => x.RemovePlayer(player));

            if (GetPlayersStillInGame().Count() == 1)
            {
                BetQueue.Clear();
                State = State.DeterminingWinner;
                NextStage();
                return(false);
            }
            else
            {
                if (BetQueue.Count == 0)
                {
                    NextStage();
                    return(false);
                }
                else
                {
                    return(true);
                }
            }
        }
Exemple #4
0
 public ActionResult InsertPots()
 {
     if (Session["UserID"] != null)
     {
         Pots pots   = new Pots();
         int  userid = int.Parse(Session["UserID"].ToString());
         pots.UserID     = userid;
         pots.LevelID    = 1;
         pots.Experience = 1;
         Pots userpots = potsmanager.GetPotsByUserID(userid);
         if (userpots == null)
         {
             if (potsmanager.InsertPots(pots))
             {
                 return(Content("<script>alert('开通成功!');window.open('" + Url.Content("~/UserCenter/Index") + "', '_self')</script>"));
             }
             else
             {
                 return(Content("<script>alert('开通失败!');window.open('" + Url.Content("~/UserCenter/Index") + "', '_self')</script>"));
             }
         }
         else
         {
             return(Content("<script>alert('您已经开通过啦,不能重复开通哦!');window.open('" + Url.Content("~/UserCenter/Index") + "', '_self')</script>"));
         }
     }
     else
     {
         return(Content("<script>alert('请先登录!');window.open('" + Url.Content("~/UserCenter/Index") + "', '_self')</script>"));
     }
 }
Exemple #5
0
        public bool PotsSign(int UserID)
        {
            Pots     pot = GetPotsByUserID(UserID);
            DateTime oldsign;

            if (pot.Sign == null)
            {
                oldsign = DateTime.Parse("2000-01-01 00:00:00");
            }
            else
            {
                oldsign = DateTime.Parse(pot.Sign.ToString()); //获取上次的签到日期
            }
            TimeSpan range     = DateTime.Now - oldsign;       //获取当前时间和上次签到日期的时间差
            int      rangeDays = range.Days;                   //获取天数差

            pot.Sign = DateTime.Now;
            if (pot.SignDays == null || rangeDays != 1)//新用户第一次签到或老用户间断签到,连续签到天数设置为0,经验+2
            {
                pot.SignDays    = 0;
                pot.Experience += 2;
            }
            else if (pot.SignDays >= 2 && rangeDays == 1)//用户连续签到3天,经验+4
            {
                pot.SignDays   += 1;
                pot.Experience += 4;
            }
            else
            {
                pot.SignDays   += 1;
                pot.Experience += 2;
            }
            db.Entry(pot).State = EntityState.Modified;
            return(db.SaveChanges() > 0);
        }
Exemple #6
0
        public void get_pots_by_potter()
        {
            var         mock    = new Mock <IPotsAndPotters>();
            Pots        p1      = new Pots(2, "Large Jug", 1, "Fitch");
            Pots        p2      = new Pots(3, "Large Bowl", 1, "Fitch");
            Pots        p3      = new Pots(4, "Large Tankard", 1, "Fitch");
            List <Pots> allpots = new List <Pots>();

            allpots.Add(p1); allpots.Add(p2); allpots.Add(p3);
            mock.Setup(foo => foo.getPotsByPotter(1)).Returns(allpots);

            var mockurlhelper = new Mock <IURLHelper>();

            mockurlhelper.Setup(foo => foo.buildPotURL(2)).Returns(@"http://localhost/pots/pots/2");
            mockurlhelper.Setup(foo => foo.buildPotterURL(1)).Returns(@"http://localhost/potters/potters/1");
            mockurlhelper.Setup(foo => foo.buildPotURL(3)).Returns(@"http://localhost/pots/pots/3");
            mockurlhelper.Setup(foo => foo.buildPotterURL(1)).Returns(@"http://localhost/potters/potters/1");
            mockurlhelper.Setup(foo => foo.buildPotURL(4)).Returns(@"http://localhost/pots/pots/4");
            mockurlhelper.Setup(foo => foo.buildPotterURL(1)).Returns(@"http://localhost/potters/potters/1");

            var strs = new PotsDelegate(mock.Object, mockurlhelper.Object).getPotsByPotterId(1);

            Assert.AreEqual(3, strs.Length);
            mock.Verify(foo => foo.getPotsByPotter(1), Times.AtMostOnce);
            mock.VerifyNoOtherCalls();
        }
Exemple #7
0
        private string stringify_pot(Pots pot)
        {
            JSONPot jsonpot = new JSONPot(pot, urlhelper);
            string  s       = JsonConvert.SerializeObject(jsonpot);

            return(s);
        }
Exemple #8
0
        public bool UpdateExperience(int UserID, int Exp)
        {
            Pots pot = GetPotsByUserID(UserID);

            pot.Experience     += Exp;
            db.Entry(pot).State = EntityState.Modified;
            return(db.SaveChanges() > 0);
        }
Exemple #9
0
        public ActionResult DeleteConfirmed(int id)
        {
            Pots pots = db.Pots.Find(id);

            db.Pots.Remove(pots);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
Exemple #10
0
 public PotManager(Collection <Player> players, GameType gameType, Chip bigBlind)
 {
     _gameType = gameType;
     _bigBlind = bigBlind;
     this.currPotForBetting = 0;
     this._previousRaise    = new Chip(0);
     this.Pots = new Collection <Pot>();
     Pots.Add(new Pot(players));
 }
Exemple #11
0
        public int?createPot(string v)
        {
            Pots p = parsePot(v);

            if (p == null)
            {
                return(null);
            }
            return(backEnd.createPot(p));
        }
Exemple #12
0
 public void use(Pots pot)
 {
     if (currentWater <= 0)
     {
         Debug.Log("Water Can : There is no more water!");
         return;
     }
     currentWater -= 1;
     pot.setWater(true);
 }
Exemple #13
0
 public ActionResult Edit([Bind(Include = "PotID,UserID,LevelID,Experience,Sign,SignDays")] Pots pots)
 {
     if (ModelState.IsValid)
     {
         db.Entry(pots).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     ViewBag.LevelID = new SelectList(db.Level, "LevelID", "LevelName", pots.LevelID);
     ViewBag.UserID  = new SelectList(db.Users, "UserID", "UserName", pots.UserID);
     return(View(pots));
 }
Exemple #14
0
 public int GetUserLevel(string UserName)
 {
     try
     {
         Pots pot   = db.Pots.Include("Users").Where(u => u.Users.UserName == UserName).FirstOrDefault();
         int  level = pot.LevelID;
         return(level);
     }
     catch
     {
         return(0);
     }
 }
Exemple #15
0
        public string getPotById(int id)
        {
            Pots pot = backEnd.getPotById(id);

            if (pot == null)
            {
                return(null);
            }
            else
            {
                return(stringify_pot(pot));
            }
        }
Exemple #16
0
        private void SetPot(int index, IEnumerable <Player> playerPool = null)
        {
            var players = playerPool ?? Players;

            if (MinBet != 0 || players.Count() > 0) // We didn't check around, if we did there is no money to add to the pot
            {
                var testValue = players.Max(x => x.CurrentBet);
                if (players.All(x => x.CurrentBet == testValue || x.CurrentBet == 0))
                {
                    Pots[index].AddToPot(Players.Sum(x => x.CurrentBet));
                    foreach (var p in players)
                    {
                        p.CurrentBet = 0;
                    }
                }
                else
                {
                    var playerAllIn       = players.Where(x => x.CurrentBet == (players.Min(y => y.CurrentBet))).ElementAt(0);
                    var betValue          = playerAllIn.CurrentBet;
                    var sumAddedToMainPot = 0.0;
                    foreach (var p in Players)
                    {
                        if (p.CurrentBet != 0 && p.CurrentBet >= playerAllIn.CurrentBet)
                        {
                            sumAddedToMainPot += betValue;
                            p.CurrentBet      -= betValue;
                        }
                        else if (p.CurrentBet < playerAllIn.CurrentBet) // the player(p) had folded
                        {
                            sumAddedToMainPot += p.CurrentBet;
                            p.CurrentBet       = 0;
                        }
                    }
                    Pots[index].AddToPot(sumAddedToMainPot);

                    Pot newPot = new Pot();
                    newPot.EligiblePlayers = players.Where(x => x.CurrentBet > 0).ToList();
                    if (newPot.EligiblePlayers.Count == 1)
                    {
                        newPot.EligiblePlayers.ElementAt(0).Chips     += newPot.EligiblePlayers.ElementAt(0).CurrentBet;
                        newPot.EligiblePlayers.ElementAt(0).CurrentBet = 0;
                    }
                    else
                    {
                        Pots.Add(newPot);
                        currentPotIndex++;
                        SetPot(currentPotIndex, players.Where(x => x.CurrentBet > 0));
                    }
                }
            }
        }
Exemple #17
0
        // GET: PotsManagement/Details/5
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Pots pots = db.Pots.Find(id);

            if (pots == null)
            {
                return(HttpNotFound());
            }
            return(View(pots));
        }
Exemple #18
0
        public void deconstruct_pot()
        {
            Pots pot = new Pots();

            pot.PotterName  = "Jimi";
            pot.Id          = 22;
            pot.PottersId   = 1;
            pot.Description = "Large Bowl";

            (int pot_id, int pot_potterid, String pot_pottername, String pot_description) = pot;
            Assert.AreEqual(22, pot_id);
            Assert.AreEqual(1, pot_potterid);
            Assert.AreEqual("Jimi", pot_pottername);
            Assert.AreEqual("Large Bowl", pot_description);
        }
Exemple #19
0
        public void create_new_pot()
        {
            var  mock = new Mock <IPotsAndPotters>();
            Pots p    = new Pots("Large Jug", 1, "Fitch");

            mock.Setup(foo => foo.createPot(p)).Returns(1);

            var mockurlhelper = new Mock <IURLHelper>();

            int?newid = new PotsDelegate(mock.Object, mockurlhelper.Object).createPot("{\"PottersId\": 1, \"PotterName\" : \"Fitch\", \"Description\" : \"Large Jug\"}");

            Assert.AreEqual(1, newid);
            mock.Verify(foo => foo.createPot(p), Times.AtMostOnce);
            mock.VerifyNoOtherCalls();
        }
Exemple #20
0
        private void Game_OnTick()
        {
            var mana = Player.ManaPercent;

            if (killstealMenu.GetCheckbox("enable"))
            {
                Killsteal.DoKS();
            }


            if (Orbwalker.ActiveMode == (OrbwalkingMode.Combo) && mana >= comboMenu.GetSlider("mana"))
            {
                Combo.DoCombo();
                Items.DoItems();
                Items.Doorbs();
            }

            if (Orbwalker.ActiveMode == (OrbwalkingMode.Harass) && mana >= harassMenu.GetSlider("mana"))
            {
                Harass.DoHarass();
            }

            if (Orbwalker.ActiveMode == (OrbwalkingMode.LaneClear) && mana >= laneclearMenu.GetSlider("mana"))
            {
                LaneClear.DoLaneClear();
            }

            if (Orbwalker.ActiveMode == (OrbwalkingMode.LastHit) && mana >= lasthitMenu.GetSlider("mana"))
            {
                LastHit.DoLastHit();
            }

            if (Orbwalker.ActiveMode == (OrbwalkingMode.Flee))
            {
                Flee.DoFlee();
                Items.DoItems();
            }
            //Items.DoQss();
            Pots.DoPots();
            SS.DoSmite();
            SS.DoHeal();
            if (qRange == GetQRange())
            {
                return;
            }
            qRange  = GetQRange();
            Q.Range = qRange;
        }
Exemple #21
0
        // GET: PotsManagement/Edit/5
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Pots pots = db.Pots.Find(id);

            if (pots == null)
            {
                return(HttpNotFound());
            }
            ViewBag.LevelID = new SelectList(db.Level, "LevelID", "LevelName", pots.LevelID);
            ViewBag.UserID  = new SelectList(db.Users, "UserID", "UserName", pots.UserID);
            return(View(pots));
        }
Exemple #22
0
            public string ToString(int pMinRange, int pMaxRange)
            {
                var potString = string.Empty;

                for (int i = pMinRange; i <= pMaxRange; i++)
                {
                    if (Pots.ContainsKey(i))
                    {
                        potString += Pots[i].HasPlant ? "#" : ".";
                    }
                    else
                    {
                        potString += ".";
                    }
                }
                return(potString);
            }
Exemple #23
0
        /// <summary>
        /// Takes all the money in front of every player and deposit it into money pots.
        /// </summary>
        public void DepositMoneyInPlay()
        {
            var allInPlayers = PlayersWithMoneyAmountInPlay.Where(p => p.State == PlayerStateEnum.AllIn).ToArray();

            if (allInPlayers.Any())
            {
                int given = 0;
                foreach (var cap in allInPlayers.Select(p => p.MoneyBetAmnt).OrderBy(a => a))
                {
                    PlayersWithMoneyAmountInPlay.ForEach(p => Pots.Peek().Contribute(p, cap - given));
                    given += cap - given;
                    Pots.Push(new MoneyPot());
                }
            }
            PlayersWithMoneyAmountInPlay.ForEach(p => Pots.Peek().Contribute(p, p.MoneyBetAmnt));
            PlayersWithMoneyAmountInPlay.Clear();
        }
Exemple #24
0
        public bool ShowCards(string name)
        {
            var player = GetPlayer(name);

            VerifyIsPlayersTurn(player);
            BetQueue.RemoveFirst();
            Pots.ForEach(x => x.RemovePlayer(player));
            ShowPlayerCards.Add(player);
            if (BetQueue.Count == 0)
            {
                NextStage();
                return(false);
            }
            else
            {
                return(true);
            }
        }
Exemple #25
0
        public void get_pot_by_id_test()
        {
            var  mock = new Mock <IPotsAndPotters>();
            Pots p    = new Pots(2, "Large Jug", 1, "Fitch");

            mock.Setup(foo => foo.getPotById(2)).Returns(p);
            var mockurlhelper = new Mock <IURLHelper>();

            mockurlhelper.Setup(foo => foo.buildPotURL(2)).Returns(@"http://localhost/pots/pots/2");
            mockurlhelper.Setup(foo => foo.buildPotterURL(1)).Returns(@"http://localhost/potters/potters/1");
            var s = new PotsDelegate(mock.Object, mockurlhelper.Object).getPotById(2);

            string expected = "{\"href\":\"http://localhost/pots/pots/2\",\"description\":\"Large Jug\",\"potterhref\":\"http://localhost/potters/potters/1\"}";

            Assert.AreEqual(expected, s);
            mock.Verify(foo => foo.getPotById(2), Times.AtMostOnce);
            mock.VerifyNoOtherCalls();
        }
Exemple #26
0
        private void ClaimPots()
        {
            while (Pots.Any(x => x.Chips > 0))
            {
                var currentPot = Pots.OrderByDescending(x => x.EligiblePlayers.Count()).First(x => x.Chips > 0);

                currentPot.EligiblePlayers.Shuffle();

                var winningPlayer = currentPot.EligiblePlayers.First();
                winningPlayer.Chips += currentPot.Chips;
                currentPot.Chips     = 0;

                foreach (var pot in Pots.Where(x => x.Chips > 0 && x.EligiblePlayers.Contains(winningPlayer)))
                {
                    winningPlayer.Chips += pot.Chips;
                    pot.Chips            = 0;
                }
            }
        }
Exemple #27
0
        public bool HideCards(string name)
        {
            var player = GetPlayer(name);

            VerifyIsPlayersTurn(player);
            BetQueue.RemoveFirst();
            player.Hand[0] = null;
            player.Hand[1] = null;
            Pots.ForEach(x => x.RemovePlayer(player));
            if (BetQueue.Count == 0)
            {
                NextStage();
                return(false);
            }
            else
            {
                return(true);
            }
        }
Exemple #28
0
        private Pots parsePot(string v)
        {
            Pots p = JsonConvert.DeserializeObject <Pots>(v);

            return(p);

            /*
             * string[] splits = v.Split(new char[] { ',', '{', '}' }, StringSplitOptions.RemoveEmptyEntries);
             * if (splits.Length == 3)
             * {
             *  int potterid;
             *  if (int.TryParse(splits[0], out potterid))
             *  {
             *      return new Pots(splits[2], potterid, splits[1]);
             *  }
             * }
             * return null;
             */
        }
Exemple #29
0
        public void SplitPotAbovePlayersAmount(int potIndex, int playerIndex)
        {
            // Find out how much the given player has in the given pot, and split the pot so that higher contributions are moved to a new pot
            int potLimit = ChipsInSpecifiedPotForSpecifiedPlayer(potIndex, playerIndex);

            AddCommentary("Splitting pot " + (potIndex + 1) + " with contribution cap of " + potLimit);
            Pots.Insert(potIndex + 1, new List <int>());
            for (int player = 0; player < Pots[potIndex].Count; player++)
            {
                // Move any surplus amounts from old pot to new for each player
                if (Pots[potIndex][player] > potLimit)
                {
                    Pots[potIndex + 1].Add(Pots[potIndex][player] - potLimit); // Move surplus to new pot
                    Pots[potIndex][player] = potLimit;                         //Limit current pot contribution
                }
                else
                {
                    Pots[potIndex + 1].Add(0); // No surplus to move for this player
                }
            }
        }
Exemple #30
0
        private void Game_OnTick()
        {
            if (Orbwalker.ActiveMode == (OrbwalkingMode.Combo) && itemMenu.GetCheckbox("enable"))
            {
                Items.DoItems();
                Items.Doorbs();
            }

            if (Orbwalker.ActiveMode == (OrbwalkingMode.LaneClear) && itemMenu.GetCheckbox("enable"))
            {
                Items.Dohydra();
            }

            if (Orbwalker.ActiveMode == (OrbwalkingMode.Flee) && itemMenu.GetCheckbox("enable"))
            {
                Items.DoItems();
            }
            SS.DoSmite();
            Items.DoQss();
            SS.DoHeal();
            Pots.DoPots();
        }