Pagina 1 di 2

[SCRIPT...in progress] ZONA CESARINI

Inviato: 07 ott 2016, 14:11
da papia
tutti i meriti vanno al grande SUPERKAZE, che è tanto che non si fa vedere ma è sempre il benvenuto nonchè padrone qui sul forum

IMPORTANTE. Lo script fu lasciato un pò così, e non è ancora FUNZIONANTE. Riporto tutto qui per riprenderlo e cercare una bella soluzione.
IL PRIMO CHE SCRIVE "HO INSTALLATO E NON FUNZIONA" SI FA UNA VACANZA DI QUALCHE GIORNO


Ciao a tutti, un piccolo script per aggiungere una info sfiziosa alla pagina del calendario:

Zona Cesarini è un'espressione con cui si indica la fase finale di una partita di calcio e, più in generale, di un qualsiasi evento sportivo. Dal punto di vista fantacalcistico possiamo considerare le partite che si sono decise in extremis per mezzo punto, sia per pareggi o vittorie acciuffate grazie a quel mezzo punto, oppure sfuggite proprio per quel mezzo punto non totalizzato.

INSTALLAZIONE

PUNTO 1 - Cercare in fcmCalendarioFunzioni.js la parte in cui vengono visualizzati i Nomi delle Squadre ed aggiungere il richiamo sia per la squadra in casa che per la squadra fuori casa

Codice: Seleziona tutto

checkCesarini(arr[i].Totali.Casa, arr[i].Totali.Fuori, arr[i].Gol.Casa, arr[i].Gol.Fuori)

Codice: Seleziona tutto

checkCesarini(arr[i].Totali.Fuori, arr[i].Totali.Casa, arr[i].Gol.Fuori, arr[i].Gol.Casa)
NB: praticamente la funzione che fa la valutazione è la stessa, inverto solamente l'ordine dei punteggi casa-fuori

PUNTO 2 - AGGIUNGERE ALLA FINE DI fcmCalendarioFunzioni.js questa parte e MODIFICARE gli INTERVALLI DEI PUNTEGGI a seconda di quelli usati nella vostra lega

Codice: Seleziona tutto

function checkCesarini(punteggioCasa, punteggioFuori, golCasa, golFuori){
	var zonaCesariniCasa= 0
	var zonaCesariniFuori= 0
	
	// Calcolo degli esiti sfuggiti di poco
	if(sogliaGolMancata(punteggioCasa)){
		if(golCasa-golFuori==-1){ //cioè se la squadra di casa ha perso di un gol
			zonaCesariniCasa=-1 //cioè avrebbe potuto guadagnare 1 punto in classifica
			zonaCesariniFuori=2 //cioè ha guadagnato 3 punti in classifica anzichè 1 se avesse pareggiato
		} else if(golCasa-golFuori==0){ //cioè se la squadra di casa ha pareggiato
		
			zonaCesariniCasa=-2 //cioè avrebbe potuto guadagnare 3 punti in classifica anzichè 1
			zonaCesariniFuori=1 //cioè ha guadagnato 3 punti in classifica anzichè 1 se avesse pareggiato
		}
		}
		
		// Calcolo degli esiti acciuffati per poco
	if(sogliaGolRaggiunta(punteggioCasa)){
		if(golCasa-golFuori==1){ //cioè se la squadra di casa ha vinto di un gol
			zonaCesariniCasa=2 //cioè ha guadagnato 3 punti in classifica anzichè 1 per il pareggio
			zonaCesariniFuori=-1 //cioè ha perso sfiorando il pareggio
		} else if(golCasa-golFuori==0){ //cioè se la squadra di casa ha pareggiato
			zonaCesariniCasa=1 //cioè ha guadagnato 1 punto rischiando di perdere
			zonaCesariniFuori=-2 //cioè ha pareggiato quando stava per vincere
		}
		}	
	if 	(zonaCesariniCasa==0) return ""
	if 	(zonaCesariniCasa==2) return "<font color=green><b>Vittoria</b> acciuffata</font>"
	if 	(zonaCesariniCasa==1) return "<font color=green><b>Pareggio</b> acciuffato</font>"
	if 	(zonaCesariniCasa==-1) return "<font color=red><b>Pareggio</b> sfuggito</font>"
	if 	(zonaCesariniCasa==-2) return "<font color=red><b>Vittoria<b> sfuggito</font>"
		
	}
	
