Ver Mensaje Individual
  #4 (permalink)  
Antiguo 18/06/2010, 09:17
Avatar de bNd170
bNd170
 
Fecha de Ingreso: agosto-2009
Ubicación: $this->setLocation('Valencia', 'Spain');
Mensajes: 365
Antigüedad: 15 años, 6 meses
Puntos: 13
Respuesta: Sistema Brackets - PHP

Lamento la tardanza, he estado fuera.

Bien, sí, es de eliminacion directa ya sea a uno, dos o tres partidos, la puntuacion final es la que determinaria si un equipo continua o no.

La funcion esPotencia es esta:
Código PHP:
Ver original
  1. function esPotencia($num) {
  2.     $resultado=false;
  3.     for($i=0;$i<=129 && $resultado==false;$i++){
  4.         $resu=pow(2,$i);
  5.         if($resu==$num){
  6.             $resultado=true;
  7.             return $i;
  8.         }
  9.     }
  10. }

Llevo fuera varias semanas y tengo esto un poco dejado, lo poco que tenia avanzado lo he perdido de mente asi que tendre que volver a ponerme.

Me estoy basando en este codigo que me han pasado pero sinceramente, me entero de poco ya que las funciones no imagino lo que devuelven.
Código Javascript:
Ver original
  1. // JavaScript Library Winners Bracket System
  2.     //Settings
  3.     var potmax=7;
  4.     var matchim="gris.gif";
  5.     var winim="winbracket.gif";
  6.     var losim="losbracket.gif";
  7.     var imgpath="../../images/";
  8.     var medbrackim="medbracket.gif";
  9.     var topbrackim="topbracket.gif";
  10.     var lowbrackim="lowbracket.gif";
  11.     var spcbrackim="spcrbracket.gif";
  12.     var defaultmatch="[f]es[/f] Equipo";
  13.     //El $1 indica el pais a escoger.
  14.     var banderaspath="../../images/icons/lang/$1.png";
  15.    
  16.     //Funciones
  17.     function eligeBracket(numequi){
  18.         potencia2=esPotencia(numequi);
  19.         if(potencia2!=false && numequi>1 && numequi<129){
  20.             html=crearBracket(numequi,potencia2);
  21.             document.getElementById('Display').innerHTML="<br>"+html;
  22.             //Añadir <input type='button' onClick='comprobarResults();' value='Comprobar Resultados'> EN FUTURAS VERSIONES.
  23.             document.getElementById('Options').innerHTML="<br/><input type='button' onClick='generarCodigo();' value='Vista Previa'>";
  24.         }
  25.         else
  26.             alert("Numero potencia de dos, mayor de 2 y menor de 129");
  27.            
  28.         return false;
  29.     }
  30.    
  31.     function crearBracket(numequi,potencia){
  32.         var col=potencia+(potencia+1);
  33.         var numpartidos=numequi/2;
  34.         var fil=3*numpartidos+numpartidos-1;
  35.         var ronda=0;
  36.         var medbrack=false;
  37.         var topbrack=false;
  38.         var lowbrack=false;
  39.         var dentrobr=false;
  40.         html="<table cellpadding='0' cellspacing='0'>"
  41.         for(var j=1;j<=fil;j++){
  42.             html+="<tr>";
  43.             //html+="<td>"+j+"</td>";
  44.             for(var k=1;k<=col;k++){
  45.                 if(k%2==0){
  46.                     brack=true;
  47.                 }
  48.                 else{
  49.                     brack=false;
  50.                     ronda++;
  51.                 }
  52.                 if(!brack){
  53.                     if(esPartido(ronda,j)){
  54.                         html+="<td class='n' name='Matchtd' id='"+ronda+j+"' width='82'  align='center' valign='middle'><input type='text' size='15' name='Match' value='"+defaultmatch+"'/>";
  55.                         if(esPartidoArriba(ronda,j)){
  56.                             topbrack=true;
  57.                         }
  58.                         else{
  59.                             lowbrack=true;
  60.                         }
  61.                     }
  62.                     else if(esResult(ronda,j)){
  63.                         html+="<td align='center' class='score' id='"+ronda+"_"+j+"_"+col+"' name='Result'><a style='cursor: pointer;' onClick=\"colorCasilla('ar',"+ronda+","+j+","+col+");\"> &nbsp; </a>[<input type='text' size='1' width='8' value='xx'/>:<input type='text' size='1' width='8' value='xx'/>]<a style='cursor: pointer;' onClick=\"colorCasilla('ab',"+ronda+","+j+","+col+");\"> &nbsp; </a><a style='cursor: pointer;' onClick=\"colorCasilla('non',"+ronda+","+j+","+col+");\"> &nbsp; </a>";
  64.                         medbrack=true;
  65.                     }
  66.                     else{
  67.                         html+="<td height=''>";
  68.                     }
  69.                 }
  70.                 else{
  71.                     if(medbrack){
  72.                         html+="<td class='medb'>";
  73.                         medbrack=false;
  74.                     }
  75.                     else if(lowbrack){
  76.                         html+="<td class='lowb'>";
  77.                         lowbrack=false;
  78.                     }
  79.                     else if(topbrack){
  80.                         html+="<td class='upb'>";
  81.                         topbrack=false;
  82.                     }
  83.                     else if(esDentroBracket(ronda,j)){
  84.                         html+="<td class='trazas'>";
  85.                         dentrobr=false;
  86.                     }
  87.                     else{
  88.                         html+="<td>";
  89.                     }
  90.                    
  91.                 }
  92.                 html+="</td>";
  93.             }
  94.             html+="</tr>";
  95.             ronda=0;
  96.         }
  97.         //html="columnas: "+col+" <br>filas:"+fil;
  98.         html+='</table>';
  99.         return html;
  100.     }
  101.    
  102.     function colorCasilla(direc,ronda,fila,maxcol){    
  103.         tabla=partidoArribaRes(ronda,fila);
  104.         arriba=tabla[0];
  105.         abajo=tabla[1];
  106.         rondaprox=ronda+1;
  107.         ronda=ronda.toString();
  108.         rondaprox=rondaprox.toString();
  109.         arriba=arriba.toString();
  110.         abajo=abajo.toString();
  111.         idarriba=ronda+arriba;
  112.         idabajo=ronda+abajo;
  113.        
  114.         if(direc=='ab'){
  115.             idprox=rondaprox+fila;
  116.             abajoteam=document.getElementById(idabajo).firstChild;
  117.             proxteam=document.getElementById(idprox).firstChild;
  118.             partidoarriba=document.getElementById(idarriba).style;         
  119.             partidoabajo=document.getElementById(idabajo).style;
  120.            
  121.             proxteam.value=abajoteam.value;
  122.             if((rondaprox)==((maxcol+1)/2)){
  123.                 proxteamsty=document.getElementById(idprox).style;
  124.                 proxteamsty.background="url('"+imgpath+winim+"')"; 
  125.             }
  126.             partidoabajo.background="url('"+imgpath+winim+"')";
  127.             partidoarriba.background="url('"+imgpath+losim+"')";       
  128.         }
  129.         else if(direc=='ar'){
  130.             idprox=rondaprox+fila;
  131.             arribateam=document.getElementById(idarriba).firstChild;
  132.             proxteam=document.getElementById(idprox).firstChild;
  133.             partidoarriba=document.getElementById(idarriba).style;
  134.             partidoabajo=document.getElementById(idabajo).style;
  135.            
  136.             proxteam.value=arribateam.value;
  137.             if((rondaprox)==((maxcol+1)/2)){
  138.                 proxteamsty=document.getElementById(idprox).style;
  139.                 proxteamsty.background="url('"+imgpath+winim+"')"; 
  140.             }
  141.             partidoabajo.background="url('"+imgpath+losim+"')";
  142.             partidoarriba.background="url('"+imgpath+winim+"')";   
  143.         }
  144.         else{
  145.             idprox=rondaprox+fila;
  146.             proxteam=document.getElementById(idprox).firstChild;
  147.             partidoarriba=document.getElementById(idarriba).style;
  148.             partidoabajo=document.getElementById(idabajo).style;
  149.            
  150.             proxteam.value=defaultmatch;
  151.             if((rondaprox)==((maxcol+1)/2)){
  152.                 proxteamsty=document.getElementById(idprox).style;
  153.                 proxteamsty.background="url('"+imgpath+matchim+"')";   
  154.             }
  155.             partidoabajo.background="url('"+imgpath+matchim+"')";
  156.             partidoarriba.background="url('"+imgpath+matchim+"')"; 
  157.         }
  158.    
  159.     }
  160.    
  161.     function comprobarResults(){
  162.         alert("Hola q tal? soy colosal!");
  163.     }
  164.    
  165.     function generarCodigo(){
  166.         //Copiar HTML de Display a VistaPrevia
  167.         html=document.getElementById('Display').innerHTML;
  168.         document.getElementById('VistaPrevia').innerHTML=html;
  169.         //Seleccionar todos los partidos y escoger solo los de vista previa para procesar los inputs.
  170.         todospartidos=document.getElementsByName('Match');
  171.         var conta=0;
  172.         var partidos=new Array();
  173.         while(conta<(todospartidos.length/2)){
  174.             mitad=eval(todospartidos.length/2+conta);
  175.             todospartidos[mitad].parentNode.id+='p';
  176.             partidos[conta]=todospartidos[mitad];
  177.             conta++;
  178.         }
  179.         var cont=0;
  180.         while(partidos.length>cont){
  181.             partidos[cont].value=todospartidos[cont].value
  182.             if(partidos[cont].value!=defaultmatch)
  183.                 aux=partidos[cont].value;
  184.             else aux='';
  185.             td=partidos[cont].parentNode.id;
  186.             partidos[cont].parentNode.removeChild(partidos[cont]);
  187.             document.getElementById(td).innerHTML=aux;
  188.             cont++;
  189.         }
  190.  
  191.     //Libreria
  192.     function esPotencia(num){
  193.         resultado=false;
  194.         for(i=0;i<=potmax && resultado==false;i++){
  195.             resu=Math.pow(2,i);
  196.             if(resu==num){
  197.                 resultado=true;
  198.                 return i;
  199.             }
  200.         }  
  201.         return resultado;
  202.     }
  203.    
  204.     function esResult(ronda,fila){
  205.         for(var i=0;i<=128;i++){
  206.             if(Math.pow(2,(ronda))+Math.pow(2,ronda+1)*i==fila){
  207.                 return true;
  208.             }
  209.         }
  210.         return false;
  211.     }
  212.    
  213.     function esPartido(ronda,fila){
  214.         for(var i=0;i<=128;i++){
  215.             if(Math.pow(2,(ronda-1))+Math.pow(2,ronda)*i==fila){
  216.                 return true;
  217.             }
  218.         }
  219.         return false;
  220.     }
  221.    
  222.     function esPartidoArriba(ronda,fila){
  223.         for(var i=0;i<=128;i++){
  224.             if(Math.pow(2,(ronda-1))+Math.pow(2,ronda+1)*i==fila){
  225.                 return true;
  226.             }
  227.         }
  228.         return false;
  229.     }
  230.    
  231.     function esDentroBracket(ronda,fila){
  232.         if(ronda==1){
  233.             return false;
  234.         }
  235.         else{
  236.             for(var i=0;i<=128;i++){
  237.                 if(Math.pow(2,(ronda-1))+Math.pow(2,ronda+1)*i<fila && Math.pow(2,(ronda-1))+Math.pow(2,ronda)+Math.pow(2,ronda+1)*i>fila ) {
  238.                     return true;
  239.                 }
  240.             }          
  241.         }
  242.         return false;
  243.     }
  244.    
  245.     function partidoArribaRes(ronda,fila){
  246.         var encontrados=false;
  247.         //Primer partido segun la ronda
  248.         var primerpar=Math.pow(2,(ronda-1));
  249.         //Diferencia entre dos equipos del mismo encuentro
  250.         var diferencia=Math.pow(2,ronda);
  251.         var cont=1;
  252.         var devolver=new Array();
  253.         //Primer equipo
  254.         devolver[0]=0;
  255.         //Segundo equipo
  256.         devolver[1]=0;
  257.         while(!encontrados && cont<128){
  258.             if((fila-primerpar)*2==diferencia){
  259.                 devolver[0]=primerpar;
  260.                 devolver[1]=primerpar+diferencia;
  261.                 encontrados=true;
  262.             }
  263.             else
  264.                 primerpar+=diferencia;
  265.             cont++;
  266.         }
  267.         return devolver;
  268.     }

Última edición por bNd170; 18/06/2010 a las 09:55