Exemple #1
0
 public CardsGame(int decks, int jokersInDeck, CardSuit suits, CardValue cardValues, int minimumPlayers, int maximumPlayers, _21BlackJack.CardsFrameWork.UserInterface.GameTable gameTable, string theme, Microsoft.Xna.Framework.Game game)
 {
     rules               = new List <GameRule>();
     players             = new List <Player.Player>();
     dealer              = new CardPacket(decks, jokersInDeck, suits, cardValues);
     Game                = game;
     MinimumPLayers      = minimumPlayers;
     MaximumPlayers      = maximumPlayers;
     this.Theme          = theme;
     cardsAssets         = new Dictionary <string, Texture2D>();
     GameTable           = gameTable;
     GameTable.DrawOrder = -1000;
     Game.Components.Add(GameTable);
 }
Exemple #2
0
        public void HandleClientThread(Object o)
        {
            TcpClient client = o as TcpClient;

            bool closeClient = false;

            while (!closeClient)
            {
                CardPacket cardPacket = serializer.Deserialize(client.GetStream()) as CardPacket;
                Console.WriteLine(cardPacket);
            }
            client.Close();
            Console.WriteLine("Connection closed");
        }
Exemple #3
0
        public void LoadContent()
        {
            SpriteBatch = new SpriteBatch(Game.GraphicsDevice);
            //Inicia um deck
            CardPacket fullDeck = new CardPacket(1, 2, CardSuit.AllSuits, Cards_FrameWork.CardValue.NonJokers | Cards_FrameWork.CardValue.Jokers);
            string     assetName;

            for (int cardIndex = 0; cardIndex < 54; cardIndex++)
            {
                assetName = _21BlackJack.Cards_FrameWork.Utility.UIUtility.GetCardAssetName(fullDeck[cardIndex]);
            }
            LoadUITexture("Cards", "CardBack_" + Theme);

            Font = Game.Content.Load <SpriteFont>(string.Format(@"Fonts\Regular"));

            GameTable.Initialize();
        }