function sogliaGolRaggiunta(punteggio){
	switch (punteggio) {
		case 59: return true;
		case 66: return true;
		case 72: return true;
		case 77: return true;
		case 81: return true;
		case 85: return true;
		case 89: return true;
		case 93: return true;
		case 97: return true;
		case 101: return true;
		case 105: return true;
		case 109: return true;
		case 113: return true;
		case 117: return true;
	}
	return false
}

function sogliaGolMancata(punteggio){
	switch (punteggio) {
		case 58.5: return true;
		case 65.5: return true;
		case 71.5: return true;
		case 76.5: return true;
		case 80.5: return true;
		case 84.5: return true;
		case 88.5: return true;
		case 92.5: return true;
		case 96.5: return true;
		case 100.5: return true;
		case 104.5: return true;
		case 108.5: return true;
		case 112.5: return true;
		case 116.5: return true;
	}
	return false
}
DEMO: http://bruskalcio.altervista.org/zonaCesarini.php

PS: sarebbe carino fare una tabella in cui si contano i punti in classifica acciuffati o sfuggiti per mezzo punti, ma per ora non è cosa

COSE IN SOSPESO:

1) Non contempla la differenza di tre punti tra due squadre in due fasce differenti (la cd)soglia di 3 punti) (segnalazione Papia),
Superkaze: magari si potrebbe aggiungere un controllo del tipo
if ((punteggioCasa-punteggioFuori)==3) e viceversa
2) Aggiungere e modificare le fasce agli 0,25 (per chi usa il doppio giornale) (segnalazione Papia)
3) discriminanti in merito a questo script:
1) Differenza punti si/no e di quanto
2) Utilizzo uno o più giornali (la vittoria o altro può sfuggire anche per 0,25 e, aggiungo...GRRRRRRRRR)
3) gol bonus sotto i 59 si/no e con che differenza con l'altro contendente.
4) Selezione della competizione (variabile competizione 1, o 2 o 3)

A me nella migliore delle ipotesi esce il calendario e non esce nulla di fianco....

PROBLEMI CERTI CHE IMPEDISCONO IL FUNZIONAMENTO (MOVIEMANIAC):
girolamiandrea82@katamail.com ha scritto:Ciao a tutti ho pravato in vari modi ma non sono riuscito a far funzionare questo script, non ho capito dove inserire il punto 1, help
Grazie mille :D

http://fantabunker.altervista.org/cale. ... nvia=++Vai++
è relativamente semplice. Cercate la funzione

Codice: Seleziona tutto

function GeneraCalendario
al suo interno c'è un pezzo di codice che somiglia a questo

Codice: Seleziona tutto

			if (iTemp == INC_RIPOSO) {
				sIncTemp = arr[i].Nomi.Casa + " Riposa"
				sRisTemp = ""
			} else if (iTemp == INC_GRANPREMIO) {
				sIncTemp = arr[i].Nomi.Casa 
				sRisTemp = arr[i].Totali.Casa
			} else {
				sIncTemp = arr[i].Nomi.Casa + " - " + arr[i].Nomi.Fuori
				sRisTemp = arr[i].Gol.Casa + " - " + arr[i].Gol.Fuori
			}
dovete aggiungere quanto riportato al punto 1 così:

Codice: Seleziona tutto

			if (iTemp == INC_RIPOSO) {
				sIncTemp = arr[i].Nomi.Casa + " Riposa"
				sRisTemp = ""
			} else if (iTemp == INC_GRANPREMIO) {
				sIncTemp = arr[i].Nomi.Casa 
				sRisTemp = arr[i].Totali.Casa
			} else {
				sIncTemp = arr[i].Nomi.Casa + checkCesarini(arr[i].Totali.Casa, arr[i].Totali.Fuori, arr[i].Gol.Casa, arr[i].Gol.Fuori) + " - " + arr[i].Nomi.Fuori + checkCesarini(arr[i].Totali.Fuori, arr[i].Totali.Casa, arr[i].Gol.Fuori, arr[i].Gol.Casa)
				sRisTemp = arr[i].Gol.Casa + " - " + arr[i].Gol.Fuori
			}
