public static bool IsValid(Card thisCard, Card lastCard, GamingState state) { switch (state) { case GamingState.Gaming: switch (thisCard.Type) { case CardType.DrawFour: case CardType.Wild: case CardType.Special: return(true); } return(thisCard.Color == lastCard.Color || thisCard.ValueNumber == lastCard.ValueNumber); case GamingState.WaitingDrawTwoOverlay: return(thisCard.Type == CardType.DrawTwo); case GamingState.WaitingDrawFourOverlay: return(thisCard.Type == CardType.DrawFour); case GamingState.Doubting: return(false); default: throw new ArgumentOutOfRangeException(nameof(state), state, "Unknown state!"); } }
GameStateBase getState(GameState state) { GameStateBase gameState; if (states.TryGetValue(state, out gameState)) { return(gameState); } switch (state) { case GameState.Enter: gameState = new GameEnterState(this); break; case GameState.Ready: gameState = new GameReadyState(this); break; case GameState.Gaming: gameState = new GamingState(this); break; case GameState.Goal: gameState = new GoalState(this); break; case GameState.Replay: gameState = new ReplayState(this); break; case GameState.Over: gameState = new GameOverState(this); break; } states.Add(state, gameState); return(gameState); }
public Hand() { Cards = new List <Card>(); Bet = 0; Points = 0; State = GamingState.Playing; }
public static bool IsValidForFollowCard(Card thisCard, Card lastCard, GamingState state) { switch (state) { case GamingState.Gaming: return(thisCard.Type == CardType.Number && thisCard.Color == lastCard.Color && thisCard.Value == lastCard.Value); case GamingState.WaitingDrawTwoOverlay: case GamingState.WaitingDrawFourOverlay: case GamingState.Doubting: return(false); default: throw new ArgumentOutOfRangeException(nameof(state), state, null); } }
public static string ExtractCommand(List <Card> cards, Card lastCard, GamingState state) { switch (state) { case GamingState.Gaming: case GamingState.WaitingDrawTwoOverlay: case GamingState.WaitingDrawFourOverlay: var card = ExtractCard(cards, lastCard, state); if (card?.Color == CardColor.Wild) { card.Color = ToWildColor(cards); } return(card == null ? "摸了" : card.ToShortString()); case GamingState.Doubting: return(Rng.Next(8) > 5 ? "喵喵喵?" : "不质疑"); default: throw new ArgumentOutOfRangeException(nameof(state), state, null); } }
public static Card ExtractCard(List <Card> cards, Card lastCard, GamingState state) { var valids = new List <Card>(); foreach (var card in cards) { if (IsValid(card, lastCard, state)) { valids.Add(card); } } if (valids.Count == 0) { return(null); } var valueWithCards = (from valid in valids select new { ValidCard = valid, Value = GetValue(valid, lastCard, valids, cards) }).ToArray(); var maxs = valueWithCards.Where(i => i.Value == valueWithCards.Max(item => item.Value)).ToList(); return(maxs.PickOne().ValidCard); }
private void MakeMoves() { ProcessBlackJack(); for (int i = 0; i < player.Hands.Count; i++) { Hand currentHand = player.Hands[i]; while (IsHandPlaying(currentHand)) { GamingState chosenMove = player.TakeMove(currentHand, dealer.VisibleCard ?? throw new Exception("the dealer did not receive the card :(")); switch (chosenMove) { case GamingState.Stand: PlayerActions.Stand(currentHand); break; case GamingState.Double: PlayerActions.DoubleDown(player, currentHand, dealer, shoe); break; case GamingState.Hit: PlayerActions.Hit(currentHand, dealer, shoe); break; case GamingState.Split: PlayerActions.Split(player, currentHand, shoe, dealer); break; case GamingState.Surrender: PlayerActions.Surrender(currentHand); break; } } } dealer.Play(shoe); }
void Awake() { instance = this; }
void Start () { anim = this.gameObject.GetComponent<Animator>(); curSprite = bonusLevelObj.GetComponent<SpriteRenderer>(); animBonus = GameObject.Find("BonusLevel").GetComponent<Animator>(); gamingState = GamingState.GameLoding; playingState = PlayingState.Null; GamingAnimControl(); }
public void ResultScene () { gamingState = GamingState.GameLoding; GamingAnimControl(); }
public IEnumerator CalculateResult () { yield return new WaitForSeconds(3); gamingState = GamingState.ResultScene; GamingAnimControl(); }
private void TimeUp () { gamingState = GamingState.CalculateResult; isTimer = false; timeUpSound.Play(); GamingAnimControl(); }
public void GameStart () { gamingState = GamingState.Playing; GamingAnimControl(); }