/// <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); }
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); }
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); }
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)); }
/// <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); }
private void CreateBrandNewGame() { _gameOverView.Hide(); RandomizeQuestions(); ServiceLocator.CreateNewGame(); SetANewBackground(); _answerGivenByUser = AnswerCode.AnswerNotGiven; _answerCommitted = false; }
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 }); } }
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; }
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); }
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.."); } }
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); }
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; }
public BuildMessageResBody() { this.answerCode = GlobalData.LoadAnswerCode(); }
private void TriggerAnswerSelected(AnswerCode answer) { _state = GUIState.Answered; if (AnswerSelected != null) AnswerSelected(null, new AnswerSelectedEventArgs { SelectedAnswer = answer }); }
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.."); } }
public ChatAnswer(IClientCallback client, AnswerCode code, List<object> arguments) { Client = client; Code = code; Arguments = arguments; }
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; }
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 }); }
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]; }