예제 #1
0
        /// <summary>
        /// 比較多少的文字表述部分內容
        /// </summary>
        /// <param name="formula">當前算式</param>
        /// <returns>文字表述部分內容</returns>
        private string CreateMathWordProblem(HowMuchMoreFormula formula)
        {
            StringBuilder content = new StringBuilder();

            if (formula.ChooseMore)
            {
                content.AppendFormat("{0}比{1}多{2}個", "Left", "Right", formula.DefaultFormula.Answer);
            }
            else
            {
                content.AppendFormat("{0}比{1}少{2}個", "Right", "Left", formula.DefaultFormula.Answer);
            }

            return(content.ToString());
        }
        /// <summary>
        /// 已知項目的個數并表示
        /// </summary>
        /// <param name="item">比多少算式</param>
        /// <returns>HTML</returns>
        private string SetDisplayItem(HowMuchMoreFormula item)
        {
            StringBuilder html = new StringBuilder();
            // 顯示個數
            var displayItemCount = item.DisplayLeft ? item.DefaultFormula.LeftParameter : item.DefaultFormula.RightParameter;
            // 顯示項目(圖片顯示)
            var displayItem = item.DisplayLeft ? _moreTypeArray[0] : _moreTypeArray[1];

            for (var index = 0; index < displayItemCount; index++)
            {
                // HTML作成
                html.AppendLine(string.Format("<img src=\"../Content/image/more/{0}.png\" width=\"30\" height=\"30\" />", displayItem.ToString()));
            }

            return(html.ToString());
        }
예제 #3
0
        /// <summary>
        /// 算式作成
        /// </summary>
        /// <param name="p">題型參數</param>
        public override void MarkFormulaList(HowMuchMoreParameter p)
        {
            // 指定單個運算符實例(此題只能用減法運算符)
            IArithmetic strategy = CalculateManager(SignOfOperation.Subtraction);

            // 按照指定數量作成相應的數學計算式
            for (var i = 0; i < p.NumberOfQuestions; i++)
            {
                // 計算式作成
                Formula formula = strategy.CreateFormula(new ArithmeticParameter()
                {
                    // 10以內計算
                    MaximumLimit = (p.MaximumLimit > 10) ? 10 : p.MaximumLimit,
                    QuestionType = QuestionType.Default,
                    MinimumLimit = 0
                });

                if (CheckIsNeedInverseMethod(p.Formulas, formula))
                {
                    i--;
                    continue;
                }

                // 運算式作成
                HowMuchMoreFormula howMuchMoreFormula = new HowMuchMoreFormula()
                {
                    DefaultFormula = formula,
                    // 選擇左邊作為題目的條件還是右邊(隨機獲取)
                    DisplayLeft = CommonUtil.GetRandomNumber(LeftOrRight.Left, LeftOrRight.Right) == LeftOrRight.Left,
                    // 題型選擇:是表示多的題還是少的題(隨機獲取)
                    ChooseMore = CommonUtil.GetRandomNumber(MoreOrLess.More, MoreOrLess.Less) == MoreOrLess.More
                };
                // 文字表述部分內容作成
                howMuchMoreFormula.MathWordProblem = CreateMathWordProblem(howMuchMoreFormula);
                // 答案值(如果顯示的是左邊值,那麼答案就是右邊的值)
                howMuchMoreFormula.Answer = ((howMuchMoreFormula.DisplayLeft) ? howMuchMoreFormula.DefaultFormula.RightParameter : howMuchMoreFormula.DefaultFormula.LeftParameter);

                // 計算式作成
                p.Formulas.Add(howMuchMoreFormula);
            }

            // 智能提示作成
            VirtualHelperBase <HowMuchMoreFormula> helper = new HowMuchMoreDialogue();

            p.BrainpowerHint = helper.CreateHelperDialogue(p.Formulas);
        }
        /// <summary>
        /// 填空項目顯示
        /// </summary>
        /// <param name="item">比多少算式</param>
        /// <param name="controlIndex">題目編號</param>
        /// <returns>HTML</returns>
        private string SetDisplayGapFillingItem(HowMuchMoreFormula item, int controlIndex)
        {
            StringBuilder html = new StringBuilder();

            // 填空項目個數(最多10個)
            var displayItemCount = 10;

            for (var index = 0; index < displayItemCount; index++)
            {
                // HTML作成
                html.AppendLine(string.Format("<img src=\"../Content/image/help.png\" id=\"imgHmmHelp{0}{1}\" width=\"30\" height=\"30\" title=\"help\" />", controlIndex, index));
            }

            // 填空題中可以選擇的圖片集合
            _gapFillingItems.AppendFormat("{0},", item.DisplayLeft ? _moreTypeArray[1].ToString() : _moreTypeArray[0].ToString());

            return(html.ToString());
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="item"></param>
        /// <returns></returns>
        private string GetProblemHtml(HowMuchMoreFormula item)
        {
            StringBuilder html = new StringBuilder();

            // 如果條件顯示是“多”
            if (item.ChooseMore)
            {
                html.AppendLine(string.Format("<img src=\"../Content/image/more/{0}.png\" width=\"30\" height=\"30\" />", _moreTypeArray[0].ToString()));
                html.AppendLine("<span>比</span>");
                html.AppendLine(string.Format("<img src=\"../Content/image/more/{0}.png\" width=\"30\" height=\"30\" />", _moreTypeArray[1].ToString()));
                html.AppendLine(string.Format(SPAN_MORE_LITTLE_HTML_FORMAT, Consts.MORE_UNIT));
            }
            else
            {
                html.AppendLine(string.Format("<img src=\"../Content/image/more/{0}.png\" width=\"30\" height=\"30\" />", _moreTypeArray[1].ToString()));
                html.AppendLine("<span>比</span>");
                html.AppendLine(string.Format("<img src=\"../Content/image/more/{0}.png\" width=\"30\" height=\"30\" />", _moreTypeArray[0].ToString()));
                html.AppendLine(string.Format(SPAN_MORE_LITTLE_HTML_FORMAT, Consts.LITTLE_UNIT));
            }
            html.AppendLine(string.Format("<span>{0}{1}</span>", item.DefaultFormula.Answer, Consts.ENTRY_UNIT));

            return(html.ToString());
        }