/* * 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; } } }
/* * 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; } } }