Foros del Web » Programando para Internet » PHP »

Juego: Enfrentamientos aleatorios

Estas en el tema de Juego: Enfrentamientos aleatorios en el foro de PHP en Foros del Web. Hola! Llevo horas dándole vueltas y no veo la forma exacta de hacerlo Supongamos que tenemos esta tabla: Columna ID DE UN EQUIPO: 1,2,3,4,5.....etc Columna ...
  #1 (permalink)  
Antiguo 03/03/2006, 11:16
 
Fecha de Ingreso: enero-2006
Mensajes: 38
Antigüedad: 11 años, 10 meses
Puntos: 0
Pregunta Juego: Enfrentamientos aleatorios

Hola! Llevo horas dándole vueltas y no veo la forma exacta de hacerlo

Supongamos que tenemos esta tabla:

Columna ID DE UN EQUIPO: 1,2,3,4,5.....etc

Columna SE ENFRENTA A ID: Aquí quiero que vaya pasando por las ids de los equipos de una en una y vaya asignándole la id de otro equipo al azar par enfrentarse a él.

¿Cómo se haría esto?

Muchas gracias y salu2!
  #2 (permalink)  
Antiguo 04/03/2006, 04:35
 
Fecha de Ingreso: enero-2006
Mensajes: 38
Antigüedad: 11 años, 10 meses
Puntos: 0
Ninguna idea? No puede hacerse?
  #3 (permalink)  
Antiguo 04/03/2006, 06:30
Avatar de david_M_G  
Fecha de Ingreso: febrero-2005
Mensajes: 938
Antigüedad: 12 años, 10 meses
Puntos: 20
No entiendo tu idea... Te agradecería que explicaras un poco más.
  #4 (permalink)  
Antiguo 04/03/2006, 06:45
 
Fecha de Ingreso: enero-2006
Mensajes: 38
Antigüedad: 11 años, 10 meses
Puntos: 0
Ok, me explico:

La idea es que hay una lista de equipos y quiero que se genere un enfrentamiento entre cada uno de ellos:

Ejemplo:

Equipos: A, B, C, D, E, F.....

Enfrentamientos: A vs D, B vs C, E vs F.....

Tengo una tabla con una columna en la que estan las ids de los equipos que hay. Bien, pues quiero que en otra columna se guarde en la celda que corresponde a la fila de cada equipo, la id del equipo contra el que le toca enfrentarse.

Si no me he explicado bien no hay problema, lo vuelvo a intentar explicar mejor

Salu2!
  #5 (permalink)  
Antiguo 04/03/2006, 06:57
Avatar de david_M_G  
Fecha de Ingreso: febrero-2005
Mensajes: 938
Antigüedad: 12 años, 10 meses
Puntos: 20
Lo siento, sigo sin entender
  #6 (permalink)  
Antiguo 04/03/2006, 07:03
 
Fecha de Ingreso: enero-2006
Mensajes: 38
Antigüedad: 11 años, 10 meses
Puntos: 0
A ver en modo resumen:

Como se haria para que teniendo una columna con números (1, 2, 3, 4, 5...) otra columna se llene de números que no se repitan y que el mayor de ellos sea tan grande como el mayor de la primera columna.

Si no entiendes no te preocupes que vuelvo a explicar ;)
  #7 (permalink)  
Antiguo 04/03/2006, 07:05
Avatar de david_M_G  
Fecha de Ingreso: febrero-2005
Mensajes: 938
Antigüedad: 12 años, 10 meses
Puntos: 20
Mmmm, vale, creo que ya entiendo. Tú tienes una tabla en la base de datos que se llama "equipos" o algo parecido, y tienes una columna con la id de cada uno. Tienes otra columna vacía donde quieres insertar la id del equipo contra el que va a jugar. ¿Cierto?
  #8 (permalink)  
Antiguo 04/03/2006, 07:15
 
