コード例 #1
0
ファイル: AlgoAI.cs プロジェクト: zyouyowa/Algo-Unity
    /*
     *  void Start () {
     *
     *  }
     *
     *  void Update () {
     *
     *  }
     */

    public override IEnumerator Turn()
    {
        Debug.Log("AI Turn");
        Card draw = base.flow.DrawCard();

        yield return(StartCoroutine(base.cardObjManager.DrawCard(GameFlowManager.TurnStatus.AITurn, draw)));

        base.flow.aiHand.Add(draw);

        while (true)
        {
            yield return(null);

            var aiForecasts = ForecasCard();

            int min_f = 0;
            while (aiForecasts[min_f].Count == 0 ||
                   base.flow.playerHand[min_f].isOpen)
            {
                min_f++;
            }

            for (int i = 0; i < aiForecasts.Count; ++i)
            {
                if (!base.flow.playerHand[i].isOpen)
                {
                    if (aiForecasts[i].Count < aiForecasts[i].Count)
                    {
                        min_f = i;
                    }
                }
            }

            int  choiceNumber = aiForecasts[min_f][Random.Range(0, aiForecasts[min_f].Count)];
            Card choicedCard  = new Card(base.flow.playerHand[min_f].color, choiceNumber);
            base.flow.aiKnown.Add(choicedCard);

            if (base.flow.playerHand[min_f].number == choiceNumber)
            {
                base.flow.playerHand[min_f].isOpen = true;
                base.cardObjManager.OpenCard(GameFlowManager.TurnStatus.AITurn, min_f);
                if (GameFlowManager.CheckAllOpend(base.flow.playerHand))
                {
                    base.flow.gameStatus = GameFlowManager.GameStatus.AIWin;
                    yield break;
                }
            }
            else
            {
                draw.isOpen = true;
                yield return(StartCoroutine(base.cardObjManager.IntoHand(GameFlowManager.TurnStatus.AITurn, true)));

                base.flow.aiHand.Sort(GameFlowManager.CompareCard);
                base.flow.gameStatus = GameFlowManager.GameStatus.Continue;
                yield break;
            }
        }
    }
コード例 #2
0
    /*
     *  void Update () {
     *
     *  }
     */

    public override IEnumerator Turn()
    {
        Debug.Log("Player Turn");
        Card draw = base.flow.DrawCard();

        yield return(StartCoroutine(base.cardObjManager.DrawCard(GameFlowManager.TurnStatus.PlayerTurn, draw)));

        base.flow.playerHand.Add(draw);

        while (true)
        {
            while (!finishInput)
            {
                yield return(null);
            }

            finishInput = false;

            //TODO: プレイヤーの言ったやつを含めてカードの予想をさせる
            //base.flow.playerSaid.Add(new Card())
            if (base.flow.aiHand[targetIndex].number == forecastNumber)
            {
                base.flow.aiHand[targetIndex].isOpen = true;
                base.cardObjManager.OpenCard(GameFlowManager.TurnStatus.PlayerTurn, targetIndex);
                if (GameFlowManager.CheckAllOpend(base.flow.aiHand))
                {
                    base.flow.gameStatus = GameFlowManager.GameStatus.PlayerWin;
                    yield break;
                }
            }
            else
            {
                draw.isOpen = true;
                yield return(StartCoroutine(base.cardObjManager.IntoHand(GameFlowManager.TurnStatus.PlayerTurn, true)));

                base.flow.playerHand.Sort(GameFlowManager.CompareCard);
                base.flow.aiKnown.Add(draw);
                base.flow.gameStatus = GameFlowManager.GameStatus.Continue;
                yield break;
            }
        }
    }