Pausar un bucle hasta que el usuario introduzca un dato

Tengo un problema que parece una tonteria pero lleva bloqueándome un buen rato. Estoy haciendo un programa en PHP que simula el juego de cartas Siete y media (una especie de blackjack) y necesito preguntarle al jugador en cada turno si desea sacar una carta o plantarse.
        <?php
            $cartasExtraidas = new SplObjectStorage(); //Lista de objetos
            $puntosHumano = 0;
            $puntosHumanos = jugarHumano($cartasExtraidas);
            function jugarHumano($cartasExtraidas){
                $decision = "c";
                $puntos = 0;
                do{
                    echo "Jugador Humano pide carta. <br>";
                    //Pide carta y comprueba si ya ha salido antes, si es así, se pide otra y comprueba de nuevo.
                    do{
                        $carta = new Carta();

//No he puesto la definición del objeto Carta por no alargar el código
                    }while($cartasExtraidas->contains($carta) != null);
                    $puntos = $puntos + $carta->getPuntos();
                    echo "Has sacado el " . $carta . ".";
                    echo " Llevas " . $puntos . " punto(s). Plantarse(p) o Continuar(c)";
                    ?>
                        <form name="formu" method="POST">
                            <br><input type="text" name="decision">
                            <input type="submit" name="Responder">    
                        </form>
                    <?php
                    $decision=$_POST['decision'];
                    echo $decision;
                }while(trim(strtolower($decision)) != "p");
                return $puntos;
            }

He puesto un bucle do while que pide un dato al jugador y sale cuando introduce la letra "p" (plantarse). El problema es que el bucle no se para hasta que el jugador introduzca el dato, sino que sigue sacando cartas y mostrando la ventana post y el submit una y otra vez. ¿Hay alguna forma de pausar la ejecución del bucle hasta que el usuario introduzca un dato por teclado?

2 respuestas

Respuesta

Es que yo creo que lo estas planteando mal... ¿por qué necesitas un bucle?... yo creo que puede empezar el juego y luego haber acciones, jugardor_pide_carta, jugador_pasa, etc... y mientras no tienes que hacer nada... tener un proceso corriendo en el servidor no tiene mucho sentido.

¿Por qué has decidido usar eso?. Para mi tiene más sentido que el servidor guarde la baraja, los jugadores, y las cartas en la mesa. Y según lo que los jugadores hagan, vaya cambiando esos objetos... cuando todos los jugadores pasan... esa ronda termina, y se empieza otra.

Respuesta

En PHP no se puede realizar una espera para la acción de un usuario ¿Por qué? Pues porque PHP se ejecuta en el servidor y, solo cuando se ha terminado de ejecutar todo su código, el usuario de la web en su navegador, visualiza el resultado.

Para hacer lo que tu quieres necesitarías o bien programar con javascript y AJAX las acciones del usuario, o bien tienes que realizar el formulario con distintos botones de tipo "submit" que lancen distintas acciones.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas