Beispiel #1
0
        /// <summary>
        /// 获取应答码列表
        /// </summary>
        /// <returns></returns>
        public static AnswerCode GetAnswerList()
        {
            string     path       = Path.Combine(System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase, @"XmlConfig\AnswerList.xml");
            AnswerCode answerCode = ConfigHelper.XmlDeserializeFromFile <AnswerCode>(path, Encoding.Default);

            return(answerCode);
        }
Beispiel #2
0
        public CommitAnswerResult CommitAnswer(AnswerCode answer)
        {
            CommitAnswerResult answerResult = CurrentQuestion.CommitAnswer(answer, this);

            if (answerResult.WasAnswerCorrect)
            {
                var nextLevelKey = _activeLevelKey + 1;
                if (_gameLevels.Count >= nextLevelKey)
                {
                    SetActiveLevel(nextLevelKey);
                }
                else
                {
                    GameOver = true;
                    this.CurrentLevel.IsCompleted = true;
                    //.NET Ninja reached!!! Congratulation
                }
            }
            else
            {
                GameOver = true;
                //stop the game
            }

            return(answerResult);
        }
Beispiel #3
0
 void _view_AnswerSelected(object sender, AnswerSelectedEventArgs e)
 {
     ResetAllAnswers();
     _answerGivenByUser = e.SelectedAnswer;
     _gameView.Button(e.SelectedAnswer).SetState(AnswerButtonState.Selected);
     //ServiceLocator.Sound.PlayEffect(gfx.SoundEffect.ButtonPress);
 }
Beispiel #4
0
        private void CreateRandomizedAnswerDictionary()
        {
            _randomizedAnswerDictionary = new Dictionary <AnswerCode, string>(4);

            List <AnswerCode> orderedAnswerCodeList = new List <AnswerCode>();

            orderedAnswerCodeList.Add(AnswerCode.A);
            orderedAnswerCodeList.Add(AnswerCode.B);
            orderedAnswerCodeList.Add(AnswerCode.C);
            orderedAnswerCodeList.Add(AnswerCode.D);

            List <AnswerCode> randomAnswerCodeList = new List <AnswerCode>(4);
            Random            rand = new Random();
            int randomIndex;

            while (orderedAnswerCodeList.Count > 0)
            {
                randomIndex = rand.Next(0, orderedAnswerCodeList.Count);
                randomAnswerCodeList.Add(orderedAnswerCodeList[randomIndex]);
                orderedAnswerCodeList.RemoveAt(randomIndex);
            }

            _correctAnswerCode = randomAnswerCodeList[0];
            _randomizedAnswerDictionary.Add(randomAnswerCodeList[0], _question.CorrectAnswer);
            _randomizedAnswerDictionary.Add(randomAnswerCodeList[1], _question.WrongAnswer1);
            _randomizedAnswerDictionary.Add(randomAnswerCodeList[2], _question.WrongAnswer2);
            _randomizedAnswerDictionary.Add(randomAnswerCodeList[3], _question.WrongAnswer3);
        }
Beispiel #5
0
            public int CompareTo(AnswerCode other)
            {
                if (TotalLen < other.TotalLen)
                {
                    return(-1);
                }
                if (TotalLen > other.TotalLen)
                {
                    return(1);
                }

                for (var i = 0; i < LeftPart.Length; i++)
                {
                    var thisP  = LeftPart[i];
                    var otherP = other.LeftPart[i];

                    if (thisP > otherP)
                    {
                        return(-1);
                    }
                    if (thisP < otherP)
                    {
                        return(1);
                    }
                }
                return(0);
            }
        void IProcessManager.Annotate(string processId, int memberId, AnswerCode annotation)
        {
            var process = GetProcess(processId);

            process.Annotate(memberId, annotation);
            _clients.ProcessUpdated(new ProcessModel(process));
        }
Beispiel #7
0
 /// <summary>
 /// 加载响应码
 /// </summary>
 /// <param name="isRefresh">true:重新加载</param>
 /// <returns></returns>
 public static AnswerCode LoadAnswerCode(bool isRefresh = false)
 {
     if (answerCode == null || isRefresh)
     {
         answerCode = ConfigManage.GetAnswerList();
     }
     return(answerCode);
 }
Beispiel #8
0
 private void CreateBrandNewGame()
 {
     _gameOverView.Hide();
     RandomizeQuestions();
     ServiceLocator.CreateNewGame();
     SetANewBackground();
     _answerGivenByUser = AnswerCode.AnswerNotGiven;
     _answerCommitted   = false;
 }
