コード例 #1
0
ファイル: behaviour.php プロジェクト: pac/CodeRunner
 protected function adaptive_mark_details_from_step(question_attempt_step $gradedstep, question_state $state, $maxmark, $penalty)
 {
     if (!isset($this->question->penaltyregime) || $this->question->penaltyregime === '') {
         $details = parent::adaptive_mark_details_from_step($gradedstep, $state, $maxmark, $penalty);
     } else {
         $prevtries = $this->qa->get_last_behaviour_var('_try', 0);
         $fract = $this->adjusted_fraction(1.0, $prevtries);
         $details = new qbehaviour_adaptive_mark_details($state);
         $details->maxmark = $maxmark;
         $details->actualmark = $gradedstep->get_fraction() * $details->maxmark;
         $details->rawmark = $gradedstep->get_behaviour_var('_rawfraction') * $details->maxmark;
         $details->totalpenalty = 1.0 - $fract;
         $details->currentpenalty = $details->totalpenalty * $details->maxmark;
         $details->improvable = $this->is_state_improvable($gradedstep->get_state());
     }
     return $details;
 }