/// <summary> /// Check to see if a hand is a valid defense hand /// </summary> /// <param name="defenseHand"></param> /// <param name="attackHand"></param> /// <returns></returns> public bool IsValidDefenseHand(PlayingCards defenseHand, PlayingCards attackHand) { bool isValid = false; //www.java2s.com/Tutorial/CSharp/0450__LINQ/Sortobjectbyitsproperty.htm //^^^^^^^^^^^ Found here defenseHand.Sort((c1, c2) => c1.suit.CompareTo(c2.suit)); attackHand.Sort((c1, c2) => c1.suit.CompareTo(c2.suit)); //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ if (attackHand.Count() == defenseHand.Count()) { for (int index = 0; index < attackHand.Count(); index++) { if (defenseHand.ElementAt(index).suit == attackHand.ElementAt(index).suit) { if (defenseHand.ElementAt(index).rank > attackHand.ElementAt(index).rank) { isValid = true; } else { isValid = false; } } else { isValid = false; } } } return(isValid); }
public MissionVote(PlayingCards role) { InitializeComponent(); if (role == PlayingCards.MERLIN || role == PlayingCards.PERCIVAL || role == PlayingCards.SERVANT_OF_ARTHUR) { button2.Enabled = false; } }
private void DrawFirstTwoCards() { //Draw first two cards for (int i = 0; i < 2; i++) { foreach (var player in players) { PlayingCards card = playingCardsDeck.Draw(); player.Hand.Add(card); } } //Sort hand by foreach (var player in players) { player.Hand = player.Hand.SortHandByDescending(); } //Determine Score foreach (var player in players) { player.Score = GetHandScore(player.Hand); IsOverThan_21(player); } }
/// <summary> /// 显示玩家与电脑的牌. /// </summary> private void ShowAfterTakeFirstTwoCard() { // 清除已有的图片 tlpComputer.Controls.Clear(); PlayingCards c1 = computerPlayer.GetPlayingCards(0); c1.IsShowOnTable = false; tlpComputer.Controls.Add(GetDisplayPicBox(c1)); PlayingCards c2 = computerPlayer.GetPlayingCards(1); c2.IsShowOnTable = true; tlpComputer.Controls.Add(GetDisplayPicBox(c2)); // 清除已有的图片 tlpUser.Controls.Clear(); for (int i = 0; i < 2; i++) { PlayingCards card = player.GetPlayingCards(i); card.IsShowOnTable = true; tlpUser.Controls.Add(GetDisplayPicBox(card)); } }
public void GetRandomCard(Random rnd, Game currentGame, HashSet <PlayingCards> cardsOntable, string playerOrDealer) { bool tryAgain = true; while (tryAgain) { int r = rnd.Next(currentGame.Deck.deck.Count()); var newInstanceOftheCard = new PlayingCards() { Card = currentGame.Deck.deck[r].Card, Points = currentGame.Deck.deck[r].Points, Show = currentGame.Deck.deck[r].Show, Picture = currentGame.Deck.deck[r].Picture, Id = currentGame.Deck.deck[r].Id }; var didNotExist = cardsOntable.Add(newInstanceOftheCard); if (didNotExist == false) { tryAgain = true; } else { if (playerOrDealer == "player") { currentGame.Player.Hand.Add(newInstanceOftheCard); } else { currentGame.Dealer.Hand.Add(newInstanceOftheCard); } tryAgain = false; } } }
public void GetRandomCard(Random rnd, List <PlayingCards> deck, HashSet <PlayingCards> fourCards) { bool tryAgain = true; while (tryAgain) { int r = rnd.Next(deck.Count()); var newInstanceOftheCard = new PlayingCards() { Card = deck[r].Card, Points = deck[r].Points, Show = deck[r].Show, Picture = deck[r].Picture, Id = deck[r].Id }; var fittingname = fourCards.Add(newInstanceOftheCard); if (fittingname == false) { tryAgain = true; } else { tryAgain = false; } } }
/// <summary> /// used to build a hand of attack cards /// </summary> /// <param name="cards">PlayingCards (or Hand)</param> /// <returns>PlayingCards (or Hand)</returns> public PlayingCards Attack(PlayingCards cards) { foreach (PlayingCard card in cards) { m_Hand += card; } return(m_Hand); }
protected override void onDealStart() { PlayingCards.Shuffle(); PlayerHandScores.Clear(); handOutCardsToPlayers(); setBlinds(); }
/// <summary> /// Not sure about this...not quite complete /// may have to get rid of it entirely /// Suppose to up date the gui based on a players hand /// </summary> /// <param name="hand"></param> public void Update(int playerNum, PlayingCards hand) { spPlayerHand.Children.Clear(); foreach (PlayingCard card in hand) { spPlayerHand.Children.Add(new CardBox(card, (Orientation)((0 == (int)myOrientation) ? 1 : 0))); RealignCards(spPlayerHand); } lblPlayerNum.Content = "Player " + playerNum.ToString(); }
/// <summary> /// 显示计算机玩家的所有牌. /// </summary> private void ShowComputerAllCards() { // 清除已有的图片 tlpComputer.Controls.Clear(); for (int i = 0; i < computerPlayer.GetPlayingCardsCount(); i++) { PlayingCards card = computerPlayer.GetPlayingCards(i); card.IsShowOnTable = true; tlpComputer.Controls.Add(GetDisplayPicBox(card)); } }
protected override void handOutCardsToPlayers() { foreach (IPlayer player in Players) { player.HoleCards = new List <ICard>() { PlayingCards[0], PlayingCards[1] }; PlayingCards.Remove(PlayingCards.First()); PlayingCards.Remove(PlayingCards.First()); } }
protected internal override PlayingCard?MoveOutCards(List <PlayingCard> movedCards) { Debug.Assert(PlayingCards.Count >= movedCards.Count); for (int i = movedCards.Count - 1; i >= 0; i--) { var c = PlayingCards[0]; PlayingCards.RemoveAt(0); PlayingCanvas.Children.Remove(c); PlayingCanvas.Children.Add(c); } return(null); }
public void Shuffle() { List <PlayingCard> newDeck = new List <PlayingCard>(); Random random = new Random(); for (int i = PlayingCards.Count; i > 0; i--) { int randomNum = random.Next(i); newDeck.Add(PlayingCards[randomNum]); PlayingCards.RemoveAt(randomNum); } PlayingCards = newDeck; }
public bool InsertBottomCard(PlayingCard card) { try { PlayingCards.Insert(0, card); Length++; return(true); } catch (Exception e) { Console.WriteLine(e.Message); ch.PressKeyToContinue(); throw; } }
public PlayingCard GetTopCard() { try { PlayingCard card = PlayingCards[PlayingCards.Count - 1]; PlayingCards.RemoveAt(PlayingCards.Count - 1); Length--; return(card); } catch (Exception e) { Console.WriteLine("An error occured."); Console.WriteLine(e.Message); ch.PressKeyToContinue(); return(null); } }
/// <summary> /// 要牌. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnHit_Click(object sender, EventArgs e) { // 玩家要牌. game.PlayerHit(player); // 显示新加的牌. PlayingCards card = player.GetPlayingCards(player.GetPlayingCardsCount() - 1); card.IsShowOnTable = true; tlpUser.Controls.Add(GetDisplayPicBox(card)); if (player.IsStand) { btnHit.Visible = false; } }
protected override void returnCardsToDeck() { foreach (IPlayer player in Players) { foreach (ICard card in player.HoleCards) { PlayingCards.Add(card); } player.HoleCards.Clear(); } foreach (ICard card in Table.CommunityCards) { PlayingCards.Add(card); } Table.CommunityCards.Clear(); }
/// <summary> /// 取得指定牌的图片. /// </summary> /// <param name="card"></param> /// <returns></returns> private PictureBox GetDisplayPicBox(PlayingCards card) { string fileName = @"pic\BackGround.jpg"; if (card.IsShowOnTable) { // 牌是要显示正面的. fileName = String.Format(@"pic\{0}_{1}.jpg", card.Suit, card.CardDisplayValue); } PictureBox result = new PictureBox() { Dock = DockStyle.Fill, SizeMode = PictureBoxSizeMode.StretchImage, Image = new Bitmap(fileName), }; return(result); }
/// <summary> /// Checks to see if a hand is a valid attack hand /// </summary> /// <param name="attackHand"></param> /// <returns></returns> public bool IsValidAttackHand(PlayingCards attackHand) { bool isValid = false; if (attackHand.Count() > 1) { for (int index = 0; index < attackHand.Count(); index++) { if (index != 0) { if (attackHand.ElementAt(index - 1).rank == attackHand.ElementAt(index).rank) { isValid = true; } } } } else { isValid = true; } return(isValid); }
protected override void onLicitation() { foreach (GameStage gameStage in Enum.GetValues(typeof(GameStage))) { IPlayer nextPlayer = null; if (gameStage == GameStage.Flop) { for (int i = 0; i < 3; ++i) { Table.CommunityCards.Add(PlayingCards.First()); PlayingCards.Remove(PlayingCards.First()); } } else if (gameStage != GameStage.Preflop) { Table.CommunityCards.Add(PlayingCards.First()); PlayingCards.Remove(PlayingCards.First()); } if (gameStage == GameStage.Preflop) { nextPlayer = GetNextActivePlayer(Players.Where(x => x.Blind == Blind.Big).First()); } else { nextPlayer = Players.Where(x => x.Blind == Blind.Small).First(); } notify(); while (nextPlayer != null && (!allPlayersTookAction() || isBiggerBetToCall() || !lastPlayerCalled()) && !isOnePlayerActiveLeft() && !allActivePlayersChecked() && !allButOnePlayerFolded()) { if (nextPlayer != null && nextPlayer.CanTakeAction) { while (!takeAction(nextPlayer)) { ; } } notify(); nextPlayer = GetNextActivePlayer(nextPlayer); } foreach (IPlayer activePlayer in Players.Where(x => x.PlayerState != PlayerState.Folded)) { Table.Pot += activePlayer.Bet; activePlayer.Bet = 0; if (activePlayer.CanTakeAction && Players.Where(x => x.CanTakeAction).Count() > 1) { activePlayer.PlayerState = PlayerState.Active; } if (Players.Where(x => x.PlayerState == PlayerState.Folded).Count() == Players.Count - 1) { return; //if everyone folded except one, stop licitation round. } } } }
public override void CheckStack() => Debug.Assert(PlayingCards.All(c => c.IsFaceUp));
public void init() { _cards = new PlayingCards(); }
public override void OnSpeech(SpeechEventArgs e) { #region Here is the list of Random Words you can use string dat_Facet = TalkingNPCsXMLReader.RandomName("dat_Facet"); string dat_TownRegion = TalkingNPCsXMLReader.RandomName("dat_TownRegion"); string dat_DungeonRegion = TalkingNPCsXMLReader.RandomName("dat_DungeonRegion"); string dat_NoHousingRegion = TalkingNPCsXMLReader.RandomName("dat_NoHousingRegion"); string dat_Other = TalkingNPCsXMLReader.RandomName("dat_Other"); string dat_Shrine = TalkingNPCsXMLReader.RandomName("dat_Shrine"); string dat_article1 = TalkingNPCsXMLReader.RandomName("dat_article"); string dat_article2 = TalkingNPCsXMLReader.RandomName("dat_article"); string dat_noun1 = TalkingNPCsXMLReader.RandomName("dat_noun"); string dat_noun2 = TalkingNPCsXMLReader.RandomName("dat_noun"); string dat_noun3 = TalkingNPCsXMLReader.RandomName("dat_noun"); string dat_noun4 = TalkingNPCsXMLReader.RandomName("dat_noun"); string dat_verb1 = TalkingNPCsXMLReader.RandomName("dat_verb"); string dat_verb2 = TalkingNPCsXMLReader.RandomName("dat_verb"); string dat_verbing1 = TalkingNPCsXMLReader.RandomName("dat_verbing"); string dat_verbing2 = TalkingNPCsXMLReader.RandomName("dat_verbing"); string dat_verb3rd1 = TalkingNPCsXMLReader.RandomName("dat_verb3rd"); string dat_verb3rd2 = TalkingNPCsXMLReader.RandomName("dat_verb3rd"); string dat_verbed1 = TalkingNPCsXMLReader.RandomName("dat_verbed"); string dat_verbed2 = TalkingNPCsXMLReader.RandomName("dat_verbed"); string dat_preposition1 = TalkingNPCsXMLReader.RandomName("dat_preposition"); string dat_preposition2 = TalkingNPCsXMLReader.RandomName("dat_preposition"); string dat_adj1 = TalkingNPCsXMLReader.RandomName("dat_adj"); string dat_adj2 = TalkingNPCsXMLReader.RandomName("dat_adj"); string dat_Greeting = TalkingNPCsXMLReader.RandomName("dat_Greeting"); string dat_Language1 = TalkingNPCsXMLReader.RandomName("dat_Language"); string dat_Language2 = TalkingNPCsXMLReader.RandomName("dat_Language"); string dat_Language3 = TalkingNPCsXMLReader.RandomName("dat_Language"); string dat_Armor = TalkingNPCsXMLReader.RandomName("dat_Armor"); string dat_Creature1 = TalkingNPCsXMLReader.RandomName("dat_Creature"); string dat_Creature2 = TalkingNPCsXMLReader.RandomName("dat_Creature"); string dat_Room1 = TalkingNPCsXMLReader.RandomName("dat_Room"); string dat_Room2 = TalkingNPCsXMLReader.RandomName("dat_Room"); string dat_Furniture1 = TalkingNPCsXMLReader.RandomName("dat_Furniture"); string dat_Furniture2 = TalkingNPCsXMLReader.RandomName("dat_Furniture"); string dat_Liquid1 = TalkingNPCsXMLReader.RandomName("dat_Liquid"); string dat_Number1 = TalkingNPCsXMLReader.RandomName("dat_Number"); string dat_PlayingCards = TalkingNPCsXMLReader.RandomName("dat_PlayingCards"); string dat_MinocShop = TalkingNPCsXMLReader.RandomName("dat_MinocShop"); string dat_MinocShopQuestItem = TalkingNPCsXMLReader.RandomName("dat_MinocShopQuestItem"); #endregion string playername = e.Mobile.Name; string speech = e.Speech.ToLower(); #region Player says "Hi" for (int i = 0; i < Greetings.Length; i++) { if (speech == Greetings[i]) { switch (Utility.Random(4)) //picks one of the following { case 0: { Say(String.Format("{0} {1}, do you want to play your favorite game?", dat_Greeting, playername, dat_verb1, dat_Creature1)); break; } case 1: { Say(String.Format("Would you like to play {0} cards?", dat_adj1)); break; } case 2: { Say(String.Format("People come from {0} to play cards here.", dat_TownRegion)); break; } case 3: { Say(String.Format("{0}, {1} want to play?", playername, dat_Greeting)); break; } } } } #endregion #region Play says "Yes" or some other response for (int i = 0; i < Response.Length; i++) { if (speech == Response[i]) { if (m_ItemHasBeenReturned == true) { switch (Utility.Random(4)) //picks one of the following { case 0: { Say(String.Format("{0} draw a card and let me see it.", playername)); break; } case 1: { dat_article1 = char.ToUpper(dat_article1[0]) + dat_article1.Substring(1); Say(String.Format("{0} my {1} card vs your {2} card..", playername, dat_adj1, dat_adj1)); break; } case 2: { dat_article1 = char.ToUpper(dat_article1[0]) + dat_article1.Substring(1); Say(String.Format("Place your card back into my deck and let's see if you a winner.", dat_adj1)); break; } case 3: { dat_article1 = char.ToUpper(dat_article1[0]) + dat_article1.Substring(1); Say(String.Format("Be a good {0} and deal the cards.", dat_Creature1, dat_adj1)); break; } } //Choose Item Location int x = Location.X - 1; int y = Location.Y; int z = Map.GetAverageZ(x, y); if (Map.CanFit(x, y, Location.Z, 1)) { Item item = new PlayingCards(); item.Name = dat_PlayingCards; item.MoveToWorld(new Point3D(x, y, Location.Z), Map); m_ItemHasBeenReturned = false; HighCardBettyItemTimer t = new HighCardBettyItemTimer(); t.Start(); } else if (Map.CanFit(x, y, z, 1)) { Item item = new PlayingCards(); item.Name = dat_PlayingCards; item.MoveToWorld(new Point3D(x, y, z), Map); m_ItemHasBeenReturned = false; HighCardBettyItemTimer t = new HighCardBettyItemTimer(); t.Start(); } } else { Say(String.Format("Let me see the card, {0} or {1}. Hurry any card will due!", dat_adj1, dat_adj2)); } } } #endregion }
public void Shuffle() { Random rand = new Random(); PlayingCards = PlayingCards.OrderBy(item => rand.Next()).ToList(); }
static void Main(string[] args) { //Create players Player player1 = new Player() { Name = "James", Hand = new List <Card>(), IsPlaying = true }; Player player2 = new Player() { Name = "Michael", Hand = new List <Card>(), IsPlaying = true }; Player player3 = new Player() { Name = "Johnny", Hand = new List <Card>(), IsPlaying = true }; //Put players into list List <Player> players = new List <Player>() { player1, player2, player3 }; //POKER GAME 1 using (Poker poker = new Poker(players)){ //PlayingCardsDeck.deck.ShuffleDeck(); poker.playingCardsDeck.ShuffleDeck(); foreach (var player in players) { PlayingCards card = poker.playingCardsDeck.Draw(); //Give Player a card player.Hand.Add(card); } //Return cards to deck foreach (var player in players) { foreach (PlayingCards card in player.Hand) { poker.playingCardsDeck.Add(card); } player.Hand.Clear(); } } //POKER GAME 2 using (Poker poker = new Poker(players)) { poker.playingCardsDeck.ShuffleDeck(); foreach (var player in players) { PlayingCards card = poker.playingCardsDeck.Draw(); //Give Player a card player.Hand.Add(card); } //Return cards to deck foreach (var player in players) { foreach (PlayingCards card in player.Hand) { poker.playingCardsDeck.Add(card); } player.Hand.Clear(); } } //BlackJack Game 1 using (BlackJack blackJack = new BlackJack(players)) { //Return cards to deck foreach (var player in players) { foreach (PlayingCards card in player.Hand) { PlayingCardsDeck.deck.Add(card); } player.Hand.Clear(); } } Console.WriteLine("All Games Played"); }