/// <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()); }
/// <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()); }