### EDIT ###

In realtà c'è un problema. Quando si usano regole tipo differenza di 4 nella stessa fascia e simili, il risultato di questo script non è corretto. Esempio: 71.5-77.5 è una sconfitta sacrosanta, e invece me la da come pareggio sfuggito. Inoltre ho anche un 77-67.5 che è una vittoria sacrosanta, e invece me la da come vittoria acciuffata :(

Ho disabilitato lo script purtroppo, in attesa di un fix :) (forse lo si potrebbe far lavorare in parallelo con lo script di per il calcolo manuale dei risultati, in modo da utilizzare lo stesso "motore" di calcolo del risultato...)

BOZZA DALLA QUALE PARTIRE

http://lcaruso81.altervista.org/Downloa ... sarini.rar

Re: [SCRIPT...in progress] ZONA CESARINI

Inviato: 19 ott 2016, 13:55
da papia
dai ragazzi...

veramente nessuno che ci perde un'oretta per sistemare un paio di cosine di questa cosa simpatica?

Re: [SCRIPT...in progress] ZONA CESARINI

Inviato: 20 gen 2017, 11:22
da papia
nessun programmatore in fasce con un pò di voglia di portare avanti questa idea simpatica?

Re: [SCRIPT...in progress] ZONA CESARINI

Inviato: 03 gen 2018, 15:50
da papia
papia ha scritto: 20 gen 2017, 11:22 nessun programmatore in fasce con un pò di voglia di portare avanti questa idea simpatica?
up a distanza di un anno....nuove leve? è fatto per 3/4...mancherebbe la possibilità di mettere variabili...

a disposizione come beta tester

Re: [SCRIPT...in progress] ZONA CESARINI

Inviato: 04 gen 2018, 15:15
da arghami
Ci ho voluto perdere un po' di tempo.
Ho riscritto completamente il codice e gli ho aggiunto le regole di trasformazione gol previste da FCM con le relative configurazioni (regola differenza di 4, differenza di 10, minore di 60, differenza di 3, minore di 59). Ciascuna regola ha il suo campo chiamato "attivo" che consente di accenderla/spegnerla. Potete modificare i valori nella parte iniziale dello script.
Infine la variabile "delta" vi consente di impostare lo scostamento massimo da applicare. Credo che 0.5 possa essere un buon valore a prescindere dal numero di quotidiani utilizzati o dalle regole impostate, ma siete liberi di modificarlo.