Beispiel #9
0
 private void TriggerAnswerSelected(AnswerCode answer)
 {
     if (AnswerSelected != null)
     {
         AnswerSelected(null, new AnswerSelectedEventArgs {
             SelectedAnswer = answer
         });
     }
 }
 private void TriggerAnswerSelected(AnswerCode answer)
 {
     _state = GUIState.Answered;
     if (AnswerSelected != null)
     {
         AnswerSelected(null, new AnswerSelectedEventArgs {
             SelectedAnswer = answer
         });
     }
 }
Beispiel #11
0
        private static ulong S(AnswerCode n)
        {
            var sum = 0ul;

            for (var i = 0; i < n.LeftPart.Length; i++)
            {
                sum += ((ulong)i + 1) * n.LeftPart[i];
            }
            sum += 9 * n.NinesCount;
            return(sum);
        }
        internal CommitAnswerResult CommitAnswer(AnswerCode answer, GameController game)
        {
            CommitAnswerResult result = new CommitAnswerResult(answer, _correctAnswerCode);

            if (result.WasAnswerCorrect)
            {
                _question.Usage.IncreaseCorrectAnswersCount();
            }
            else
            {
                _question.Usage.IncreaseWrongAnswersCount();                
            }

            game.QuestionRepository.SaveQuestion(_question);

            return result;
        }
Beispiel #13
0
        internal CommitAnswerResult CommitAnswer(AnswerCode answer, GameController game)
        {
            CommitAnswerResult result = new CommitAnswerResult(answer, _correctAnswerCode);

            if (result.WasAnswerCorrect)
            {
                _question.Usage.IncreaseCorrectAnswersCount();
            }
            else
            {
                _question.Usage.IncreaseWrongAnswersCount();
            }

            game.QuestionRepository.SaveQuestion(_question);

            return(result);
        }
Beispiel #14
0
        void _view_NewQuestion(object sender, EventArgs e)
        {
            if (ServiceLocator.Game.GameOver)
            {
                CreateBrandNewGame();
            }

            if (NotReadyForNewQuestion)
            {
                return;
            }

            _gameProgressView.AdvanceLadder();
            _answerGivenByUser = AnswerCode.AnswerNotGiven;
            SetQuestionAndAnswersTexts(ServiceLocator.Game.GetNewQuestion(ServiceLocator.Game.CurrentLevel));
            //ServiceLocator.Sound.PlayEffect(gfx.SoundEffect.NewQuestion);
            _answerCommitted = false;
        }
        public AnswerButton Button(AnswerCode answerCode)
        {
            switch (answerCode)
            {
            case AnswerCode.A:
                return(_answerAButton);

            case AnswerCode.B:
                return(_answerBButton);

            case AnswerCode.C:
                return(_answerCButton);

            case AnswerCode.D:
                return(_answerDButton);

            default:
                throw new ApplicationException("Unknown answer code..");
            }
        }
Beispiel #16
0
        public void CreateAnswerCodeXml()
        {
            string path = Path.Combine(System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase, @"XmlConfig\AnswerList.xml");
            string str  = FileHelper.ReadTextFile("error.txt");

            string[] strArr = str.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries);
            var      obj    = new AnswerCode();

            for (int i = 0; i < strArr.Length; i++)
            {
                string[] item = strArr[i].Split('\t');
                if (item.Length >= 2)
                {
                    obj.AnswerList.Add(new RspStatus()
                    {
                        Code = item[0].Trim(),
                        Msg  = item[1].Trim()
                    });
                }
            }
            ConfigHelper.XmlSerializeToFile(obj, path, Encoding.Default);
        }
 void _view_AnswerSelected(object sender, AnswerSelectedEventArgs e)
 {         
     ResetAllAnswers();
     _answerGivenByUser = e.SelectedAnswer;
     _gameView.Button(e.SelectedAnswer).SetState(AnswerButtonState.Selected);
     //ServiceLocator.Sound.PlayEffect(gfx.SoundEffect.ButtonPress);
 }
        private void CreateRandomizedAnswerDictionary()
        {
            _randomizedAnswerDictionary = new Dictionary<AnswerCode, string>(4);

            List<AnswerCode> orderedAnswerCodeList = new List<AnswerCode>();
            orderedAnswerCodeList.Add(AnswerCode.A);
            orderedAnswerCodeList.Add(AnswerCode.B);
            orderedAnswerCodeList.Add(AnswerCode.C);
            orderedAnswerCodeList.Add(AnswerCode.D);

            List<AnswerCode> randomAnswerCodeList = new List<AnswerCode>(4);
            Random rand = new Random();
            int randomIndex;
            while (orderedAnswerCodeList.Count > 0)
            {
                randomIndex = rand.Next(0, orderedAnswerCodeList.Count);
                randomAnswerCodeList.Add(orderedAnswerCodeList[randomIndex]);
                orderedAnswerCodeList.RemoveAt(randomIndex);
            }

            _correctAnswerCode = randomAnswerCodeList[0];
            _randomizedAnswerDictionary.Add(randomAnswerCodeList[0], _question.CorrectAnswer);
            _randomizedAnswerDictionary.Add(randomAnswerCodeList[1], _question.WrongAnswer1);
            _randomizedAnswerDictionary.Add(randomAnswerCodeList[2], _question.WrongAnswer2);
            _randomizedAnswerDictionary.Add(randomAnswerCodeList[3], _question.WrongAnswer3);
        }
        void _view_NewQuestion(object sender, EventArgs e)
        {
            if (ServiceLocator.Game.GameOver)
                CreateBrandNewGame();

            if (NotReadyForNewQuestion)
                return;

            _gameProgressView.AdvanceLadder();
            _answerGivenByUser = AnswerCode.AnswerNotGiven;
            SetQuestionAndAnswersTexts(ServiceLocator.Game.GetNewQuestion(ServiceLocator.Game.CurrentLevel));
            //ServiceLocator.Sound.PlayEffect(gfx.SoundEffect.NewQuestion);
            _answerCommitted = false;
        }
 private void CreateBrandNewGame()
 {
     _gameOverView.Hide();
     RandomizeQuestions();
     ServiceLocator.CreateNewGame();
     SetANewBackground();
     _answerGivenByUser = AnswerCode.AnswerNotGiven;
     _answerCommitted = false;
 }
