Example #1
0
    public int UpdateScore(Param_Game_Result p) // 매초 스코어를 업데이트 한다.
    {
        // 스코어 설정되어있지 않으면 초기화
        p.interestScore = (int)Mathf.Pow(2.0f, p.puzzleCount);

        if (p.useTime > p.avgSolveTime)
        {
            // 스코어 감점
            int delta = (int)(p.lastScore * 0.01f);
            if (delta == 0)
            {
                delta = 1;
            }
            p.lastScore -= delta;

            int minimumScore = (int)(p.interestScore * 0.05);

            p.lastScore = p.lastScore < minimumScore ? minimumScore : p.lastScore; // 최소점수 적용

            return(p.lastScore);
        }
        else
        {
            return(p.interestScore);
        }
    }
Example #2
0
    public int GameScoreResult(Param_Game_Result p)
    {
        // 게임 결과를 zone에서 전달받아 현재 테마, 스테이지 정보를 반영하여 결과 스코어를 계산하여 결과를 전달한다.

        /*
         * 기준 시간 초과시 초당 2점 감점
         * 1초 당겨질 시 +2
         */
        int deltaSec      = (int)(p.avgSolveTime - p.useTime);   //변동 점수
        int interestScore = (int)Mathf.Pow(2.0f, p.puzzleCount); //기준 점수
        int minimumScore  = (int)(interestScore * 0.5f);         //기본 점수
        int factor        = (int)Mathf.Pow(0.99f, deltaSec);     //interestScore - (deltaSec * 10);
        int score         = factor * interestScore;

        Debug.Log("deltaSec : " + deltaSec + "/ interestScore:" + interestScore + "/ factor: " + factor);
        return(score > minimumScore ? score: minimumScore);
    }
Example #3
0
 IEnumerator TickTok()
 {
     while (true)
     {
         if (m_gameState == EGameState.eOnGame)
         {
             m_useTime += 1.0f;
             Param_Game_Result result = new Param_Game_Result();
             result.puzzleCount  = world.GetWidth() * world.GetHeight();
             result.useTime      = m_useTime;
             result.moveCount    = m_moveCount;
             result.avgSolveTime = m_avgSolveTime;
             result.lastScore    = m_resultScore;
             m_resultScore       = world.UpdateScore(result);
         }
         yield return(new WaitForSeconds(1));
     }
 }