Veniamo al codice. Questo è il codice da inserire al "punto 2" (l'ho COMPLETAMENTE riscritto quindi eventualmente cancellate il precedente contributo)

Codice: Seleziona tutto

/***** CONFIGURAZIONE *****/
  	
  	//soglie gol (da inserire in ordine)
	var soglieGol = [66, 72, 77, 81, 85, 89, 93, 97, 101, 105, 109, 113, 117];
	
  	//scostamento massimo di punteggio da considerare
	var delta = 0.5;
	
	var regolaDiff4 = {
		"attivo": false,
		"valore": 4
	}
	
	var regolaDiff10 = {
		"attivo": false,
		"valore": 10
	}
	
	var regolaMin60 = {
		"attivo": false,
		"valore": 60,
		"delta": 6
	}
	
	var regolaDiff3 = {
		"attivo": false,
		"valore": 3
	}
	
	var regolaMin59 = {
		"attivo": false,
		"valore": 59,
		"almeno": 59,
		"delta": 3
	}
	
/***** FINE CONFIGURAZIONE *****/
  

	function toGol (punteggio){
		var i=0;
		for (; i<soglieGol.length; i++){
			if (punteggio < soglieGol[i]) {
				return i;
			}
		}
		return i;
	}
  
	function esito (punteggio1, punteggio2){
	
		var gol1 = toGol (punteggio1);
		var gol2 = toGol (punteggio2);
		
		//regola diff 4 (o valore esatto)
        if (regolaDiff4.attivo && gol1 == gol2 && gol1 >= 1){
            if (punteggio1 >= punteggio2 + regolaDiff4.valore){
                gol1++;
            }
            if (punteggio2 >= punteggio1 + regolaDiff4.valore){
                gol2++;
            }
        }

        //regola diff 10 (o valore esatto)
        if (regolaDiff10.attivo){
            if (punteggio1 >= punteggio2 + regolaDiff10.valore){
                gol1++;
            }
            if (punteggio2 >= punteggio1 + regolaDiff10.valore){
                gol2++;
            }
        }

        //regola min 60
        if (regolaMin60.attivo){
            if (punteggio2 < regolaMin60.valore && punteggio1 >= punteggio2 + regolaMin60.delta){
                gol1++;
            }
            if (punteggio1 < regolaMin60.valore && punteggio2 >= punteggio1 + regolaMin60.delta){
                gol2++;
            }
        }

        //regola diff 3
        if (regolaDiff3.attivo){
            if (gol1 > gol2 && punteggio1 < punteggio2 + regolaDiff3.valore){
                gol2++;
                if (gol1 == 1){
                    gol1--;
                    gol2--;
                }
            }
            if (gol2 > gol1 && punteggio2 < punteggio1 + regolaDiff3.valore){
                gol1++;
                if (gol1 == 1){
                    gol1--;
                    gol2--;
                }
            }
        }

        //regola min 59
        if (regolaMin59.attivo){
            if (punteggio1 < regolaMin59.valore && punteggio2 >= regolaMin59.almeno && punteggio2 >= punteggio1 + regolaMin59.delta){
                gol2++;
            }
            if (punteggio2 < regolaMin59.valore && punteggio1 >= regolaMin59.almeno && punteggio1 >= punteggio2 + regolaMin59.delta){
                gol1++;
            }
        }
		
		if (gol1>gol2){
			return 3;
		}
		if (gol1<gol2){
			return 0;
		}
		return 1;
	}
  
	function checkCesarini(punteggio1, punteggio2){
		var zonaCesarini = 0
	    var risOriginale = esito (punteggio1, punteggio2);
	    var risMeno = esito (punteggio1-delta, punteggio2);
	    var risPiu = esito (punteggio1+delta, punteggio2);
	    var zonaCesariniPiu = risOriginale - risPiu;
	    var zonaCesariniMeno = risOriginale - risMeno;
	    
	    if ( descrizioneEsito(zonaCesariniPiu)!=null ){
			return descrizioneEsito(zonaCesariniPiu);
		}
	    if ( descrizioneEsito(zonaCesariniMeno)!=null ){
			return descrizioneEsito(zonaCesariniMeno);
		}
		return "";
	}

	function descrizioneEsito (valoreCesarini){
	    switch (valoreCesarini){
			case -2: return "<font color=red><b>Vittoria<b> sfuggita</font>";
			case -1: return "<font color=red><b>Pareggio</b> sfuggito</font>";
			case 1: return "<font color=green><b>Pareggio</b> acciuffato</font>";
			case 2: return "<font color=green><b>Vittoria</b> acciuffata</font>";
		}
		return null;
	}
Il punto 1 invece va modificato in questo modo (rispetto alla versione precedente, alla funzione checkCesarini vanno passati solo i totali, non servono i gol):

Codice: Seleziona tutto

checkCesarini(arr[i].Totali.Casa, arr[i].Totali.Fuori)

Codice: Seleziona tutto

checkCesarini(arr[i].Totali.Fuori, arr[i].Totali.Casa)

Re: [SCRIPT...in progress] ZONA CESARINI

Inviato: 04 gen 2018, 15:25
da papia
TESTO E TI FACCIO SAPERE! GRAZIE!!!!

Domande:
per scostamento delta che intendi?
Chi invece non applica le differenze di fasce mette 0?
False non lo considera, per attivarlo mettiamo true?
Chi usa il doppio giornale differenze?

Grazie!

Re: [SCRIPT...in progress] ZONA CESARINI

Inviato: 04 gen 2018, 15:38
da arghami
papia ha scritto: 04 gen 2018, 15:25 TESTO E TI FACCIO SAPERE! GRAZIE!!!!

Domande:
per scostamento delta che intendi? Di quanto spostarsi dal punteggio reale per effettuare l'analisi. Per intenderci, qualsiasi valore compreso tra (66-delta) e 66 è considerato mancato pareggio.
Chi invece non applica le differenze di fasce mette 0? in che senso?
False non lo considera, per attivarlo mettiamo true? Esatto
Chi usa il doppio giornale differenze? Se lo ritieni opportuno, imposti 0,25 come scostamento. Ma ritengo che 0,5 sia più adatto.

Grazie!

Re: [SCRIPT...in progress] ZONA CESARINI

Inviato: 04 gen 2018, 16:22
da papia
arghami ha scritto: 04 gen 2018, 15:38
papia ha scritto: 04 gen 2018, 15:25 TESTO E TI FACCIO SAPERE! GRAZIE!!!!

Domande:
per scostamento delta che intendi? Di quanto spostarsi dal punteggio reale per effettuare l'analisi. Per intenderci, qualsiasi valore compreso tra (66-delta) e 66 è considerato mancato pareggio.
Chi invece non applica le differenze di fasce mette 0? in che senso?
False non lo considera, per attivarlo mettiamo true? Esatto
Chi usa il doppio giornale differenze? Se lo ritieni opportuno, imposti 0,25 come scostamento. Ma ritengo che 0,5 sia più adatto.

Grazie!
Ecco perchè non mi trovavo. Il concetto di delta non mi convinceva. Mi spiego

1) SE applicassi la differenza di 3, 65,5 a 68,25 è 0-0 perchè non c'è differenza. Quella è una mancata vittoria per la squadra esterna. (o pareggio acciuffato per la squadra di casa)
2) Ci sono leghe che non applicano la differenza tra una fascia e l'altra, nel senso che 66 a 65,75 è 1-0. Come si fa in tal caso? (vittoria a pacca squadra di casa, santi e madonne per quella di fuori)
3) Doppio giornale, vedi punto 2.
4) testi da usare editabili (vedi santi e madonne) :D