Beispiel #21
0
 public BuildMessageResBody()
 {
     this.answerCode = GlobalData.LoadAnswerCode();
 }
 private void TriggerAnswerSelected(AnswerCode answer)
 {
     _state = GUIState.Answered;
     if (AnswerSelected != null)
         AnswerSelected(null, new AnswerSelectedEventArgs { SelectedAnswer = answer });
 }
Beispiel #23
0
 private string GetAnswerByAnswerCode(AnswerCode answerCode)
 {
     return(_randomizedAnswerDictionary[answerCode]);
 }
 public Answer(AnswerCode code)
 {
     this.Code        = code;
     this.Description = "";
 }
 public AnswerButton Button(AnswerCode answerCode)
 {
     switch (answerCode)
     {
         case AnswerCode.A:
             return _answerAButton;
         case AnswerCode.B:
             return _answerBButton;
         case AnswerCode.C:
             return _answerCButton;
         case AnswerCode.D:
             return _answerDButton;
         default:
             throw new ApplicationException("Unknown answer code..");
     }
 }
Beispiel #26
0
 public ChatAnswer(IClientCallback client, AnswerCode code, List<object> arguments)
 {
     Client = client;
     Code = code;
     Arguments = arguments;
 }
Beispiel #27
0
 public ChatAnswer(IClientCallback client, AnswerCode code, List <object> arguments)
 {
     Client    = client;
     Code      = code;
     Arguments = arguments;
 }
 public Answer(AnswerCode code, string description)
 {
     this.Code        = code;
     this.Description = description;
 }
 public CommitAnswerResult(AnswerCode userAnswered, AnswerCode correctAnswer)
 {
     UserAnswer = userAnswered;
     CorrectAnswer = correctAnswer;
 }
