コード例 #1
0
 public static bool IsDangerCard(HanabiGame g, HanabiCard c)
 {
     if (g.PlayedCards.ContainsCard(c))
     {
         return(false);
     }
     else if (c.Number == 5)
     {
         return(true);
     }
     else if (g.DiscardedCards.ContainsCard(c))
     {
         if (c.Number == 1)
         {
             return(g.DiscardedCards.Count(card => card.Color == c.Color && card.Color == c.Color) == 2);
         }
         else
         {
             return(true);
         }
     }
     else
     {
         return(false);
     }
 }
コード例 #2
0
 public override void Action(HanabiGame game, HanabiCard card, bool played, bool successful = true)
 {
     if (ShowPlays)
     {
         Console.WriteLine($" Player {this.ID} {(played ? "Played" : "Discarded")} {card}. {((successful && played) ? "" : "Card was not playable.")}");
     }
 }
コード例 #3
0
 /// <summary>
 /// Triggers every time the the player plays/discards a card
 /// </summary>
 /// <param name="card">The card that the action was on.</param>
 /// <param name="played">Whether or no the card was played or discarded. True = Played, False = Discarded.</param>
 /// <param name="successful">Whether the card, if played, was played successfully or used a bomb.</param>
 public override void Action(HanabiGame game, HanabiCard card, bool played, bool successful = true)
 {
     if (Settings.PrintMoves && Settings.PrintInfoWithMoves)
     {
         Console.WriteLine($" Player {this.ID} {(played ? "Played" : "Discarded")} {card}. {((successful && played) ? "" : "Card was not playable.")} Hints: {game.HintsRemaining} Bombs: {game.BombsUsed}");
     }
     else if (Settings.PrintMoves)
     {
         Console.WriteLine($" Player {this.ID} {(played ? "Played" : "Discarded")} {card}. {((successful && played) ? "" : "Card was not playable.")}");
     }
 }
コード例 #4
0
 public static bool ContainsCard(this List <HanabiCard> cards, HanabiCard card)
 {
     foreach (HanabiCard c in cards)
     {
         if (c.Color == card.Color && c.Number == card.Number)
         {
             return(true);
         }
     }
     return(false);
 }
コード例 #5
0
 public int PositionInHand(HanabiCard card)
 {
     for (int i = 0; i < Hand.Count; i++)
     {
         if (Hand[i].Color == card.Color && Hand[i].Number == card.Number)
         {
             return(i);
         }
     }
     return(-1);
 }
コード例 #6
0
 public bool IsPlayable(HanabiCard card)
 {
     if (PlayedCards.Count(c => c.Color == card.Color && c.Number == card.Number) >= 1)
     {
         return(false);
     }
     else if (PlayedCards.Count(c => c.Color == card.Color && c.Number == (card.Number - 1)) >= 1)
     {
         return(true);
     }
     return(card.Number == 1);
 }
コード例 #7
0
 public HanabiAction(HanabiActionType t, HanabiCard card, int index)
 {
     Type      = t;
     Card      = card;
     CardIndex = index;
 }
コード例 #8
0
 public virtual void Action(HanabiGame game, HanabiCard card, bool played, bool successful = true)
 {
 }
コード例 #9
0
 public bool IsDangerCard(HanabiCard card)
 {
     return(PlayedCards.Count(c => c.Color == card.Color && c.Number == card.Number) == 1);
 }
コード例 #10
0
 public override void Action(HanabiGame game, HanabiCard card, bool played, bool successful = true)
 {
     base.Action(game, card, played, successful);
 }