Fecha de Ingreso: enero-2006
Mensajes: 38
Antigüedad: 11 años, 10 meses
Puntos: 0
Efectivamente!

Entonces el problema lo tengo en que elija al azar un rival para cada equipo y lo guarde en la tabla, pero claro no pueden repetirse ids de rivales (no puede ser el 1 contra el 3, el 2 contra el 3).
  #9 (permalink)  
Antiguo 04/03/2006, 08:30
Avatar de david_M_G  
Fecha de Ingreso: febrero-2005
Mensajes: 938
Antigüedad: 12 años, 10 meses
Puntos: 20
Haces una consulta RANDOM para coger una id enemiga al azar.

1- Verifica que no es la misma ID (ej. 1 contra 1, 2 contra 2...)

Código PHP:
<? if ($id_equipo == $id_enemiga) { 
echo 
"No puede jugar contra el mismo equipo";
} else {
//Añades la ID enemiga en su celda.  
?>
2- Verifica que no se ha repetido una ID

Código PHP:
<? $query mysql_query("select * from equipos where id_enemiga='$id_enemiga'");    
if(
mysql_num_rows($query)==1){
echo 
"Esa ID ya ha sido seleccionada";
}else{
//Añades la ID enemiga en su celda.  
?>

Espero que te sirva
  #10 (permalink)  
Antiguo 04/03/2006, 11:51
 
Fecha de Ingreso: enero-2006
Mensajes: 38
Antigüedad: 11 años, 10 meses
Puntos: 0
Gracias! Ya me olia que los tiros iban por ahí.

Pero creo que tiene una pega: resulta que eso lo hace cada semana automáticamente para que todos tengan su rival. Pero si hay 100.000 equipos y eso va cogiendo números al azar cuando solo queden 2 equipos sin rival por ejemplo se tirará un siglo generando números hasta que de con el que queda libre.

Como le pongo solución a esto?

Salu2!
  #11 (permalink)  
Antiguo 04/03/2006, 13:17
Avatar de david_M_G  
Fecha de Ingreso: febrero-2005
Mensajes: 938
Antigüedad: 12 años, 10 meses
Puntos: 20
Podrías hacer una tecera columna llamada "Seleccionado", y una vez se ha cogido la ID de ese equipo, ponerle el valor "1" o un "si". Entonces al buscar equipos, buscas los que no tengan ese valor en la columna seleccionado.

¿Me he explicado bien?

Suerte!
  #12 (permalink)  
Antiguo 04/03/2006, 16:55
Avatar de kurorix  
Fecha de Ingreso: junio-2005
Ubicación: Maipu - Santiago - Chile
Mensajes: 54
Antigüedad: 12 años, 6 meses
Puntos: 0
aBuena idea tambien estaba buscando esto :P
__________________
No lo pidas, Consiguelo por tu cuenta, hazlo y tendras exito.
  #13 (permalink)  
Antiguo 05/03/2006, 08:15
 
Fecha de Ingreso: enero-2006
Mensajes: 38
Antigüedad: 11 años, 10 meses
Puntos: 0
Ok, muy buena solución.

Lo probaré a ver que tal!

Muchas gracias por la ayuda de verdad!! :D
  #14 (permalink)  
Antiguo 13/03/2006, 05:31
 
Fecha de Ingreso: enero-2006
Mensajes: 38
Antigüedad: 11 años, 10 meses
Puntos: 0
Cita:
Iniciado por david_M_G
Podrías hacer una tecera columna llamada "Seleccionado", y una vez se ha cogido la ID de ese equipo, ponerle el valor "1" o un "si". Entonces al buscar equipos, buscas los que no tengan ese valor en la columna seleccionado.

¿Me he explicado bien?

Suerte!
He estado probando pero hay un problemilla con esto que no consigo resolver:

Lo de buscar equipos lo hace con un número aleatorio, como hago que genere números aleatorios entre los que tengan el valor false en la columna seleccionado?

Salu2!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:21.