예제 #1
0
 void Start()
 {
     if (!isServer)
     {
         return;
     }
     game = GameObject.FindGameObjectWithTag("Scripts").GetComponent <TexasHoldEm>();
 }
예제 #2
0
        static void Main(string[] args)
        {
            Console.WriteLine("Game Begin");

            bool run = true;

            var game = new TexasHoldEm();

            game.PlayerJoins("Magnus");
            game.PlayerJoins("Per");
            game.PlayerJoins("Bertil");
            //game.PlayerJoins("Sven");
            //game.PlayerJoins("Göran");
            //game.PlayerJoins("Adrian");
            //game.PlayerJoins("Erik");
            //game.PlayerJoins("Nils");

            while (run)
            {
                game.Begin();

                foreach (var player in game.Players())
                {
                    Console.WriteLine("Name: {0} Card1: {1} Card2: {2}", player.Name, player.Hand.Cards[0], player.Hand.Cards[1]);
                }

                foreach (var card in game.Cards)
                {
                    Console.WriteLine("Card: {0}", card);
                }

                Console.WriteLine();

                game.End();

                foreach (var player in game.Players())
                {
                    Console.WriteLine(string.Concat(player.Name, " ", player.Hand.HandType));
                }


                if (Console.ReadLine() == "exit")
                {
                    run = false;
                }
            }
        }
예제 #3
0
    public override void OnServerDisconnect(NetworkConnection conn)
    {
        print("Client disconnected, removing player");

        TexasHoldEm game   = GameObject.FindGameObjectWithTag("Scripts").GetComponent <TexasHoldEm>();
        Player      player = null;

        foreach (Player p in game.Players)
        {
            if (p.GetComponent <NetworkIdentity>().connectionToClient == conn)
            {
                player = p;
            }
        }

        player.Ready  = true;
        player.Folded = true;
        game.RemovePlayer(player);
    }
    public IEnumerator GameProgressesCorrectly()
    {
        // Scene setup
        SceneManager.LoadScene("default", LoadSceneMode.Single);

        yield return(new WaitForSeconds(1));

        CustomNetworkManager networkManager = GameObject.FindGameObjectWithTag("NetworkManager").GetComponent <CustomNetworkManager>();

        networkManager.StartHost();
        yield return(new WaitForSeconds(1));

        Table       table = GameObject.FindGameObjectWithTag("Table").GetComponent <Table>();
        TexasHoldEm game  = GameObject.FindGameObjectWithTag("Scripts").GetComponent <TexasHoldEm>();

        Assert.IsNotNull(game);
        Assert.IsNotNull(table);

        yield return(new WaitForSeconds(1));

        game.PlaceHolderStart();

        Assert.IsTrue(game.Players.Length == 1);
        Assert.IsFalse(game.GameIsReady);

        game.Players[0].Ready = true;

        yield return(new WaitForSeconds(2));

        Assert.IsTrue(game.RoundIsOn);

        // AI
        Assert.IsTrue(game.Players.Length == 10);

        foreach (Player p in game.Players)
        {
            Assert.IsTrue(p.Money == game.BuyIn);
        }
    }
예제 #5
0
        /// <summary>
        /// Ticks timer for Texas Hold 'Em Game
        /// </summary>
        public override void Execute()
        {
            try
            {
                TexasHoldEm Game = (TexasHoldEm)Params[0];

                if (Game == null || !Game.GameStarted || !TexasHoldEmManager.GameList.ContainsKey(Game.GameId))
                {
                    base.EndTimer();
                    return;
                }

                if (Game.PlayerList.Values.Where(x => x != null && x.UserId > 0).ToList().Count <= 0)
                {
                    Game.RemovePotFurni();
                    Game.ResetGame();
                    base.EndTimer();
                    return;
                }

                if (Game.PlayerList.Values.Where(x => x != null && x.UserId > 0).ToList().Count == 1)
                {
                    Game.EndGame(Game.PlayerList.Keys.FirstOrDefault());
                    base.EndTimer();
                    return;
                }

                if (CheckPlayers(Game))
                {
                    return;
                }
            }
            catch (Exception e)
            {
                Logging.LogRPTimersError("Error in Execute() void: " + e);
                base.EndTimer();
            }
        }
예제 #6
0
        public bool CheckPlayers(TexasHoldEm Game)
        {
            bool Failed = false;

            try
            {
                if (Game == null || !Game.GameStarted || !TexasHoldEmManager.GameList.ContainsKey(Game.GameId))
                {
                    return(true);
                }

                foreach (var Pair in Game.PlayerList)
                {
                    if (Pair.Value == null || Pair.Value.UserId <= 0)
                    {
                        continue;
                    }

                    GameClient Player = PlusEnvironment.GetGame().GetClientManager().GetClientByUserID(Pair.Value.UserId);

                    if (Player == null || Player.GetHabbo() == null || Player.GetRoleplay() == null || Player.GetRoleplay().TexasHoldEmPlayer <= 0 || Player.GetRoomUser() == null || Player.GetRoomUser().GetRoom() == null)
                    {
                        if (Player != null && Player.GetRoleplay() != null)
                        {
                            Player.GetRoleplay().TexasHoldEmPlayer = 0;
                        }

                        if (Game.PlayersTurn == Pair.Key)
                        {
                            Game.ChangeTurn();
                        }

                        ConcurrentDictionary <int, TexasHoldEmItem> Data;
                        if (Pair.Key == 1)
                        {
                            Data = Game.Player1;
                        }
                        else if (Pair.Key == 2)
                        {
                            Data = Game.Player2;
                        }
                        else
                        {
                            Data = Game.Player3;
                        }

                        if (Data != null)
                        {
                            foreach (var Item in Data.Values)
                            {
                                if (Item.Furni != null)
                                {
                                    Item.Furni.ExtraData = "0";
                                    Item.Furni.UpdateState(false, true);
                                }

                                Item.Rolled = false;
                                Item.Value  = 0;
                            }
                        }


                        Game.RemoveBetFurni(Pair.Key);
                        Game.PlayerList.TryUpdate(Pair.Key, new TexasHoldEmPlayer(0, Game.PlayerList[Pair.Key].CurrentBet, Game.PlayerList[Pair.Key].TotalAmount), Pair.Value);
                        Failed = true;
                        break;
                    }
                }
            }
            catch (Exception e)
            {
                Logging.LogRPGamesError("Error in CheckPlayers() void: " + e);
            }

            return(Failed);
        }
예제 #7
0
        public void ExecuteBet(GameClients.GameClient Session, Rooms.Room Room, string[] Params, TexasHoldEm Game)
        {
            if (Game.GameSequence <= 0 || Game.GameSequence > 2)
            {
                Session.SendWhisper("Você não pode fazer uma aposta (ou passar) agora!", 1);
                return;
            }

            int Number = Session.GetRoleplay().TexasHoldEmPlayer;

            if (Game.PlayersTurn != Number)
            {
                Session.SendWhisper("Não é a sua vez no jogo!", 1);
                return;
            }

            if (!Game.PlayerList.ContainsKey(Number))
            {
                return;
            }

            var Player = Game.PlayerList[Number];

            if (Player == null || Player.UserId != Session.GetHabbo().Id)
            {
                return;
            }

            if (Player.TotalAmount <= 0)
            {
                // Already has all their chips in (or has the maximum bet rn)
                Game.ChangeTurn();
                return;
            }

            bool Zero = false;

            if (Params.Length > 1 && Params[1].ToLower() == "0")
            {
                Zero = true;
            }

            if (Params[0].ToLower() == "passar" && Game.MinimumBet(Number) > 0)
            {
                Session.SendWhisper("Você não pode passar neste turno! Você deve :apostar ou :sairjogo!", 1);
                return;
            }

            if (Game.MinimumBet(Number) == 0 && (Params.Length == 1 || Params[0].ToLower() == "passar" || Zero))
            {
                // Doesnt need to make a bet, can pass
                Game.ChangeTurn();
                return;
            }

            if (Params.Length == 1)
            {
                Session.SendWhisper("Digite o valor que você gostaria de apostar!", 1);
                return;
            }

            int Amount;

            if (!int.TryParse(Params[1], out Amount))
            {
                Session.SendWhisper("Por favor insira um número válido como o valor que você gostaria de apostar!", 1);
                return;
            }

            // Check if its a multiple of 5
            if (Convert.ToDouble((double)Amount / 5) != Math.Floor(Convert.ToDouble((double)Amount / 5)))
            {
                Session.SendWhisper("Você só pode apostar dinheiro em múltiplos de 5!", 1);
                return;
            }

            if (Player.TotalAmount < Amount)
            {
                Amount = Player.TotalAmount;
            }

            if (Amount < Game.MinimumBet(Number) && Amount != Player.TotalAmount)
            {
                Session.SendWhisper("Você deve apostar pelo menos R$" + String.Format("{0:N0}", Game.MinimumBet(Number)) + " para combinar o pote atual!", 1);
                return;
            }

            if (Session.GetHabbo().Credits < Amount)
            {
                Session.SendWhisper("Você não tem tanto dinheiro para apostar!", 1);
                return;
            }

            Session.Shout("*Faz uma aposta de R$" + String.Format("{0:N0}", Amount) + " para os jogos Pot*", 4);

            Session.GetHabbo().Credits -= Amount;
            Session.GetHabbo().UpdateCreditsBalance();

            Game.PlacePotFurni(Number, Amount);
            Game.SpawnStartingBet(Number);
            Game.ChangeTurn();
            return;
        }
예제 #8
0
        public void OnTrigger(GameClient Session, Item Item, int Request, bool HasRights)
        {
            #region Check Banker Dice Roll
            if (TexasHoldEmManager.GameList.Count > 0)
            {
                if (TexasHoldEmManager.GameList.Values.Where(x => x != null && x.Banker != null && x.Banker.Values.Where(y => y != null && y.Furni != null && y.Furni == Item).ToList().Count > 0).ToList().Count > 0)
                {
                    if (Item.ExtraData != "-1" && Item.TexasHoldEmData != null && Item.TexasHoldEmData.Value == 0)
                    {
                        Item.ExtraData = "-1";
                        Item.UpdateState(false, true);
                        Item.RequestUpdate(3, true);
                    }
                    return;
                }
            }
            #endregion

            RoomUser User = null;
            if (Session != null)
            {
                User = Item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);
            }

            if (User == null)
            {
                return;
            }

            if (TexasHoldEmManager.GameList.Count > 0)
            {
                if (Session.GetRoleplay() != null && Session.GetRoleplay().TexasHoldEmPlayer > 0)
                {
                    TexasHoldEm Game = TexasHoldEmManager.GetGameForUser(Session.GetHabbo().Id);

                    if (Game != null)
                    {
                        if (Game.PlayersTurn == Session.GetRoleplay().TexasHoldEmPlayer)
                        {
                            Game.RollDice(Session, Item, Request);
                        }
                        return;
                    }
                }
            }

            if (Gamemap.TilesTouching(Item.GetX, Item.GetY, User.X, User.Y))
            {
                if (Item.ExtraData != "-1")
                {
                    if (Request == -1)
                    {
                        Item.ExtraData = "0";
                        Item.UpdateState();
                    }
                    else
                    {
                        Item.ExtraData = "-1";
                        Item.UpdateState(false, true);
                        Item.RequestUpdate(3, true);
                    }
                }
            }
            else
            {
                User.MoveTo(Item.SquareInFront);
            }
        }
예제 #9
0
 void Start()
 {
     player = transform.root.GetComponent <Player>();
     game   = GameObject.FindGameObjectWithTag("Scripts").GetComponent <TexasHoldEm>();
     EnableUI(false);
 }