Example #1
0
        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!");
            }
        }
Example #2
0
    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;
 }
Example #4
0
        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);
            }
        }
Example #5
0
        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);
            }
        }
Example #6
0
        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);
        }
Example #7
0
        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);
        }
Example #8
0
 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();
	}
Example #10
0
	public void ResultScene () {
		gamingState = GamingState.GameLoding;
		GamingAnimControl();
	}
Example #11
0
	public IEnumerator CalculateResult () {
		yield return new WaitForSeconds(3);
		gamingState = GamingState.ResultScene;
		GamingAnimControl();
	}
Example #12
0
	private void TimeUp () {
		gamingState = GamingState.CalculateResult;
		isTimer = false;
		timeUpSound.Play();
		GamingAnimControl();
	}
Example #13
0
	public void GameStart () {
		gamingState = GamingState.Playing;
		GamingAnimControl();
	}