Exemple #1
0
        public async void Start()
        {
            try
            {
                var courseList = await F****r.GetCourseList(0, 100);

                if (courseList == null || courseList.List == null || courseList.List.Count == 0)
                {
                    throw new Exception("not implemented");
                }

                this.courseList = courseList;

                await F****r.GetCourseAppendix(courseList.List[0]);

                if (courseList.List[0].Appendix == null)
                {
                    throw new Exception("获取课程附加信息时出错, 请重新开启程序!");
                }

                this.TaskForWork.LimitIntegral = courseList.List[0].Appendix.MaxExamIntegral;

                DoWork();
            }
            catch (Exception ex)
            {
                F****r.Worker.ReportError(ex.Message);
                Stop();
            }
        }
Exemple #2
0
        public async override void DoWork()
        {
            try
            {
                if (this.TaskStatus == TaskStatus.Stopping)
                {
                    TaskStatus             = TaskStatus.Stopped;
                    TaskForWork.TaskStatus = TaskStatus.Stopped;
                    return;
                }

                Arena = await F****r.GetArena();

                if (Arena == null)
                {
                    throw new Exception("error");
                }

                if (await F****r.JoinArena(Arena) && Arena.GroupId != "")
                {
                    await GetArenaBothSide();

                    StartRound(0);
                }
                else
                {
                    DoWork();
                }
            }
            catch (Exception ex)
            {
                F****r.Worker.ReportError(ex.Message);
                Stop();
            }
        }
Exemple #3
0
        private async void OnReply(object sender, ElapsedEventArgs args, int roundIndex)
        {
            try
            {
                var round  = Arena.Rounds[roundIndex];
                var myself = Arena.BothSides.FindIndex(s => s.Username == F****r.Worker.User.UserName);
                var rival  = myself ^ 1;

                var myRight    = round.AnswerResult[myself].Where(s => s == 1).Count();
                var rivalRight = round.AnswerResult[rival].Where(s => s == 1).Count();

                string answer;
                if (myRight >= rivalRight + 2)
                {
                    answer = round.Question.Answers == "A" ? "B" : "A";
                }
                else
                {
                    answer = round.Question.Answers;
                }

                if (await F****r.SubmitQuestion(Arena, round, answer.Replace(";", ",")))
                {
                    StartRound(++roundIndex);
                }
            }
            catch (Exception ex)
            {
                F****r.Worker.ReportError(ex.Message);
                Stop();
            }
        }
Exemple #4
0
        public async override void DoWork()
        {
            try
            {
                Random random = new Random();
                int    id     = random.Next(0, courseList.List.Count - 1);

                var course = courseList.List[id];

                var examList = await F****r.GetExamList(course);

                if (examList == null || examList.Count == 0)
                {
                    DoWork();
                    return;
                }

                DoExam(course, examList.List[0], examList);
            }
            catch (Exception ex)
            {
                F****r.Worker.ReportError(ex.Message);
                Stop();
            }
        }
