Пример #1
0
        private async Task BreakCurrentState()
        {
            Task task;

            lock (critical)
            {
                if (state == null)
                {
                    return;
                }

                state.Session.Completed = true;
                state.TokenSource.Cancel();

                task  = state.LearingTask;
                state = null;
            }

            try
            {
                await task;
            }
            catch (OperationCanceledException)
            {
            }
            catch (Exception ex)
            {
                logger.Value.Info("Break learning is failed");
                logger.Value.Error(ex.Message, ex);
            }
        }
Пример #2
0
        public async Task StartLearning()
        {
            if (IsStarted())
            {
                logger.Value.Info("Learning is already run");
                return;
            }

            logger.Value.Info("Learning is started");
            try
            {
                state = await Task.Run(() => InitState()).ConfigureAwait(false);

                state.LearingTask = Task.WhenAll(IterateLearningTask(), UpdateLearningTask(), UpdateSessionTask());

                await state.LearingTask;
                logger.Value.Info("Learning is completed");
            }
            catch (OperationCanceledException)
            {
                logger.Value.Info("Learning is cancelled");
            }
            catch (Exception ex)
            {
                logger.Value.Info("Learning is failed");
                logger.Value.Error(ex.Message, ex);

                BreakCurrentState().Wait();
            }
        }
Пример #3
0
 public void BackLesson()
 {
     if (Chapter > 0)
     {
         Chapter--;
         LearningState.SetLesson(Chapter);
     }
 }
Пример #4
0
 public void NextLesson()
 {
     if (Chapter < LearningState.Learning.maxLesson)
     {
         Chapter++;
         LearningState.SetLesson(Chapter);
     }
 }
        private bool IsBetterThanOtherConsideringPlanetSize(LearningState previousState)
        {
            if (playerCanSwallowClosestPlayer)
            {
                return(distanceToClosestPlayer < previousState.distanceToClosestPlayer);
            }

            return(distanceToClosestPlayer > previousState.distanceToClosestPlayer);
        }
    private void AddReward()
    {
        var currentState = new LearningState(player, planet);

        if (previousState != null)
        {
            var rewardStep = currentState.CalculateRewardFrom(previousState);
            AddReward(rewardStep);

            //Debug.Log("Reward: " + rewardStep + " || Total: " + GetCumulativeReward());
        }

        previousState = currentState;
    }
Пример #7
0
        private LearningState InitState()
        {
            lock (critical)
            {
                var newState = new LearningState();

                dataFactory.Value.WithRepository <ISettingsRepository>(repo =>
                {
                    newState.Session.CalcTime = repo.GetCalcTime() ?? TimeSpan.Zero;
                    newState.Session.Velocity = repo.GetCalcVelocity() ?? 1.0;
                    newState.Session.AllTime  = repo.GetAllTime() ?? TimeSpan.MaxValue;
                });

                logger.Value.InfoFormat("Init learning session: AllTime: {0}\tCalcTime: {1}\tVelocity: {2}",
                                        newState.Session.AllTime, newState.Session.CalcTime, newState.Session.Velocity);

                return(newState);
            }
        }
        public static IHtmlString GetCourseSubscriptionMarker(LearningState learningState)
        {
            if (!HttpContext.Current.User.Identity.IsAuthenticated)
            {
                return(MvcHtmlString.Create(string.Empty));
            }

            string cssClass;
            string markerText;
            string toolTip;

            switch (learningState)
            {
            case LearningState.Planned:
                markerText = "P";
                toolTip    = "Planned";
                cssClass   = "label-warning";
                break;

            case LearningState.InProgress:
                markerText = "S";
                toolTip    = "Started";
                cssClass   = "label-primary";
                break;

            case LearningState.Finished:
                markerText = "F";
                toolTip    = "Finished";
                cssClass   = "label-success";
                break;

            default:
                markerText = "A";
                toolTip    = "Available";
                cssClass   = "label-info";
                break;
            }

            var marker = string.Format("<span class='tm-sb-marker label {0}' data-toggle='tooltip' title={1}>{2}</span>", cssClass, toolTip, markerText);

            return(MvcHtmlString.Create(marker));
        }
        public float CalculateRewardFrom(LearningState previousState)
        {
            var reward = 0.0f;

            if (SameAction(previousState))
            {
                if (IsBetterThanOtherConsideringPlanetSize(previousState))
                {
                    // No penalty! Good!
                }
                else
                {
                    reward -= 10.0f * Mathf.Abs(previousState.distanceToClosestPlayer - distanceToClosestPlayer);
                }
            }

            // Try to minimize the distance to the black hole.
            reward += 0.01f * (distanceToTheBlackHole - previousState.distanceToTheBlackHole);

            return(reward);
        }
Пример #10
0
    void Start()
    {
        g_badgeDescription = GameObject.FindGameObjectsWithTag("badgeDescription");//抓取所有獎章描述的物件
        for (int i = 0; i < g_badgeDescription.Length; i++)
        {
            g_badgeDescription[i].gameObject.SetActive(false);//隱藏全部
        }
        LearningPanel.SetActive(true);
        CompetePanel.SetActive(false);
        ClickBtn = GetComponent <AudioSource>();

        StartCoroutine(getLearningBadges());//預設顯示學習區
        btn_learningBadge.onClick.AddListener(delegate() { StartCoroutine(getLearningBadges()); });
        btn_competeBadge.onClick.AddListener(getCompeteBadges);
        btn_close.onClick.AddListener(closeAchieveUI);

        for (int i = 0; i < s_LearningState.Length; i++)
        {
            LearningState.GetComponentsInChildren <Text>()[i].text = s_LearningState[i];
            CompeteState.GetComponentsInChildren <Text>()[i].text  = s_CompeteState[i];
        }
    }
 private void Reset()
 {
     player.Respawn(player.GetValidRandomPositionInsideArena(), 7);
     swallowedCount = 0;
     previousState  = null;
 }
 private bool SameAction(LearningState other)
 {
     return(ReferenceEquals(closestPlayer, other.closestPlayer) &&
            playerCanSwallowClosestPlayer == other.playerCanSwallowClosestPlayer);
 }
        public static IHtmlString DisplayCourseSubscriptionToken(this HtmlHelper html, LearningState learningState)
        {
            string token;

            switch (learningState)
            {
            case LearningState.Planned:
                token = "plan";
                break;

            case LearningState.InProgress:
                token = "start";
                break;

            case LearningState.Finished:
                token = "finish";
                break;

            default:
                token = "available";
                break;
            }

            return(MvcHtmlString.Create(token));
        }
 public static IHtmlString DisplayCourseSubscriptionMarker(this HtmlHelper html, LearningState learningState)
 {
     return(GetCourseSubscriptionMarker(learningState));
 }
Пример #15
0
        protected override async Task OnInitAsync()
        {
            await LearningState.PrepareJupyter();

            await LearningState.PrepareLesson();
        }