private function generaEstadoDescanso() { //Generamos estado tras el descanso $params = array('difNiv' => (double) $this->dif_niveles, 'aforoMax' => (double) 0, 'aforoLoc' => (double) $this->aforo_local, 'aforoVis' => (double) $this->aforo_visitante, 'moralLoc' => (double) $this->moral_local, 'moralVis' => (double) $this->moral_visitante, 'ofensLoc' => (double) $this->ofensivo_local, 'ofensVis' => (double) $this->ofensivo_visitante, 'defensLoc' => (double) $this->defensivo_local, 'defensVis' => (double) $this->defensivo_visitante, 'estado' => null); $this->estado = Formula::siguienteEstado($params); //Aumentamos el turno $this->turno++; }
/** * Simulador de la formula estadistica * * Crea una vista en la que se muestra el simulador de un partido * * @param int $dn diferencia de nivel * @param int $am aforo maximo * @param int $al aforo local * @param int $av aforo visitante * @param int $ml moral local * @param int $mv moral visitinate * @param int $ol ofensiva local * @param int $ov ofensiva visitante * @param int $dl defensa local * @param int $dv defensa visitante * * @route JugadorNum12/scripts/formula * @return void */ public function actionFormula($dn = 0, $am = 0, $al = 0, $av = 0, $ml = 0, $mv = 0, $ol = 0, $ov = 0, $dl = 0, $dv = 0) { // Creamos el array de parámetros a partir de los datos GET $params = array('difNiv' => (double) $dn, 'aforoMax' => (double) $am, 'aforoLoc' => (double) $al, 'aforoVis' => (double) $av, 'moralLoc' => (double) $ml, 'moralVis' => (double) $mv, 'ofensLoc' => (double) $ol, 'ofensVis' => (double) $ov, 'defensLoc' => (double) $dl, 'defensVis' => (double) $dv); // Obtenemos los pesos y las probabilidades de todos los estados for ($i = -10; $i <= 9; $i++) { $params['estado'] = $i == -10 ? null : $i; $pesos[$params['estado']] = Formula::pesos($params); $probs[$params['estado']] = Formula::probabilidades($params); } // Calculamos los colores para la tabla foreach ($probs as $i => $v) { $max = max($v); foreach ($v as $ii => $vv) { $r = 255; $g = 255 - (int) round($vv * 255); $b = 255 - (int) round($vv / $max * 255); $colors[$i][$ii] = "rgb({$r},{$g},{$b})"; } } // Simulamos un partido con todos los estados iniciales for ($i = -9; $i <= 9; $i++) { $estados[$i] = array($i); $params['estado'] = $i; for ($t = 0; $t < 12; $t++) { $estSig = Formula::siguienteEstado($params); $params['estado'] = $estSig; $estados[$i][] = $estSig; } } foreach ($estados as $i => $v) { foreach ($v as $ii => $vv) { if ($vv < 0) { $nc = (int) (255 * (1 + $vv / 10)); $c = "rgb(255,{$nc},{$nc})"; } else { if ($vv > 0) { $nc = (int) (255 * (1 - $vv / 10)); $c = "rgb({$nc},{$nc},255)"; } else { $c = 'white'; } } $estColors[$i][$ii] = $c; } } // Dibujamos la vista unset($params['estado']); $this->layout = "main"; $this->render('formula', array('probs' => $probs, 'pesos' => $pesos, 'colors' => $colors, 'params' => $params, 'estados' => $estados, 'estColors' => $estColors)); }