Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Un problema con php

Iniciado por Diferencial, 23 de Enero de 2007, 09:01:46 PM

« anterior - próximo »

Diferencial

Hola a todos,
Quiero ideas para plantear de diferentes formas lo que aqui estoy comentando. Exclusivamente php y javascript es ya cabezoneria si no se puede usaria otras cosas.

Primero describo lo que quiero hacer, estoy realizando el juego de ajedrez.

El juego lo he basado en los sockets de php(2 jugadores).
Lo primero aparece el menu del juego.

Cuando se pulsa jugar, aparece una pagina con todos los jugadores que quieren jugar al juego. <== Esta parte no se como realizarla

Para comenzar la partida se debe pulsar sobre el jugador con el que se quiere jugar.

Para conectar a estos jugadores tengo que crear una conexion entre ellos, pongo a la escucha el servidor en el primer jugador, de alguna forma que todabia no he visto tengo que hacer que el jugador acepte la conexión.
<== El problema de poner a la escucha el servidor es que no pinta la interfaz de la ventana hasta que no se acepta la conexión.

Si existe la posibilidad en php de crear un hilo aparte la desconozco.

Posible solución:
Para solucionar esta problema he pensado en sacar un popup donde este ponga a la escucha el servidor para aceptar peticiones y posteriormente habilitar un boton que ponga conectar en la pantalla principal.

En el otro jugador aparece una ventana que le indica que hay un jugador que quiere jugar con el.

Si acepta se llevaria la misma operacion popup con peticion y esperando.

Para enviar datos entre ellos usaria las conexiones para enviar al servidor lo que hace el jugador 1 y desde el servidor lo enviaria al jugador 2.
<== El problema es que no puedo acceder a la conexion del jugador 2 desde el jugador 1 y viceversa.

Posible solución:
No lo he visto pero debe estar por alguna parte una session que se pueda acceder desde cualquier otra sesión. Es decir un claro ejemplo seria el application de asp 3.0.

Estaria muy bien saber de alguna forma cuando llegan los datos desde el servidor al jugador para habilitar botones o pasar el turno.
Pero eso ya es cuestión mia que se me acaba de ocurrir mientras escribia.
PARA TENER COSAS QUE NUNCA HAS TENIDO, TENDRÁS QUE HACER COSAS QUE NUNCA HAS HECHO.

shephiroth

Buenas.

Lo primero comentar que esto te seria mucho mas facil usando java o flash, pero si es hacerlo por cabezoneria...

Una posible solucion es q utilices div q cada x segundos recargue una pagina, en la q mire si hay o no mensajes en el servidor para el usuario actual. Lo unico malo es q tendrías q dotar de comunicacion entre el div y la pagina original, lo cual creo q es un poco complicado.

Otra manera sería que se recargase toda la pagina. No tendrías el problema de tener q crear un canal, puesto q la pagina se autogestionaria, pero estar recargando la pagina todo el rato.....

Por ultimo no se si habra alguna funcion en php5 que te sirva de ayuda. Siento ser repetitivo, pero seria mejor que lo hicieras en java o flash xDD

jazcks

yo pasaria de sockets de php y usaria AJAX (javascript asincrono)

1- el jugador entra, y pulsa un boton de "quiero jugar", se lanza una peticion a un php que almacena en la base de datos(mysql?) el id del jugador (o lo que sea), con la fecha/hora actuales

2- otro jugador, entra, pulsa en listar jugadores (es un php que hace una consulta select de los que estan en espera, con alguna condicion, por ejemplo:  "(hora actual - hora que quiso jugar) < 1 min."

3- el jugador que está en espera, tiene una peticion ajax (a un php) cada X segundos para decir que sigue "vivo" y esperando a jugar.
Ademas esa peticion le informaria si tiene un contrincante.

4- el segundo jugador clicka en el jugador, y espera la confirmacion tb mediante ajax, que el jugador elegido estaba vivo y se dispone a jugar.

5-la partida consistiria en mas o menos lo mismo, peticiones ajax cada X tiempo, contra el servidor (php-mysql), para saber si le toca jugar o si el otro ha hecho una jugada, que falta "updatear", en el cliente (pagina web)...

ajax: http://es.wikipedia.org/wiki/AJAX
librerias javascript (con ajax entre otras muchas cosas): http://mootools.net/, http://script.aculo.us/

suerte!

Diferencial

Antes de nada agradecer las respuestas,

shephiroth como tu bien dices es cabezoneria, puedo usar perfectamente java y no complicarme la vida. De hecho se puede llegar usar clases de java en php. Por otro lado la posibilidad de usar ajax ya se me ocurrio tambien, aunque no lo mire con profundidad pero me parecio interesante.

En definitiva voy a usar ajax y pasar de los sockets aunque me quedo con la espina clavada.

Por cierto, existe la posibilidad de poder acceder desde la sesion del jugador 1 a los datos del jugador 2 sin usar la base de datos??
PARA TENER COSAS QUE NUNCA HAS TENIDO, TENDRÁS QUE HACER COSAS QUE NUNCA HAS HECHO.

shephiroth

Hace mucho q no toco php y no se si me estare equivocando con asp, pero creo recordar que puedes crear variables globales independientes de la sesion. Pero gestionar eso sería dificultoso, y tendrías q llamar al php cada vez q quisieras comprobar algo.....

No conocia nada del AJAX, suena interesante.

SUERTE ^^

jazcks

asi de primeras no se si php permite compartir sesiones entre usuarios, lo que si se, es que se es que hay formas de compartir las sesiones entre distintos servers, y tb entre varios dominios (permanecer loggeado en varios sites)

si yo tuviera que hacerlo, y sin BBDD, no me complicaria y usaria ficheros planos de texto.

al recargar la pagina de un jugador, el php puede leer de un fichero, que previamente ha podido escribir otro jugador (al inicio del script), o algo así...

Diferencial

Eso se me ocurrio, pero no habra problemas en el servidor o se supone que a mi me dan permisos para hacer lo que yo quiera en mi site?
PARA TENER COSAS QUE NUNCA HAS TENIDO, TENDRÁS QUE HACER COSAS QUE NUNCA HAS HECHO.

jazcks

Si es de pago, lo normal es que tengas todos los permisos en tu site, crear directorios, ficheros...

Si es gratis, es informarse y probar, no cuesta nada hacer un php que guarde un txt.

Lo unico que se debería tener en cuenta es no guardar ese fichero en un sitio accesible publicamente, si por ejemplo vas a guardar cosas confidenciales de las sesiones, deberias jugar con los permisos, ya que alguien podria hacer (si supiera donde buscar).

"www.dominio.com/loquesea/mifichero.txt" y verlo todo xD

Diferencial

pues muchas gracias por las respuestas me ha servido mucho para volver a plantearlo todo desde otro punto de vista
PARA TENER COSAS QUE NUNCA HAS TENIDO, TENDRÁS QUE HACER COSAS QUE NUNCA HAS HECHO.






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.