Exemple #4
0
        public void HandleAGameThread(Object o1, Object o2)
        {
            TcpClient client1 = o1 as TcpClient;
            TcpClient client2 = o2 as TcpClient;

            SetupGame(client1, client2);

            //Console.WriteLine("Player 1 Hand");
            //game.Player1.Hand.ForEach(x => Console.WriteLine(x));
            //Console.WriteLine("Player 2 Hand");
            //game.Player2.Hand.ForEach(x => Console.WriteLine(x));

            //Console.WriteLine("Deck left " + game.Deck.Count);
            //game.Deck.ForEach(x => Console.WriteLine(x));

            while (true)
            {
                Packet packet = new Packet();
                if (game.PlayerTurn == 1)
                {
                    packet = serializer.Deserialize(client1.GetStream()) as Packet;
                }
                else
                {
                    packet = serializer.Deserialize(client2.GetStream()) as Packet;
                }


                Console.WriteLine("Received " + packet.PacketName);

                bool anotherTurn = false;

                switch (packet.PacketName)
                {
                case "CardPacket":
                    CardPacket cardPacket = packet as CardPacket;
                    switch (cardPacket.CardValue)
                    {
                    case "2":
                        if ((game.Pile[game.Pile.Count - 1].CardValue == "2" || game.Pile[game.Pile.Count - 1].CardValue == "Joker") && game.Pile.Count > 1)
                        {
                            cardsToDraw += 2;
                        }
                        else
                        {
                            cardsToDraw = 2;
                        }
                        break;

                    case "7":
                        anotherTurn = true;
                        break;

                    case "8":
                        anotherTurn = true;
                        break;

                    case "Jack":
                        break;

                    case "King":
                        anotherTurn = true;
                        break;

                    case "Joker":
                        if (game.Pile[game.Pile.Count - 1].CardValue == "2" || game.Pile[game.Pile.Count - 1].CardValue == "Joker")
                        {
                            cardsToDraw += 5;
                        }
                        else
                        {
                            cardsToDraw = 5;
                        }
                        break;
                    }

                    Console.WriteLine(game.PlayerTurn);

                    if (game.PlayerTurn == 1)
                    {
                        if (!anotherTurn)
                        {
                            game.PlayerTurn = 2;
                        }
                        game.Player1.RemoveCardFromHand(cardPacket);
                        game.Pile.Add(cardPacket);

                        if (!(game.Player2.FindValueInHand("2") || game.Player2.FindValueInHand("Joker")))
                        {
                            game.Player2.Hand.AddRange(game.Deck.GetRange(0, cardsToDraw));
                            game.Deck.RemoveRange(0, cardsToDraw);
                            cardsToDraw = 0;
                        }

                        SharedMethods.SendPacket(client1, new GameState(game.Player1, game.Player2.Hand.Count, game.PlayerTurn, game.Deck, game.Pile));
                        SharedMethods.SendPacket(client2, new GameState(game.Player2, game.Player1.Hand.Count, game.PlayerTurn, game.Deck, game.Pile));
                    }
                    else
                    {
                        if (!anotherTurn)
                        {
                            game.PlayerTurn = 1;
                        }
                        game.Player2.RemoveCardFromHand(cardPacket);
                        game.Pile.Add(cardPacket);

                        if (!(game.Player1.FindValueInHand("2") || game.Player1.FindValueInHand("Joker")))
                        {
                            game.Player1.Hand.AddRange(game.Deck.GetRange(0, cardsToDraw));
                            game.Deck.RemoveRange(0, cardsToDraw);
                            cardsToDraw = 0;
                        }

                        SharedMethods.SendPacket(client1, new GameState(game.Player1, game.Player2.Hand.Count, game.PlayerTurn, game.Deck, game.Pile));
                        SharedMethods.SendPacket(client2, new GameState(game.Player2, game.Player1.Hand.Count, game.PlayerTurn, game.Deck, game.Pile));
                    }


                    break;

                case "DrawCardPacket":
                    DrawCardPacket drawCard = packet as DrawCardPacket;
                    if (game.PlayerTurn == 1)
                    {
                        game.PlayerTurn = 1;
                        game.Player1.Hand.Add(game.Deck[0]);
                        game.Deck.Remove(game.Deck[0]);
                        SharedMethods.SendPacket(client1, new GameState(game.Player1, game.Player2.Hand.Count, game.PlayerTurn, game.Deck, game.Pile));
                        SharedMethods.SendPacket(client2, new GameState(game.Player2, game.Player1.Hand.Count, game.PlayerTurn, game.Deck, game.Pile));
                    }
                    else
                    {
                        game.PlayerTurn = 2;
                        game.Player2.Hand.Add(game.Deck[0]);
                        game.Deck.Remove(game.Deck[0]);
                        SharedMethods.SendPacket(client1, new GameState(game.Player1, game.Player2.Hand.Count, game.PlayerTurn, game.Deck, game.Pile));
                        SharedMethods.SendPacket(client2, new GameState(game.Player2, game.Player1.Hand.Count, game.PlayerTurn, game.Deck, game.Pile));
                    }

                    break;
                }
            }

            //packet = serializer.Deserialize(client2.GetStream()) as Packet;

            //switch (packet.PacketName)
            //{
            //    case "CardPacket":
            //        CardPacket cardPacket2 = packet as CardPacket;
            //        game.PlayerTurn = 1;
            //        game.Player2.RemoveCardFromHand(cardPacket2);
            //        game.Pile.Add(cardPacket2);
            //        SharedMethods.SendPacket(client2, new GameState(game.Player2, game.Player1.Hand.Count, game.PlayerTurn, game.Deck, game.Pile));
            //        SharedMethods.SendPacket(client1, new GameState(game.Player1, game.Player2.Hand.Count, game.PlayerTurn, game.Deck, game.Pile));

            //        break;
            //    case "DrawCardPacket":
            //        DrawCardPacket drawCard = packet as DrawCardPacket;
            //        game.PlayerTurn = 1;
            //        game.Player2.Hand.Add(game.Deck[0]);
            //        game.Deck.Remove(game.Deck[0]);
            //        SharedMethods.SendPacket(client1, new GameState(game.Player2, game.Player1.Hand.Count, game.PlayerTurn, game.Deck, game.Pile));
            //        SharedMethods.SendPacket(client2, new GameState(game.Player1, game.Player2.Hand.Count, game.PlayerTurn, game.Deck, game.Pile));

            //        break;
            //    }

            //}
        }