Beispiel #30
0
        public static void Solve()
        {
            factorials    = new ulong[10];
            factorials[0] = 1;
            for (ulong i = 1; i < 10; i++)
            {
                factorials[i] = factorials[i - 1] * i;
            }

            garr = new AnswerCode[max + 1];

            const ulong fact9 = 362880;

            FillCache();
            Console.WriteLine("Cache filled with : {0} values", cache.Count);

            // cache.Max(c => c.TotalLen) == 36
            var toAdd = new List <AnswerCode>();

            foreach (var answerCode in cache)
            {
                for (var i = 1ul; i <= 36 - answerCode.TotalLen; i++)
                {
                    toAdd.Add(new AnswerCode
                    {
                        LeftPart   = answerCode.LeftPart,
                        FKey       = answerCode.FKey + fact9 * i,
                        TotalLen   = answerCode.TotalLen + i,
                        NinesCount = i
                    });
                }
            }
            cache.AddRange(toAdd);
            Console.WriteLine("Cache refilled, total : {0} values", cache.Count);

            // Set correct to i = 61
            foreach (var left in cache)
            {
                var fn = left.FKey;
                var sf = S(fn);

                if (sf <= max)
                {
                    var old = garr[sf];

                    if (old == null)
                    {
                        garr[sf] = new AnswerCode
                        {
                            FKey       = fn,
                            LeftPart   = left.LeftPart,
                            TotalLen   = left.TotalLen,
                            NinesCount = left.NinesCount,
                        }
                    }
                    ;
                    else if (left.CompareTo(old) < 0)
                    {
                        garr[sf] = new AnswerCode
                        {
                            FKey       = fn,
                            LeftPart   = left.LeftPart,
                            TotalLen   = left.TotalLen,
                            NinesCount = left.NinesCount,
                        }
                    }
                    ;
                }
            }
            cache.RemoveAll(c => c.TotalLen < 36);
            Console.WriteLine("Cache cleaned, total : {0} values", cache.Count);

            cache = cache.OrderBy(a => a, new AnswerCodeComparer()).ToList();
            Console.WriteLine("Cache ordered");

//			foreach (var gr in cache.GroupBy(c => c.FKey))
//				if (gr.ToArray().Length > 1)
//					Console.WriteLine(new { gr.Key });

            foreach (var item in cache.Take(30))
            {
                Console.WriteLine(new { item, fk = item.FKey });
            }

            // i <= 300 : Set correct to i = 72
            for (var i = 1; i <= 300; i++)
            {
                foreach (var left in cache)
                {
                    var fn = left.FKey;
                    var sf = S(fn);

                    if (sf <= max && garr[sf] == null)
                    {
                        garr[sf] = new AnswerCode
                        {
                            FKey       = fn,
                            LeftPart   = left.LeftPart,
                            TotalLen   = left.TotalLen,
                            NinesCount = left.NinesCount,
                        };
                    }

                    left.TotalLen   = left.TotalLen + 1;
                    left.NinesCount = left.NinesCount + 1;
                    left.FKey       = left.FKey + fact9;
                }

                // Experimental 1
                if (i == 50)
                {
                    cache.RemoveAll(c => c.FKey % 10 != 9);
                    Console.WriteLine("Experiment cleaning : {0} values", cache.Count);
                }
            }

            var starts = new ulong[]
            {
                55,
                82,
                110,
                137,
                165,
                192,
                220,
                248,
                275,
            };

            var fright = 99999999ul;

            for (var cycle = 0ul; cycle <= 8; cycle++)
            {
                for (var d = 1ul; d <= 9; d++)
                {
                    var ftarget     = d * (fright + 1) + fright;
                    var destination = 72 + (cycle * 9) + d;

                    if (destination > max)
                    {
                        break;
                    }

                    var ninesBase = starts[d - 1] * 10;
                    var rem       = ftarget % fact9;
                    var left      = cache.Single(a => a.FKey % fact9 == rem);

                    Console.WriteLine(new { ftarget, destination, ninesBase });

                    for (var j = 0ul; j <= 9; j++)
                    {
                        var nines = ninesBase + j - left.NinesCount;

                        var fn = left.FKey + nines * fact9;
                        var sf = S(fn);
                        if (sf == destination)
                        {
                            var old = garr[sf];
                            if (old == null)
                            {
                                starts[d - 1] = ninesBase + j;
                                garr[sf]      = new AnswerCode
                                {
                                    FKey       = fn,
                                    LeftPart   = left.LeftPart,
                                    TotalLen   = left.TotalLen,
                                    NinesCount = ninesBase + j,
                                };
                                break;
                            }
                        }
                    }
                }

                fright = fright * 10 + 9;
            }

            var sum = 0ul;

            for (var i = 1; i <= max; i++)
            {
                var g = garr[i];

                if (g == null)
                {
                    Console.WriteLine("Unknown: " + i);
                }
                else
                {
                    var sgi = S(g);

                    sum += sgi;

                    Console.WriteLine(new { i, nines_in_g = g.NinesCount, f = g.FKey });
                }
            }

            Console.WriteLine(new { sum });
        }
Beispiel #31
0
 public CommitAnswerResult(AnswerCode userAnswered, AnswerCode correctAnswer)
 {
     UserAnswer    = userAnswered;
     CorrectAnswer = correctAnswer;
 }
        public CommitAnswerResult CommitAnswer(AnswerCode answer)
        {
            CommitAnswerResult answerResult = CurrentQuestion.CommitAnswer(answer, this);

            if (answerResult.WasAnswerCorrect)
            {
                var nextLevelKey = _activeLevelKey + 1;
                if (_gameLevels.Count >= nextLevelKey)
                {
                    SetActiveLevel(nextLevelKey);
                }
                else
                {
                    GameOver = true;
                    this.CurrentLevel.IsCompleted = true;
                    //.NET Ninja reached!!! Congratulation
                }
            }
            else
            {
                GameOver = true;
                //stop the game
            }

            return answerResult;
        }
 private string GetAnswerByAnswerCode(AnswerCode answerCode)
 {
     return _randomizedAnswerDictionary[answerCode];
 }