Arbre généré automatiquement pour un tournoi--------------------------------------------
Url : http://codes-sources.commentcamarche.net/source/39974-arbre-genere-automatiquement-pour-un-tournoiAuteur : knasucreDate : 05/08/2013
Licence :
=========
Ce document intitulé « Arbre généré automatiquement pour un tournoi » issu de CommentCaMarche
(codes-sources.commentcamarche.net) est mis à disposition sous les termes de
la licence Creative Commons. Vous pouvez copier, modifier des copies de cette
source, dans les conditions fixées par la licence, tant que cette note
apparaît clairement.
Description :
=============
Bonjour a tous ,
Voici mon premier code sur phpcs ,ce code est un
e partie du site que je suis en train de réalisé , il permet de g&
eacute;néré un arbre dynamiquement en fonction du nombre de partic
ipant voulu , c'est la version 1 , je compte implémenté une gestio
n des poules , et accelerer egalement la rapiditer car pour un grand nombre de j
oueur , le code est assez long à s'éxecuter.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN " "http ://www.w3.org/TR/html4/loose.dtd"> <html> <head> < title>Arbre test</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" class="Style1"> </head> <body> <? /***************************************** ******/ /* Si nb_equipe declarer */ /******************* ****************************/ if(isset($_GET['nb_equipe'])) { /********** *************************************/ /* Les vars globales */ /***********************************************/ $nb_equipe = $_G ET['nb_equipe']; $nb_col = 1; $nb_col_p = 1; $deb_col = 0; $esp_col = 0; $is_case = 1; /***********************************************/ /* Les vars de style */ /**************************************** *******/ $height = 15; $width = 80; /************************************** *********/ /* Calculs globaux */ /**************** *******************************/ $max_col = 0; for($i = 0 ; pow(2 , $i) <= $nb_equipe ; $i++) $max_col += 2; $max_col--; $nb_ligne = (($nb_equipe-1) *4 ) + 2; /* On Commence la table (pour les colonnes) */ echo "<table c ellpadding='0' cellspacing='0'><tr>"; /* On fait une boucle jus qu'au nombre maximum de colonne */ for($nb_col ; $nb_col <= $max_col ; $nb_c ol++) { /* On reinitilise quelques variable et on affiche une nouvelle colo nne */ echo "<td valign='top' width='".$width."'>"; $is_case = 1; /* Si la colonne n'est pas une colonne lien */ if($nb_col % 2 == 1) { /* Certain calcul */ $deb_col = pow(2 , $nb_col_p) - 1; $esp_ col = $deb_col * 2; /* Une boucle du nombre de ligne dans une colonne */ for($i = 1;$i < $nb_ligne ; $i++) { /* Si on a pas atteint le premier affichage */ if($i < $deb_col) { echo "<table cellpadding= '0' cellspacing='0' border='0' height='".$height."'><tr><t d></td></tr></table>"; } /* si c'est une cas e ( de hauteur 2 * $height ) et que c'est bien la premiere ligne de la case (gra ce au modulo) */ else if($is_case == 1 && $i % 2 == 1) { /* Le texte d'affichage de la case */ echo "<table cellpadding='0' cellsp acing='0' border='1' height='".(2*$height)."' bgcolor='#8080FF' width= '".$width."' align='center'><tr><td width='".$width.& quot;' align='center'><font size='1'>".$i."</font></ td></tr></table>"; $i += 2; $is_case = 0; } /* Sinon :) else { echo "<table cellpadding='0' cellspacing='0' border='0' height='".$height."'><tr><td></td>< /tr></table>"; }*/ /*rapiditer on saute directement les espa ces vides et on declare qu'il va y avoir de nouveau une case */ if($is_case = = 0 && $i % 2 == 1) { echo "<table cellpadding='0' cellsp acing='0' border='0' height='".($esp_col)*$height."'><tr>< td></td></tr></table>"; $i += $esp_col -1; $is _case = 1; } } } /****************************************** *******/ /* Si c'est une colonne lien */ /* Le plus chiant */ /******************************************* ******/ else if($nb_col % 2 == 0) { /* On change quelques variables */ $n b_col_pair = $nb_col; $deb_col = pow(2 , $nb_col_p); $nb_col_p++; $esp_ col = $deb_col * 2; /* Meme boucle que tout l'heure boucle dunombre de lig ne */ for($i = 1 ; $i < $nb_ligne ; $i++) { /* Pareil : si aucun affi chage encore */ if($i < $deb_col) { echo "<table cellpaddi ng='0' cellspacing='0' border='0' height='".$height."'><tr>&l t;td></td></tr></table>"; } /* Si on doit af ficher les liens */ else if($is_case == 1 && $i % 2 == 0) { ec ho "<table cellpadding='0' cellspacing='0' border='0' height='".$es p_col*$height."'>"; /* Je fonctionne comme ça , on fait un e boucle du nombre de ligne consécutive pour un lien */ for ($i2 = 1 ; $i2 & lt;= $esp_col ; $i2++) { /* Si premiere ligne */ if($i2 == 1) { echo "<tr><td width='".($width)."' height='&qu ot;.$height."' valign='top'> <table cellpadding='0' cellspa cing='0' border='0'><tr><td height='".$height."' valign='t op' width='".($width/2 - 2)."'> <table cellpaddi ng='0' cellspacing='0' border='0'><tr height='4'><td bgcolor='#00000 0' width='".($width/2 - 2)."'></td></tr> <tr height='".($height-4)."'><td bgcolor='#FFFFFF'></ td></tr></table></td> <td width='4' height='&q uot;.$height."' bgcolor='#000000'></td> <td height='& quot;.$height."' bgcolor='#FFFFFF' width='".($width/2 - 2)."'> </td></tr></table></td></tr>"; } /* Si ligne du milieu */ else if($i2 == ($esp_col)/2 ) { echo &quo t;<tr><td width='".($width)."' height='".$height."' > <table cellpadding='0' cellspacing='0' border='0'><tr> ;<td height='".$height."' bgcolor='#FFFFFF' width='".($width/2 - 2)."'></td> <td bgcolor='#000000' width='4' height ='".$height."'></td> <td height='".$height. "' width='".($width/2 - 2)."'> <table cellp adding='0' cellspacing='0' border='0'> <tr height='". (($height/2) +2 )."'><td bgcolor='#FFFFFF'></td></tr> <tr height='4'><td bgcolor='#000000' width='".($wi dth/2 - 2)."'></td></tr> <tr height='&quo t;.(($height/2)-6)."'><td bgcolor='#FFFFFF'></td></tr> </table></td></tr></table></td>&l t;/tr>"; } /* Si derniere ligne */ else if($i2 == ($esp_c ol)) { echo "<tr><td width='".($width)."' hei ght='".$height."' valign='bottom'> <table cellpadding= '0' cellspacing='0' border='0'><tr><td height='".$height." ' valign='bottom' width='".($width/2 - 2)."'> <t able cellpadding='0' cellspacing='0' border='0'><tr height='".($heigh t-4)."'><td bgcolor='#FFFFFF'></td></tr> <tr height='4'><td bgcolor='#000000' width='".($width/2 - 2).&q uot;'></td></tr></table></td> <td width= '4' bgcolor='#000000' height='".$height."'></td> &l t;td height='".$height."' bgcolor='#FFFFFF' width='".($width/2 - 2)."'></td></tr></table></td></tr>"; $is_case = 0; } /* Si ligne verticale */ else { echo "<tr><td width='".($width)."' height='".$heigh t."' valign='top'> <table cellpadding='0' cellspacing='0' b order='0'><tr><td bgcolor='#FFFFFF' width='".($width/2 - 2).&qu ot;' height='".$height."'></td> <td width='4' bg color='#000000' height='".$height."'></td> <td b gcolor='#FFFFFF' height='".$height."' width='".($width/2 - 2).&qu ot;'></td></tr></table></td></tr>"; } } /* on incrémente le nobre de ligne du nombre de ligne consécutive pour un lien */ $i += $esp_col; } /* Sinon else { echo "<table cellpadding='0' cellspacing='0' border='0' height='".$ height."'><tr><td></td></tr></table>" ; }*/ /*Si on doit afficher des espaces , on les affiche avant d'éecut er une nouvelle fois la boucle , pour a rapiditer */ if($is_case == 0 &&a mp; $i % 2 == 0) { echo "<table cellpadding='0' cellspacing='0' b order='0' height='".$esp_col*$height."'><tr><td></td ></tr></table>"; $i += $esp_col - 1; $is_case = 1; } } } /* On ferme la colonne */ echo "</td>"; /*Fin de la premiere boucle */ } /*On ferme la table */ echo "</tr>&l t;/table>"; } /*******************************************/ /*Si on a pas renseigner le nombre d'équipe*/ /************************************* ******/ else { ?> <form action="#" method="get" ; name="nb_equipe"> Nombre d'équipe ? <input type="text&q uot; name="nb_equipe" value="4"> <input type="s ubmit" name="OK"> </form> <? } ?> </body > </html>