Una volta chiarito mi metto all'opera per procedere!

Re: [SCRIPT...in progress] ZONA CESARINI

Inviato: 04 gen 2018, 20:53
da arghami
Ok riparto da zero.

Nella parte iniziale dello script ci sono 5 sezioni dedicate alle 5 regole sui gol definite in fcm:

regola differenza di 4 --> assegna un gol in più se due squadre si trovano nella stessa fascia ma distano almeno di 4 punti
regola differenza di 10 --> assegna un gol in più se ci sono almeno 10 punti di differenza
regola minore di 60 --> assegna un gol in più se l'avversario fa meno di 60 punti
regola differenza di 3 --> [prevista da regolamento ufficiale]
regola minore di 59 --> [prevista da regolamento ufficiale]

Ciascuna di queste regole ha i suoi parametri di configurazione, speculari a quelli previsti nella schermata di FCM (ti consiglio di aprirla così capisci a cosa corrispondono i vari parametri). Ciascuna di queste regole può essere attivata o meno utilizzando il relativo "interruttore" che si chiama "attivo".

Separatamente da questo, c'è poi la riga

//scostamento massimo di punteggio da considerare
var delta = 0.5;

che serve per generalizzare il concetto di "mezzo punto". La zona cesarini è stata definita come quella per cui "ah cavolo con mezzo punto in più o in meno sarebbe cambiato il risultato". Io qui sto dicendo "ah cavolo con DELTA punti in più o in meno sarebbe cambiato il risultato".

Spero sia chiaro ora.

Re: [SCRIPT...in progress] ZONA CESARINI

Inviato: 04 gen 2018, 20:55
da arghami
papia ha scritto: 04 gen 2018, 16:22 4) testi da usare editabili (vedi santi e madonne) :D
Li trovi abbastanza facilmente nello script, li ho messi in un solo punto apposta per questo.

Sul doppio (o triplo) quotidiano ribadisco un concetto. Superkaze controllava che il totale fosse ESATTAMENTE mezzo punto inferiore alla soglia, vincolo che ho rimosso. Una soglia è mancata per un qualsiasi valore pari o anche inferiore a 0,5 (o al delta che hai deciso di impostare).