Sviluppo script torneo

« Older   Newer »
 
  Share  
.
  1.  
    .
    Avatar

    "Da un semplice Uomo sono diventato un Possente Dio"


    Group
    Founder
    Posts
    2,264

    Status
    Offline
    Qui potete seguire lo sviluppo dello script del torneo che sto facendo, per vedere a che punto sono (visto che molti non ne capiranno niente vi spiego a cosa servono le modifiche che faccio).
    Se c'è qualcuno che ne capisce qualcosa può dare benissimo dei consigli, stessa cosa per chi non capisce alcune cose e vuole chiarimenti.
    Evitate commenti inutili, grazie

    Ecco proprio l'inizio dove prendo la data, il giorno, il mese e l'anno (alcuni tra questi dati raccolti non li uso subito ma serviranno successivamente) e decido quante partite andranno giocate in base al numero di giorni che ha il mese corrente.
    CODICE
    <?php
    $data = date('d/m/Y');
    $giorno = date('d');
    $mese = date('m');
    $anno = date('Y');
    $numero_di_giorni_in_questo_mese = cal_days_in_month(CAL_GREGORIAN, $mese, $anno);
    if ($numero_di_giorni_in_questo_mese == 31) {
       $numero_partite = 10;
    }
    if ($numero_di_giorni_in_questo_mese == 30) {
       $numero_partite = 10;
    }
    if ($numero_di_giorni_in_questo_mese == 29) {
       $numero_partite = 9;
    }
    if ($numero_di_giorni_in_questo_mese == 28) {
       $numero_partite = 9;
    }
    ?>
     
    .
  2. HappySalesmanMask
     
    .

    User deleted


    solo una domanda: ma tu dove le hai imparate ste cose? :asd:
     
    .
  3.  
    .
    Avatar

    "Da un semplice Uomo sono diventato un Possente Dio"


    Group
    Founder
    Posts
    2,264

    Status
    Offline
    le ho imparate su php.net e con uno che conosco che mi ha aiutato all'inizio.

    nuovo aggiornamento, ho eliminato la parte che controllava quanti giorni c'erano nel mese per decidere il numero di partite da disputare e ho messo un numero fisso di 7 e aumentati a 4 i giorni che avete a disposizione per ogni partita.
    Poi ho creato la variabile che dice qual è l'ultimo giorno che hai a disposizione per dire chi ha vinto la partita e quella che dice qual'è l'ultimo giorno del torneo

    CODICE
    <?php
    $data = date('d/m/Y');
    $giorno = date('d');
    $mese = date('m');
    $anno = date('Y');
    $numero_partite = 7;
    $giorni_per_partita = 4;
    $giorno_attivabile_inattivita = 4;
    $ultimo_giorno_del_torneo = '28'.$mese.$anno;
    if ($giorno <= 4 ) {
       $ultimo_giorno_per_segnalare_chi_ha_vinto = '4'.$mese.$anno;
    }
    if ($giorno > 4 AND $giorno <= 8 ) {
       $ultimo_giorno_per_segnalare_chi_ha_vinto = '8'.$mese.$anno;
    }
    if ($giorno > 8 AND $giorno <= 12 ) {
       $ultimo_giorno_per_segnalare_chi_ha_vinto = '12'.$mese.$anno;
    }
    if ($giorno > 12 AND $giorno <= 16 ) {
       $ultimo_giorno_per_segnalare_chi_ha_vinto = '16'.$mese.$anno;
    }
    if ($giorno > 16 AND $giorno <= 20 ) {
       $ultimo_giorno_per_segnalare_chi_ha_vinto = '20'.$mese.$anno;
    }
    if ($giorno > 20 AND $giorno <= 24 ) {
       $ultimo_giorno_per_segnalare_chi_ha_vinto = '24'.$mese.$anno;
    }
    if ($giorno > 24 AND $giorno <= 28 ) {
       $ultimo_giorno_per_segnalare_chi_ha_vinto = '28'.$mese.$anno;
    }
    ?>
     
    .
  4.  
    .
    Avatar

    Group
    Supporter
    Posts
    10,643

    Status
    Anonymous
    ottimo progetto master :sisi:
    mi hai anche fatto tornare la voglia di mettermi a studiare il C++ :asd:
     
    .
  5.  
    .
    Avatar

    "Da un semplice Uomo sono diventato un Possente Dio"


    Group
    Founder
    Posts
    2,264

    Status
    Offline
    ho corretto le dimenticanze e ho finito la parte facile, ora viene la parte molto più lunga dove devo usare il database.. in pratica dove immagazzino tutti i dati delle vostre partite.
    ah quasi dimenticavo, ho aggiunto anche una parte di codice che vi permette di vedere il contenuto delle variabili che ho fatto click (non so per quanto lo lascerò.. pero è utile per vedere se funziona tutto).

    CODICE
    <?php
    $data = date('d/m/Y');
    $giorno = date('d');
    $mese = date('m');
    $anno = date('Y');
    $modalita = '<span title="Chi colleziona più vittorie vince">Svizzera</span>';
    $numero_partite = 7;
    $giorni_per_partita = 4;
    $giorno_attivabile_inattivita = 4;
    $ultimo_giorno_del_torneo = '28'.'/'.$mese.'/'.$anno;
    if ($giorno <= 4 ) {
       $ultimo_giorno_per_segnalare_chi_ha_vinto = '4'.'/'.$mese.'/'.$anno;
    }
    if ($giorno > 4 AND $giorno <= 8 ) {
       $ultimo_giorno_per_segnalare_chi_ha_vinto = '8'.'/'.$mese.'/'.$anno;
    }
    if ($giorno > 8 AND $giorno <= 12 ) {
       $ultimo_giorno_per_segnalare_chi_ha_vinto = '12'.'/'.$mese.'/'.$anno;
    }
    if ($giorno > 12 AND $giorno <= 16 ) {
       $ultimo_giorno_per_segnalare_chi_ha_vinto = '16'.'/'.$mese.'/'.$anno;
    }
    if ($giorno > 16 AND $giorno <= 20 ) {
       $ultimo_giorno_per_segnalare_chi_ha_vinto = '20'.'/'.$mese.'/'.$anno;
    }
    if ($giorno > 20 AND $giorno <= 24 ) {
       $ultimo_giorno_per_segnalare_chi_ha_vinto = '24'.'/'.$mese.'/'.$anno;
    }
    if ($giorno > 24 AND $giorno <= 28 ) {
       $ultimo_giorno_per_segnalare_chi_ha_vinto = '28'.'/'.$mese.'/'.$anno;
    }
    ?>

    (qui ovviamente non è compreso il codice che vi mostra il contenuto delle variabili perchè non fa parte dello script che devo scrivere)
     
    .
  6. ¬Re dei Giochi
     
    .

    User deleted


    Beh, che dire, Thumbs up
     
    .
  7.  
    .
    Avatar

    "Da un semplice Uomo sono diventato un Possente Dio"


    Group
    Founder
    Posts
    2,264

    Status
    Offline
    inserito parte del codice che estrarrà le informazioni sull'utente che sta partecipando al torneo (manca ancora la funzione che fa sapere allo script quale utente ha caricato la pagina perchè sono in attesa dell'uscita del nuovo software del forum).

    CODICE
    <?php
    $db = mysqli_connect('localhost', xxxxx', 'xxxxx', 'my_xxxxx');
    $data = date('d/m/Y');
    $giorno = date('d');
    $mese = date('m');
    $anno = date('Y');
    $modalita = '<span title="Chi colleziona più vittorie vince">Svizzera</span>';
    $numero_partite = 7;
    $giorni_per_partita = 4;
    $giorno_attivabile_inattivita = 4;
    $ultimo_giorno_del_torneo = '28'.'/'.$mese.'/'.$anno;
    if ($giorno <= 4 ) {
       $ultimo_giorno_per_segnalare_chi_ha_vinto = '4'.'/'.$mese.'/'.$anno;
    }
    if ($giorno > 4 AND $giorno <= 8 ) {
       $ultimo_giorno_per_segnalare_chi_ha_vinto = '8'.'/'.$mese.'/'.$anno;
    }
    if ($giorno > 8 AND $giorno <= 12 ) {
       $ultimo_giorno_per_segnalare_chi_ha_vinto = '12'.'/'.$mese.'/'.$anno;
    }
    if ($giorno > 12 AND $giorno <= 16 ) {
       $ultimo_giorno_per_segnalare_chi_ha_vinto = '16'.'/'.$mese.'/'.$anno;
    }
    if ($giorno > 16 AND $giorno <= 20 ) {
       $ultimo_giorno_per_segnalare_chi_ha_vinto = '20'.'/'.$mese.'/'.$anno;
    }
    if ($giorno > 20 AND $giorno <= 24 ) {
       $ultimo_giorno_per_segnalare_chi_ha_vinto = '24'.'/'.$mese.'/'.$anno;
    }
    if ($giorno > 24 AND $giorno <= 28 ) {
       $ultimo_giorno_per_segnalare_chi_ha_vinto = '28'.'/'.$mese.'/'.$anno;
    }
    $results = $db->query("SELECT * FROM torneo_".$anno."_".$mese."WHERE ".$userid);
    while($row = $results->fetch_array()) {
       $partite_vinte = $row['partite_vinte'];
       $partite_perse = $row['partite_perse'];
       $avversario = $row['avversario']; //userid dell'avversario
       $vincitore = $row['vincitore']; //0 se non ha vinto 1 se ha vinto
       $conferma_fine_partita = $row['conferma_fine_partita']; //0 se non è finita 1 se è finita
       $inattivo_io = $row['inattivo_io']; //0 se attivo 1 se inattivo
       $inattivo_lui = $row['inattivo_lui']; //0 se attivo 1 se inattivo
    }
    ?>
     
    .
  8.  
    .
    Avatar

    "Da un semplice Uomo sono diventato un Possente Dio"


    Group
    Founder
    Posts
    2,264

    Status
    Offline
    Ho ridotto le partite del torneo da 7 a 6 (sempre di 4 giorni l'una) perchè altrimenti avevo problemi con febbraio che ha 28 giorni e mi complicavo la vita per soltanto un mese.. e poi almeno avete quasi una settimana di pausa tra un torneo e l'altro.
    ho scritto le condizioni per gestire i vari bottoni (vittoria, sconfitta, segnala per inattivita, segnala che sei attivo, rimuovi segnalazione per inattivita, contesta sconfitta, annulla vittoria).. anche se il codice aggiunto è poco mi è toccato ragionarci un bel po su come salvare i dati sul database (al momento nelle condizioni so gia che ci sono problemi dove uno se sa come farli riesce a creare i bottoni con degli editor di html anche se lo script non li fa vedere ma piu tardi quando lo script sara prossimo alla fine faro degli aggiornamenti alla sicurezza che risolve il problema).

    CODICE
    <?php
    $db = mysqli_connect('localhost', 'xxxxx', 'xxxxx', 'my_xxxxx');
    $data = date('d/m/Y');
    $giorno = date('d');
    $mese = date('m');
    $anno = date('Y');
    $modalita = '<span title="Chi colleziona più vittorie vince">Svizzera</span>';
    $numero_partite = 6;
    $giorni_per_partita = 4;
    $giorno_attivabile_inattivita = 4;
    $ultimo_giorno_del_torneo = '24'.'/'.$mese.'/'.$anno;
    if ($giorno <= 4 ) {
       $ultimo_giorno_per_segnalare_chi_ha_vinto = '4'.'/'.$mese.'/'.$anno;
    }
    if ($giorno > 4 AND $giorno <= 8 ) {
       $ultimo_giorno_per_segnalare_chi_ha_vinto = '8'.'/'.$mese.'/'.$anno;
    }
    if ($giorno > 8 AND $giorno <= 12 ) {
       $ultimo_giorno_per_segnalare_chi_ha_vinto = '12'.'/'.$mese.'/'.$anno;
    }
    if ($giorno > 12 AND $giorno <= 16 ) {
       $ultimo_giorno_per_segnalare_chi_ha_vinto = '16'.'/'.$mese.'/'.$anno;
    }
    if ($giorno > 16 AND $giorno <= 20 ) {
       $ultimo_giorno_per_segnalare_chi_ha_vinto = '20'.'/'.$mese.'/'.$anno;
    }
    if ($giorno > 20 AND $giorno <= 24 ) {
       $ultimo_giorno_per_segnalare_chi_ha_vinto = '24'.'/'.$mese.'/'.$anno;
    }
    $results = $db->query("SELECT * FROM torneo_".$anno."_".$mese."_partite WHERE ".$userid);
    while($row = $results->fetch_array()) {
       $partite_vinte = $row['partite_vinte']; //di default è 0
       $partite_perse = $row['partite_perse']; //di default è 0
       $avversario = $row['avversario']; //userid dell'avversario
       $vincitore = $row['vincitore']; //0 se ha perso 1 se ha vinto 2 se è ancora da giocare
       $inattivo_io = $row['inattivo_io']; //0 se attivo 1 se inattivo
       $inattivo_lui = $row['inattivo_lui']; //0 se attivo 1 se inattivo
    }
    $partite_giocate = $partite_vinte + $partite_perse;
    if ($giorno < 4 AND $inattivo_lui == 0  AND $inattivo_io == 0 AND $vincitore == 2) {
       //VITTORIA E SCONFITTA VISISIBILI, INATTIVITA VISIBILE NON FUNZIONANTE
    }
    if ($giorno <= 4 AND $inattivo_lui == 0  AND $inattivo_io == 0 AND $vincitore == 1) {
       //MESSAGGIO ANNULLA VITTORIA, INATTIVITA NASCOSTA
    }
    if ($giorno <= 4 AND $inattivo_lui == 0  AND $inattivo_io == 0 AND $vincitore == 0) {
       //MESSAGGIO CONTESTAZIONE SCONFITTA VISIBILE, INATTIVITA NASCOSTA
    }
    if ($giorno == 4 AND $inattivo_lui == 1  AND $inattivo_io == 0 AND $vincitore == 2) {
       //VITTORIA E SCONFITTA NASCOSTI, RITIRA INATTIVITA
    }
    if ($giorno == 4 AND $inattivo_lui == 0  AND $inattivo_io == 1 AND $vincitore == 2) {
       //VITTORIA E SCONFITTA NASCOSTA, CANCELLA SEGNALAZIONE INATTIVITA
    }
    ?>
     
    .
  9.  
    .
    Avatar

    "Da un semplice Uomo sono diventato un Possente Dio"


    Group
    Founder
    Posts
    2,264

    Status
    Offline
    Forse ho trovato il modo di salvare tutti i dati anche quelli del pannello delle iscrizioni del torneo corrente, il rank degli avversari sconfitti da utilizzare in caso di pareggio e i vari abbinamenti di tutte le partite nella tabella mysql che ho usato fino ad ora :D
    Se ho trovato un modo intelligiente per salvare i dati nei prossimi giorni è finito.. Manchera solo il collegamento con ip board
     
    .
  10. ~Darkelont~
     
    .

    User deleted


    master una domanda ma i tornei saranno senza top eh?
     
    .
  11.  
    .
    Avatar

    "Da un semplice Uomo sono diventato un Possente Dio"


    Group
    Founder
    Posts
    2,264

    Status
    Offline
    esatto, i tornei fatti a svizzera non avranno la top perchè non è possibile organizzarla.
    sicuramente potremo fare anche un altra modalita per il torneo ovvero l'eliminazione diretta come facevamo in passato.. pero al momento non sto prendendo nemmeno in considerazione una seconda modalita perchè in fase di sviluppo dello script mi creerebbe il doppio dei problemi e basta.
    in futuro ci sara la modalita svizzera senza top (vince chi colleziona piu vittorie) e quella dell'eliminazione diretta
     
    .
  12. ¬Re dei Giochi
     
    .

    User deleted


    Non riesci (poi con calma in futuro) a impostare una fase 1 e una fase 2 nello script?
     
    .
  13.  
    .
    Avatar

    "Da un semplice Uomo sono diventato un Possente Dio"


    Group
    Founder
    Posts
    2,264

    Status
    Offline
    non ci sarebbe il tempo materiale per fare una finale nel primo tipo di torneo.
    ho fatto un esempio di tabella che usero per salvare i dati di ogni utente che vi spiega un po quali dati vengono salvati click

    ho apportato delle piccole modifiche che andranno molto probabilmente sistemate a causa del nuovo metodo che ho pensato per salvare i dati
    CODICE
    <?php
    $db = mysqli_connect('localhost', 'xxxxx', 'xxxxx', 'my_xxxxx');
    $data = date('d/m/Y');
    $giorno = date('d');
    $mese = date('m');
    $anno = date('Y');
    $modalita = '<span title="Chi colleziona più vittorie vince">Svizzera</span>';
    $numero_partite = 6;
    $giorni_per_partita = 4;
    $giorno_attivabile_inattivita = 4;
    $ultimo_giorno_del_torneo = '24'.'/'.$mese.'/'.$anno;
    if ($giorno <= 4 ) {
       $ultimo_giorno_per_segnalare_chi_ha_vinto = '4'.'/'.$mese.'/'.$anno;
       $partite_giocate = 0;
       $numero_avversario = 1;
    }
    if ($giorno > 4 AND $giorno <= 8 ) {
       $ultimo_giorno_per_segnalare_chi_ha_vinto = '8'.'/'.$mese.'/'.$anno;
       $partite_giocate = 1;
       $numero_avversario = 2;
    }
    if ($giorno > 8 AND $giorno <= 12 ) {
       $ultimo_giorno_per_segnalare_chi_ha_vinto = '12'.'/'.$mese.'/'.$anno;
       $partite_giocate = 2;
       $numero_avversario = 3;
    }
    if ($giorno > 12 AND $giorno <= 16 ) {
       $ultimo_giorno_per_segnalare_chi_ha_vinto = '16'.'/'.$mese.'/'.$anno;
       $partite_giocate = 3;
       $numero_avversario = 4;
    }
    if ($giorno > 16 AND $giorno <= 20 ) {
       $ultimo_giorno_per_segnalare_chi_ha_vinto = '20'.'/'.$mese.'/'.$anno;
       $partite_giocate = 4;
       $numero_avversario = 5;
    }
    if ($giorno > 20 AND $giorno <= 24 ) {
       $ultimo_giorno_per_segnalare_chi_ha_vinto = '24'.'/'.$mese.'/'.$anno;
       $partite_giocate = 5;
       $numero_avversario = 6;
    }
    $results = $db->query("SELECT * FROM torneo_".$anno."_".$mese."_partite WHERE ".$userid);
    while($row = $results->fetch_array()) {
       $partite_vinte = $row['partite_vinte']; //di default è 0
       $vincitore = $row['vincitore']; //0 se ha perso 1 se ha vinto 2 se è ancora da giocare
       $inattivo_io = $row['inattivo_io']; //0 se attivo 1 se inattivo
       $inattivo_lui = $row['inattivo_lui']; //0 se attivo 1 se inattivo
       $rank = $row['rank']; //di default è 0
       $avversario = $row['avversario'.$numero_avversario]; //cambia avversario in base alla data
    }
    $partite_perse = $partite_giocate - $partite_vinte;
    if ($giorno < 4 AND $inattivo_lui == 0  AND $inattivo_io == 0 AND $vincitore == 2) {
       //VITTORIA E SCONFITTA VISISIBILI, INATTIVITA VISIBILE NON FUNZIONANTE
    }
    if ($giorno <= 4 AND $inattivo_lui == 0  AND $inattivo_io == 0 AND $vincitore == 1) {
       //MESSAGGIO ANNULLA VITTORIA, INATTIVITA NASCOSTA
    }
    if ($giorno <= 4 AND $inattivo_lui == 0  AND $inattivo_io == 0 AND $vincitore == 0) {
       //MESSAGGIO CONTESTAZIONE SCONFITTA VISIBILE, INATTIVITA NASCOSTA
    }
    if ($giorno == 4 AND $inattivo_lui == 1  AND $inattivo_io == 0 AND $vincitore == 2) {
       //VITTORIA E SCONFITTA NASCOSTI, RITIRA INATTIVITA
    }
    if ($giorno == 4 AND $inattivo_lui == 0  AND $inattivo_io == 1 AND $vincitore == 2) {
       //VITTORIA E SCONFITTA NASCOSTA, CANCELLA SEGNALAZIONE INATTIVITA
    }
    ?>
     
    .
  14. ~Darkelont~
     
    .

    User deleted


    master se non ci può essere una finale si fa il feature match? dato che non giochi, intendo che ad ogni turno ci stanno i player del "tavolo1" ( i 1° che vengono postati sul foro) che sono quelli che stanno andando meglio nel torneo (o a parità di punti/nel 1° turno, quelli che hanno più/meno fortuna, dipende da come loro vedono la cosa del feature ahah)
     
    .
  15.  
    .
    Avatar

    "Da un semplice Uomo sono diventato un Possente Dio"


    Group
    Founder
    Posts
    2,264

    Status
    Offline
    Se intendi che si possa avere una classifica aggiornata anche mentre si gioca.. Certamente, ci avevo pensato anche io
     
    .
57 replies since 11/1/2014, 17:42   719 views
  Share  
.
Top