Exemple #5
0
        public async void DoExam(Course course, Exam exam, ExamList examList)
        {
            try
            {
                if (this.TaskStatus == TaskStatus.Stopping)
                {
                    TaskStatus = TaskStatus.Stopped;
                    return;
                }

                this.Exam = exam;
                await F****r.GetExamDetail(exam);

                if (exam.ExamDetail == null || exam.ExamDetail.AllowExam == false)
                {
                    var index = examList.List.IndexOf(exam);
                    if (index == examList.Count - 1)
                    {
                        DoWork();
                    }
                    else
                    {
                        index++;
                        DoExam(course, examList.List[index], examList);
                    }
                }
                else
                {
                    var integral = await StartExam(exam);

                    TaskForWork.Integral += integral;
                    if (TaskForWork.LimitIntegral <= TaskForWork.Integral)
                    {
                        this.Complete();
                    }
                    else
                    {
                        var index = examList.List.IndexOf(exam);
                        if (index == examList.Count - 1)
                        {
                            DoWork();
                        }
                        else
                        {
                            index++;
                            DoExam(course, examList.List[index], examList);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                F****r.Worker.ReportError(ex.Message);
                Stop();
            }
        }
Exemple #6
0
        public override bool Start(F****r f****r)
        {
            if (!base.Start(f****r))
            {
                return(false);
            }

            Start();
            return(true);
        }
        public virtual bool Start(F****r f****r)
        {
            this.F****r = f****r;
            if (TaskStatus != TaskStatus.Initial)
            {
                return(false);
            }
            TaskStatus = TaskStatus.Working;

            return(true);
        }
Exemple #8
0
        private async System.Threading.Tasks.Task GetArenaBothSide()
        {
            if (await F****r.GetArenaBothSide(Arena))
            {
                await F****r.ReadyToFight();

                return;
            }
            else
            {
                await GetArenaBothSide();
            }
        }
Exemple #9
0
        public async override void DoWork()
        {
            try
            {
                List <ExerciseAnswer> answers;
                foreach (var item in breakthroughList.List)
                {
                    answers = new List <ExerciseAnswer>();
                    if (!item.IsPass)
                    {
                        await F****r.StartBreakthrough(item);

                        foreach (var question in item.Questions)
                        {
                            answers.Add(new ExerciseAnswer()
                            {
                                TmID = question.TmID, AnswerContent = question.Answers.Replace(";", ",")
                            });
                        }
                        await F****r.HandIn(item, answers, 15);

                        await F****r.GetResult(item.Result);

                        TaskForWork.Integral += item.Result.Integral;

                        if (TaskForWork.LimitIntegral <= TaskForWork.Integral)
                        {
                            this.Complete();
                            return;
                        }
                    }
                }

                if (TaskForWork.LimitIntegral > TaskForWork.Integral)
                {
                    Start();
                }
            }
            catch (TransportException ex)
            {
                F****r.Worker.ReportError(ex.Message);
                F****r.Worker.Say("闯关答题答题失败!");
                Stop();
            }
            catch (Exception ex)
            {
                F****r.Worker.ReportError(ex.Message);
                F****r.Worker.Say("闯关答题答题失败!");
                Stop();
            }
        }
Exemple #10
0
        public void Start(F****r f****r)
        {
            this.f****r   = f****r;
            this.Complete = false;
            if (timer == null)
            {
                timer          = new Timer(F****r.POLLING_TIME);
                timer.Elapsed += Timer_Elapsed;
            }

            if (timer.Enabled)
            {
                timer.Stop();
            }
            timer.Start();
        }
Exemple #11
0
        public override bool Start(F****r f****r)
        {
            if (!base.Start(f****r))
            {
                f****r.Worker.Say("每周一练启动失败!");
                return(false);
            }

            if (TaskForWork.LimitIntegral <= TaskForWork.Integral)
            {
                Complete();
                return(true);
            }

            Start();
            return(true);
        }
Exemple #12
0
        public async override void DoWork()
        {
            try
            {
                List <ExerciseAnswer> answers = new List <ExerciseAnswer>();
                var practiceQuestionList      = await F****r.StartWeeklyPractice();

                foreach (var question in practiceQuestionList.Questions)
                {
                    answers.Add(new ExerciseAnswer()
                    {
                        TmID = question.TmID, AnswerContent = question.Answers.Replace(";", ",")
                    });
                }
                await F****r.HandIn(practiceQuestionList, answers, 15);

                await F****r.GetResult(practiceQuestionList.Result);

                TaskForWork.Integral += practiceQuestionList.Result.Integral;

                if (TaskForWork.LimitIntegral <= TaskForWork.Integral)
                {
                    this.Complete();
                    return;
                }
                else
                {
                    Start();
                }
            }
            catch (TransportException ex)
            {
                F****r.Worker.ReportError(ex.Message);
                F****r.Worker.Say("每日一练答题失败!");
                Stop();
            }
            catch (Exception ex)
            {
                F****r.Worker.ReportError(ex.Message);
                F****r.Worker.Say("每日一练答题失败!");
                Stop();
            }
        }
Exemple #13
0
        private async void Start()
        {
            try
            {
                breakthroughList = await F****r.GetBreakthroughList();

                DoWork();
            }
            catch (TransportException ex)
            {
                F****r.Worker.ReportError(ex.Message);
                F****r.Worker.Say("闯关答题启动失败!");
                Stop();
            }
            catch (Exception ex)
            {
                F****r.Worker.ReportError(ex.Message);
                F****r.Worker.Say("闯关答题启动失败!");
                Stop();
            }
        }
Exemple #14
0
 private async System.Threading.Tasks.Task UpdateQuestionBank(Result result)
 {
     try
     {
         DataContext dataContext = new DataContext();
         if (await F****r.ReviewPaper(result, Exam))
         {
             foreach (var item in result.Questions)
             {
                 if (await dataContext.GetRow(item.TmID) == null)
                 {
                     await dataContext.InsertRow(item);
                 }
             }
         }
     }
     catch (Exception ex)
     {
         F****r.Worker.ReportError(ex.Message);
         Stop();
     }
 }
Exemple #15
0
        private async void StartRound(int roundIndex)
        {
            try
            {
                var round = await F****r.Fight(Arena);

                if (round == null)
                {
                    throw new Exception("error");
                }

                if (round.CurrentIndex == roundIndex && round.Status == "Start")
                {
                    if (Arena.Rounds == null)
                    {
                        Arena.Rounds = new List <Round>();
                    }

                    Arena.Rounds.Add(round);

                    Timer timer = new Timer();
                    timer.Interval  = new Random().Next(5000, 9000);
                    timer.AutoReset = false;
                    timer.Elapsed  += new ElapsedEventHandler((s, e) => OnReply(s, e, roundIndex));
                    timer.Start();
                }
                else if (roundIndex == Arena.TmNumber)
                {
                    if (round.CurrentIndex == 0)
                    {
                        await F****r.EndFight();

                        if (await F****r.GetPKResult(Arena))
                        {
                            var gladiator = Arena.Results.FindIndex(s => s.Gladiator.UserName == F****r.Worker.User.UserName);
                            if (gladiator < 0)
                            {
                                throw new Exception("error");
                            }

                            TaskForWork.Integral += Arena.Results[gladiator].PKScroe;
                            if (TaskForWork.LimitIntegral == TaskForWork.Integral)
                            {
                                Complete();
                            }
                            else
                            {
                                DoWork();
                            }
                        }
                    }
                    else
                    {
                        StartRound(roundIndex);
                    }
                }
                else
                {
                    StartRound(roundIndex);
                }
            }
            catch (Exception ex)
            {
                F****r.Worker.ReportError(ex.Message);
                Stop();
            }
        }
Exemple #16
0
        public async Task <decimal> StartExam(Exam exam)
        {
            try
            {
                DataContext   dataContext = new DataContext();
                List <Answer> answers     = new List <Answer>();
                while (true)
                {
                    if (!await F****r.StartExam(exam))
                    {
                        return(0);
                    }

                    if (exam.Papers == null || exam.Papers.Count == 0)
                    {
                        return(0);
                    }

                    var paper = exam.Papers[exam.Papers.Count - 1];
                    answers.Clear();
                    foreach (var item in paper.Questions)
                    {
                        var question = await dataContext.GetRow(item.TmID);

                        Answer answer = new Answer();
                        answer.TmID = item.TmID;
                        answers.Add(answer);

                        if (question == null)
                        {
                            answer.AnswerContent = "";
                        }
                        else
                        {
                            answer.AnswerContent = question.Answers.Replace(";", ",");
                        }
                    }

                    if (!await F****r.HandIn(paper, exam, answers))
                    {
                        continue;
                    }

                    await F****r.GetResult(paper.Result);


                    if (paper.Result.ErrorQuestionCount != 0)      //答题失败
                    {
                        await UpdateQuestionBank(paper.Result);

                        continue;
                    }
                    else
                    {
                        return(paper.Result.Integral);
                    }
                }
            }
            catch (Exception ex)
            {
                F****r.Worker.ReportError(ex.Message);
                Stop();
                return(0);
            }
        }