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); } }
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.")}"); } }
/// <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.")}"); } }
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); }
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); }
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); }
public HanabiAction(HanabiActionType t, HanabiCard card, int index) { Type = t; Card = card; CardIndex = index; }
public virtual void Action(HanabiGame game, HanabiCard card, bool played, bool successful = true) { }
public bool IsDangerCard(HanabiCard card) { return(PlayedCards.Count(c => c.Color == card.Color && c.Number == card.Number) == 1); }
public override void Action(HanabiGame game, HanabiCard card, bool played, bool successful = true) { base.Action(game, card, played, successful); }