Esempio n. 1
0
        public List <CRW_Question> GetCRW_QuestionByList(CRW_Level level)
        {
            List <CRW_Question> r = new List <CRW_Question>();

            var list = TiKu.InitList();

            Random random = new Random();

            for (int index = 0; index < level.QuestionCount; index++)
            {
                int randomIndex = random.Next(TiKu.ListCount);
                var randTiKu    = list[randomIndex];

                CRW_Question toAdd = new CRW_Question();

                toAdd.CRWTypeID = level.CRWTypeID;

                toAdd.No           = index + 1;
                toAdd.Left         = randTiKu.Left;
                toAdd.Symbol       = randTiKu.Symbol;
                toAdd.Right        = randTiKu.Right;
                toAdd.EqualsSymbol = randTiKu.EqualsSymbol;
                toAdd.Result       = randTiKu.Result;
                toAdd.TTSMsg       = "{0}{1}{2}".FormatWith(ToChineseNumber(toAdd.Left),
                                                            ToChineseSymbol(toAdd.Symbol),
                                                            ToChineseNumber(toAdd.Right));


                toAdd.ChangeStatus(CRW_Question_Status.Remember);

                r.Add(toAdd);
            }

            return(r);
        }
Esempio n. 2
0
        /// <summary>
        /// 根据正确率 判断下一局的等级
        /// </summary>
        public Tuple <CRW_Level, string> CalcLevel(CRW_Level level, List <CRW_Question> args)
        {
            // 语音
            string ttsMsg         = string.Empty;
            string levelChangeMsg = string.Empty;

            if (level == null)
            {
                throw new BusinessException("level is null");
            }

            if (level.LevelNo <= 0)
            {
                throw new BusinessException("levelNo 少于 0");
            }

            decimal correctPercentage = this.CheckCorrectPercentage(args);

            int tmpLevelNo = -9876;

            if (correctPercentage <= 65m) // 降级
            {
                tmpLevelNo     = level.LevelNo - 1;
                levelChangeMsg = "下降";
            }
            else if (correctPercentage > 85m) // 升级
            {
                tmpLevelNo     = level.LevelNo + 1;
                levelChangeMsg = "上升";
            }
            else // 等级不变
            {
                tmpLevelNo     = level.LevelNo;
                levelChangeMsg = "不变";
            }

            if (tmpLevelNo <= 0)
            {
                tmpLevelNo = 1;
            }

            ttsMsg = "答题完毕, 正确率百分之{0}".FormatWith(CRWBll.ToChineseNumber(correctPercentage));

            switch (levelChangeMsg)
            {
            case "上升": ttsMsg += "由于超过百分之{0}等级{1}".FormatWith(CRWBll.ToChineseNumber(85), levelChangeMsg); break;

            case "不变": ttsMsg += "由于是百分之{0}等级{1}".FormatWith(CRWBll.ToChineseNumber(correctPercentage), levelChangeMsg); break;

            case "下降": ttsMsg += "由于低于百分之{0}等级{1}".FormatWith(CRWBll.ToChineseNumber(65), levelChangeMsg); break;
            }

            return(new Tuple <CRW_Level, string>(new CRW_Level(tmpLevelNo, level.CRWTypeID), ttsMsg));
        }
Esempio n. 3
0
        //void changeLevelForTest()
        //{
        //    this.ViewModel.CurrentIndex = null;
        //    readLevel();
        //    calcQuestion();
        //}

        private void readLevel()
        {
            CRWLog log = Client.Common.StaticInfo.InnerSQLiteDB.CRW_rLog(PageGamesList.Game_User, this.ViewModel.CRWTypeID);

            if (log.NextLevel.HasValue)
            {
                // var now = WebDateTime.Now;
                var now   = DateTime.Now;
                var today = now.Date;

                var toAdd = new CRWLog()
                {
                    UserID            = log.UserID,
                    CRWTypeID         = this.ViewModel.CRWTypeID,
                    Level             = log.NextLevel.Value,
                    DateValue         = today.Ticks,
                    DateDisplay       = today.ToString("yyyy-MM-dd"),
                    UpdateTimeValue   = now.Ticks,
                    UpdateTimeDisplay = now.ToString("yyyy-MM-dd HH:mm:ss.fff"),
                    Percentage        = null,
                    NextLevel         = null,
                    UseTime           = log.UseTime,
                    UseTimeDisplay    = log.UseTimeDisplay
                };

                Client.Common.StaticInfo.InnerSQLiteDB.CRW_cLog(toAdd);

                // 再次获取
                log = Client.Common.StaticInfo.InnerSQLiteDB.CRW_rLog(PageGamesList.Game_User, this.ViewModel.CRWTypeID);
            }

            CRW_Level level = new CRW_Level(log.Level, this.ViewModel.CRWTypeID);

            this.ViewModel.Level = level;

            #region 听力溯算 根据难度调整语速

            if (
                this.ViewModel.CRWTypeID == 2 &&
                this.ViewModel.Level != null
                )
            {
                App.TTS.SetSpeechRateSilent(this.ViewModel.Level.SpeechRate);
            }

            #endregion
        }
Esempio n. 4
0
        public Tuple <int, CRW_Question, CRW_Question> ReadNextQuestion(int?currentIndex, CRW_Level level, List <CRW_Question> questionList)
        {
            int index = 0;

            if (currentIndex.HasValue == false)
            {
                currentIndex = 0;
            }

            index = currentIndex.Value;

            CRW_Question toRemember = null;
            CRW_Question toAnswer   = null;

            if (index <= level.RememberEndIndex)
            {
                toRemember = questionList[index];
                toRemember.ChangeStatus(CRW_Question_Status.Remember);
            }

            if (index >= level.AnswerStartIndex && index <= level.MaxIndex)
            {
                toAnswer = questionList[index - level.SuDa];
                toAnswer.ChangeStatus(CRW_Question_Status.Answer);
            }

            return(new Tuple <int, CRW_Question, CRW_Question>
                   (
                       index + 1,
                       toRemember,
                       toAnswer
                   ));
        }