begin process at 2010 02 10 08:30:59
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Astuces

 > ARBRE GÉNÉRÉ AUTOMATIQUEMENT POUR UN TOURNOI

ARBRE GÉNÉRÉ AUTOMATIQUEMENT POUR UN TOURNOI


 Information sur la source

Note :
4,5 / 10 - par 2 personnes
4,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Astuces Classé sous :tournoi, arbre Niveau :Initié Date de création :19/10/2006 Vu / téléchargé :7 622 / 575

Auteur : knasucre

Ecrire un message privé
Commentaire sur cette source (4)
Ajouter un commentaire et/ou une note

 Description

Bonjour a tous ,

Voici mon premier code sur phpcs ,ce code est une partie du site que je suis en train de réalisé , il permet de généré un arbre dynamiquement en fonction du nombre de participant voulu , c'est la version 1 , je compte implémenté une gestion des poules , et accelerer egalement la rapiditer car pour un grand nombre de joueur , le code est assez long à s'éxecuter.

Source

  • <!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 = $_GET['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 cellpadding='0' cellspacing='0'><tr>";
  • /* On fait une boucle jusqu'au nombre maximum de colonne */
  • for($nb_col ; $nb_col <= $max_col ; $nb_col++)
  • {
  • /* On reinitilise quelques variable et on affiche une nouvelle colonne */
  • 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><td></td></tr></table>";
  • }
  • /* si c'est une case ( de hauteur 2 * $height ) et que c'est bien la premiere ligne de la case (grace au modulo) */
  • else if($is_case == 1 && $i % 2 == 1)
  • {
  • /* Le texte d'affichage de la case */
  • echo "<table cellpadding='0' cellspacing='0' border='1' height='".(2*$height)."' bgcolor='#8080FF' width='".$width."' align='center'><tr><td width='".$width."' 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 espaces vides et on declare qu'il va y avoir de nouveau une case */
  • if($is_case == 0 && $i % 2 == 1)
  • {
  • echo "<table cellpadding='0' cellspacing='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 */
  • $nb_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 ligne */
  • for($i = 1 ; $i < $nb_ligne ; $i++)
  • {
  • /* Pareil : si aucun affichage encore */
  • if($i < $deb_col)
  • {
  • echo "<table cellpadding='0' cellspacing='0' border='0' height='".$height."'><tr><td></td></tr></table>";
  • }
  • /* Si on doit afficher les liens */
  • else if($is_case == 1 && $i % 2 == 0)
  • {
  • echo "<table cellpadding='0' cellspacing='0' border='0' height='".$esp_col*$height."'>";
  • /* Je fonctionne comme ça , on fait une boucle du nombre de ligne consécutive pour un lien */
  • for ($i2 = 1 ; $i2 <= $esp_col ; $i2++)
  • {
  • /* Si premiere ligne */
  • if($i2 == 1)
  • {
  • echo "<tr><td width='".($width)."' height='".$height."' valign='top'>
  • <table cellpadding='0' cellspacing='0' border='0'><tr><td height='".$height."' valign='top' width='".($width/2 - 2)."'>
  • <table cellpadding='0' cellspacing='0' border='0'><tr height='4'><td bgcolor='#000000' width='".($width/2 - 2)."'></td></tr>
  • <tr height='".($height-4)."'><td bgcolor='#FFFFFF'></td></tr></table></td>
  • <td width='4' height='".$height."' bgcolor='#000000'></td>
  • <td height='".$height."' bgcolor='#FFFFFF' width='".($width/2 - 2)."'></td></tr></table></td></tr>";
  • }
  • /* Si ligne du milieu */
  • else if($i2 == ($esp_col)/2 )
  • {
  • echo "<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 cellpadding='0' cellspacing='0' border='0'>
  • <tr height='".(($height/2) +2 )."'><td bgcolor='#FFFFFF'></td></tr>
  • <tr height='4'><td bgcolor='#000000' width='".($width/2 - 2)."'></td></tr>
  • <tr height='".(($height/2)-6)."'><td bgcolor='#FFFFFF'></td></tr>
  • </table></td></tr></table></td></tr>";
  • }
  • /* Si derniere ligne */
  • else if($i2 == ($esp_col))
  • {
  • echo "<tr><td width='".($width)."' height='".$height."' valign='bottom'>
  • <table cellpadding='0' cellspacing='0' border='0'><tr><td height='".$height."' valign='bottom' width='".($width/2 - 2)."'>
  • <table cellpadding='0' cellspacing='0' border='0'><tr height='".($height-4)."'><td bgcolor='#FFFFFF'></td></tr>
  • <tr height='4'><td bgcolor='#000000' width='".($width/2 - 2)."'></td></tr></table></td>
  • <td width='4' bgcolor='#000000' height='".$height."'></td>
  • <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='".$height."' valign='top'>
  • <table cellpadding='0' cellspacing='0' border='0'><tr><td bgcolor='#FFFFFF' width='".($width/2 - 2)."' height='".$height."'></td>
  • <td width='4' bgcolor='#000000' height='".$height."'></td>
  • <td bgcolor='#FFFFFF' height='".$height."' width='".($width/2 - 2)."'></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'éecuter une nouvelle fois la boucle , pour a rapiditer */
  • if($is_case == 0 && $i % 2 == 0)
  • {
  • echo "<table cellpadding='0' cellspacing='0' border='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></table>";
  • }
  • /*******************************************/
  • /*Si on a pas renseigner le nombre d'équipe*/
  • /*******************************************/
  • else
  • {
  • ?>
  • <form action="#" method="get" name="nb_equipe">
  • Nombre d'équipe ? <input type="text" name="nb_equipe" value="4">
  • <input type="submit" name="OK">
  • </form>
  • <?
  • }
  • ?>
  • </body>
  • </html>
<!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 = $_GET['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 cellpadding='0' cellspacing='0'><tr>";

/* On fait une boucle jusqu'au nombre maximum de colonne */
for($nb_col ; $nb_col <= $max_col ; $nb_col++)
{



	/* On reinitilise quelques variable et on affiche une nouvelle colonne */
	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><td></td></tr></table>";
		}
		
		/* si c'est une case ( de hauteur 2 * $height ) et que c'est bien la premiere ligne de la case (grace au modulo) */
		else if($is_case == 1 && $i % 2 == 1)
		{
			/* Le texte d'affichage de la case */
			echo "<table cellpadding='0' cellspacing='0' border='1' height='".(2*$height)."' bgcolor='#8080FF' width='".$width."' align='center'><tr><td width='".$width."' 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 espaces vides et on declare qu'il va y avoir de nouveau une case */
		if($is_case == 0 && $i % 2 == 1)
		{
			echo "<table cellpadding='0' cellspacing='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 */
	$nb_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 ligne */
	for($i = 1 ; $i < $nb_ligne ; $i++)
	{
	  /* Pareil : si aucun affichage encore */
		if($i < $deb_col)
		{	
			echo "<table cellpadding='0' cellspacing='0' border='0' height='".$height."'><tr><td></td></tr></table>";
		}
		
		/* Si on doit afficher les liens */
		else if($is_case == 1 && $i % 2 == 0)
		{
			echo "<table cellpadding='0' cellspacing='0' border='0' height='".$esp_col*$height."'>";
			
			/* Je fonctionne comme ça , on fait une boucle du nombre de ligne consécutive pour un lien */
			for ($i2 = 1 ; $i2 <= $esp_col ; $i2++)
			{
			  /* Si premiere ligne */
				if($i2 == 1)
				{
					echo "<tr><td width='".($width)."' height='".$height."' valign='top'>
									<table cellpadding='0' cellspacing='0' border='0'><tr><td height='".$height."' valign='top' width='".($width/2 - 2)."'>
															<table cellpadding='0' cellspacing='0' border='0'><tr height='4'><td bgcolor='#000000' width='".($width/2 - 2)."'></td></tr>
															<tr height='".($height-4)."'><td bgcolor='#FFFFFF'></td></tr></table></td>
									<td width='4' height='".$height."' bgcolor='#000000'></td>
									<td height='".$height."' bgcolor='#FFFFFF' width='".($width/2 - 2)."'></td></tr></table></td></tr>";
				}
				/* Si ligne du milieu */
				else if($i2 == ($esp_col)/2 )
				{
					echo "<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 cellpadding='0' cellspacing='0' border='0'>
															<tr height='".(($height/2) +2 )."'><td bgcolor='#FFFFFF'></td></tr>
															<tr height='4'><td bgcolor='#000000' width='".($width/2 - 2)."'></td></tr>
															<tr height='".(($height/2)-6)."'><td bgcolor='#FFFFFF'></td></tr>
															</table></td></tr></table></td></tr>";
				}
				/* Si derniere ligne */
				else if($i2 == ($esp_col))
				{
					echo "<tr><td width='".($width)."' height='".$height."' valign='bottom'>
									<table cellpadding='0' cellspacing='0' border='0'><tr><td height='".$height."' valign='bottom' width='".($width/2 - 2)."'>
															<table cellpadding='0' cellspacing='0' border='0'><tr height='".($height-4)."'><td bgcolor='#FFFFFF'></td></tr>
															<tr height='4'><td bgcolor='#000000' width='".($width/2 - 2)."'></td></tr></table></td>
									<td width='4' bgcolor='#000000' height='".$height."'></td>
									<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='".$height."' valign='top'>
									<table cellpadding='0' cellspacing='0' border='0'><tr><td bgcolor='#FFFFFF' width='".($width/2 - 2)."' height='".$height."'></td>
									<td width='4' bgcolor='#000000' height='".$height."'></td>
									<td bgcolor='#FFFFFF' height='".$height."' width='".($width/2 - 2)."'></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'éecuter une nouvelle fois la boucle , pour a rapiditer */
		if($is_case == 0 && $i % 2 == 0)
		{
			echo "<table cellpadding='0' cellspacing='0' border='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></table>";


}

/*******************************************/
/*Si on a pas renseigner le nombre d'équipe*/
/*******************************************/

else
{
	?>
	<form action="#" method="get" name="nb_equipe">
	Nombre d'équipe ? <input type="text" name="nb_equipe" value="4">
	<input type="submit" name="OK">
	</form>
	<?
}
?>
</body>
</html>

 Conclusion

Bugs connu :
   - Plein de ligne inutile ce rajoute en bas de la page , si quelqu'un trouve plus rapidement que moi la solution , qu'il le dise.

Si vous avez des amélioration supplémentaire a me suggéré , je suis toujours a votre écoute.

La capture d'écran arrive :)

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources de la même categorie

Source avec une capture PAGINATION EN PHP par Orangina
Source avec Zip POO - DEBUGGER par DiGhan
Source avec Zip CRAWLER DE SITE EN PHP par Mcjo
DÉCOUPAGE D'UN TEXTE EN FONCTION DES SAUTS DE LIGNES par biloubil
RÉCUPÉRER LE CHEMIN RELATIF D'UN OBJET PAR RAPPORT À LA RACI... par FredPsy

 Sources en rapport avec celle ci

Source avec Zip CLASSE QUI PERMET DE GENERER UN ARBRE par gagah1
Source avec Zip Source avec une capture LISTER DOSSIER AVEC UN ARBRE / TREE EN PHP / JAVASCRIPT par cyril6789
UNE ARBORESCENCE. par coucou747
Source avec Zip EVALUER UNE EXPRESSION MATHEMATIQUE, UTILISATION D'UN ARBRE ... par coucou747
Source avec Zip Source avec une capture PHP5 CLASSE ARBRE INVERSÉ (HUFFMAN) COMPRESSION DECOMPRESSIO... par guill76

Commentaires et avis

Commentaire de Gecko62 le 23/10/2006 15:40:19

Bonjour et merci,
j'attends avec impatience la gestion des poules (pour mon club de badminton cela pourrait être fort utile).
A bientôt cordialement

Commentaire de morpheus57 le 30/10/2006 09:25:29

Une petite remarque :
Tu pourrais utiliser des fonctions pour faciliter la lecture de ton code.
Cela permettrait aussi de séparer le HTML du PHP : voir s'il faut utiliser un moteur de template

Commentaire de knasucre le 31/10/2006 12:49:30

Ok je vais voir pour l'utilisation des fonctions et je travaille sur le systeme de poule , j'ai résolu le problème des lignes vides à la fin du code généré mais je ne suis pas chez moi donc je ne peut pas mettre à jour , mais c'est résolu c'est déja ça :).
Allez bonne prog a tous et je vais revenir bientot.

Commentaire de Also know as le 12/08/2009 20:30:10 7/10

Je met pas 10 parce que le code est très crade (mais pas mal commenté donc c'est sympa), mais le fait d'avoir trouvé cet algo m'arrange plutôt énormément :)

@+

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Tournoi avec arbre [ par masseur ] Bonsoir. J'aurais voulu savoir comment faire pour g&#233;n&#233;rer des arbres de tournois en automatiques selon le nombre de personne. COmment s'y pr arbre de défailance VB [ par cosmonul ] bonjour a tous je cherche des exemples de codes qui traiterait de la cr&#233;ation d'un arbre de d&#233;faillance en VB.merci d'avance pour votre aide Liste déroulante [ par Vanessa01 ] Bonjour,J'ai fait une liste déroulante qui contient des tournois, seulement j'aimerais que lorsque je sélectionne un tounoi que mon choix reste sur le compter les fils par niveaux dans un arbre ordonnée [ par paroleparleet ] Bonsoir à tous, J'aimerais que vous puissiez m'aider à resoudre un problème que j'ai rencontré dans mon projet.je dois compter le nombre de fils par n arbre généalogique-collapse tree [ par rami3b ] bonjourexiste-t-il un équivalent libre de yfiles ajax -http://www.yworks.com/en/products_yfilesajax_about.htmlje veut afficher une arbre c arbre généalogique-collapse tree [ par rami3b ] bonjourexiste-t-il un équivalent libre de yfiles ajax -http://www.yworks.com/en/products_yfilesajax_about.htmlje veut afficher une arbre c Formulaire de création d'un arbre généalogique [ par EmmaBlack ] Bonjour tout le monde! Je cherche depuis ce matin un script pour créer un arbre généalogique. J'en ai trouvé plusieurs ici, mais chaque fois avec une arbre n-aire [ par am1ra2 ] bonjour, je veux réaliser une recherche en php selon arbre n-aire,le principe est à partir d'une table on crée une arbre puis on va faire l'affichge e de l'arbre n-aire en C à php [ par am1ra2 ] bonjour j'ai trouvé ce code qui répond à mes besoins sur l'arbre n'aire mais il est en C si quelqu'un peut m'aider à le déveloper en php puisque j'ai Programmer un arbre de jeu pour un puissance 4 [ par bayer59 ] Bonjour, J'ai actuellement un projet de puissance 4 avec intelligence artificielle et interface graphique à réaliser en C. Le programme tourne en mod


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,232 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales