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); }
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"); }
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(); }
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; // } //} }