Пример #1
0
    /// <summary>
    /// 初期化
    /// </summary>
    /// <param name="count"></param>
    public void Init(int count, GameManager.QuizData quizData, UnityAction onOk)
    {
        // 正解のイベント
        this.onOk = onOk;

        // 問題の作成
        StringBuilder builder = new StringBuilder("");

        // 隠すところを決める
        SetQuizMask(quizData);

        // 左辺
        SetQuizString(quizData.left1, true, maskId == 0, ref builder);
        SetQuizString(quizData.left2, false, maskId == 1, ref builder);
        SetQuizString(quizData.left3, false, maskId == 2, ref builder);
        // イコール
        builder.Append("= ");
        // 右辺
        SetQuizString(quizData.right1, true, maskId == 3, ref builder);
        SetQuizString(quizData.right2, false, maskId == 4, ref builder);
        SetQuizString(quizData.right3, false, maskId == 5, ref builder);
        // 最終文字の空白を削除
        builder.Remove(builder.Length - 1, 1);
        // テキストにセット
        quizText.text = builder.ToString();

        // 解答を作成
        SetAnswer(quizData);
    }
Пример #2
0
 /// <summary>
 /// 問題とする箇所を決定
 /// </summary>
 /// <param name="quizData"></param>
 private void SetQuizMask(GameManager.QuizData quizData)
 {
     if (quizData.level == 0 || quizData.level == 1 || quizData.level == 3)
     {
         // 2番目固定
         maskId = 1;
     }
     else
     {
         // ランダムで決める
         maskId = Random.Range(0, 6);
         // エラー避け
         if (maskId == 2 && quizData.left3 == 0)
         {
             // 左辺3
             maskId = 1;
         }
         if (maskId == 4 && quizData.right2 == 0)
         {
             // 右辺2
             maskId = 1;
         }
         if (maskId == 5 && quizData.right3 == 0)
         {
             // 右辺3
             maskId = 1;
         }
         if (maskId == 1 && quizData.left2 == 0)
         {
             // 左辺2
             maskId = 0;
         }
     }
 }
Пример #3
0
    /// <summary>
    /// 解答を設定
    /// </summary>
    /// <param name="quizData"></param>
    private void SetAnswer(GameManager.QuizData quizData)
    {
        // 正解の取得
        int answer = 0;

        if (maskId == 0)
        {
            answer = quizData.left1;
        }
        if (maskId == 1)
        {
            answer = quizData.left2;
        }
        if (maskId == 2)
        {
            answer = quizData.left3;
        }
        if (maskId == 3)
        {
            answer = quizData.right1;
        }
        if (maskId == 4)
        {
            answer = quizData.right2;
        }
        if (maskId == 5)
        {
            answer = quizData.right3;
        }
        // 正解を選択肢に追加
        answerList.Add(answer);

        // 選択肢数の取得
        int answerNum = GetAnswerNum(quizData.level);

        if (answerNum == 6)
        {
            answerGrid.constraintCount = 3;
        }
        else if (answerNum == 7 || answerNum == 8)
        {
            answerGrid.constraintCount = 4;
        }

        // 選択肢の生成
        while (answerList.Count < answerNum)
        {
            int num = Random.Range(0, quizData.maxRange) + 1;
            if (!answerList.Contains(num) && !answerList.Contains(-num))
            {
                // 答えに追加
                answerList.Add(num);
            }
        }

        // 選択肢のシャッフル
        answerList = ShuffleList.Shuffle(answerList);

        // 配置
        for (int i = 0; i < answerList.Count; i++)
        {
            GameObject obj = GameObject.Instantiate(answerButtonPrefab, answerGrid.transform);
            obj.GetComponent <AnswerButton>().Init(answerList[i], answerList[i] == answer, (result) => {
                if (result)
                {
                    onOk();
                }
            });
        }
    }