Formularios: Pasando información del cliente al servidor
¡Los formularios como entrada de datos a nuestros script
PHP Un lenguaje de script al lado del servidor
Juego de adivinar un número
puedes probar una posibles solución en
http://manuel.infenlaces.com/distancia/practicas/practica_3/index.php
- Se trata de hacer un juego para que la aplicación adivine un número que tu pienses
- La aplicación me mostrará 3 opciones
- El usuario pensará un número del 1 al mayor número posible según la opción seleccionada
- Una posible pantalla inicial del juego podría ser
Requisitos de la práctica
- Como hemos indicado, el usuario de la aplicación piensa un número en el intervalo establecido.
- Después la aplicación, en diferentes intentos procederá a adivinarlo.
- La aplicación deberá usar la búsqueda dicotómica o algorítmica del número y así siempre lo acertará.
- En cada iteración le informará de si el número que te especifica es menor, mayor o si lo ha acertado.
- El número de intentos que hay, queda establecido según la opción seleccionada.
- En cualquier momento podrás reiniciar el juego mientras estás jugando.
**(Se calculará otro número y tendrás 10 intentos de nuevo)
- La pantalla de jugar podría ser
- Deberás de tener tres fichero:
- index.html que te generará la información
- jugar.php que es es juego
- fin.php cuando termine la partida con la información del juego realizado.
- Selecciona la práctica 3 en la siguiente url
http://manuel.infenlaces.com/
|
[▼]juego adivinar: index.html |
---|
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Adivina número</title>
</head>
<body>
<fieldset style="width: 60%;float:left;margin-left: 20%; background: bisque">
<legend><h1>Juego adivina número</h1></legend>
<h2> Debes de adivinar un número que yo genero</h2>
<h2> El número está entre 0 y 1024</h2>
<h2> Cada vez que verifiques yo te diré</h2>
<ul>
<ol>Si el número buscado es mayor</ol>
<ol>Si el número buscado es menor</ol>
<ol>Si has aceertado el número</ol>
</ul>
<h2> Tienes 10 intentos</h2>
<h2> Se te indicará el número de intentos que llevas</h2>
<form action="jugar.php"><input type="submit" value="Empezar juego"></form>
</fieldset>
</body>
</html>
|
[▼]jugar.php |
---|
<?php
switch ($_POST['enviar']) {
case 'jugar':
$numero_adivinar = filter_input(INPUT_POST, 'numAdivinar');
$intentos = filter_input(INPUT_POST, 'intentos');
$numero = filter_input(INPUT_POST, 'numero');
$intentos++;
$msj = valida($numero_adivinar, $numero);
if ($msj === "FIN")
terminar(true);
if ($intentos === 10)
terminar(false);
$msj.="<br />Llevas $intentos intentos restan " . (10 - $intentos);
$reiniciar = "";
break;
case 'volver':
header("Location:index.php");
exit();
case 'reiniciar':
$numero_adivinar = rand(0, 1024);
$msj = "Volvemos a empezar el juego";
$intentos = 0;
$reiniciar = "disabled";
break;
default: //vengo del index
$numero_adivinar = rand(0, 1024);
$msj = "Vamos a empezar a jugar, inserta un número";
$reiniciar = "disabled";
$intentos = 0;
}
function valida($numero_adivinar, $numero) {
switch (true) {
case ($numero > $numero_adivinar):
$msj = "El número $numero es MAYOR que el número buscado";
break;
case ($numero < $numero_adivinar):
$msj = "El número $numero es MENOR que el número buscado";
break;
case ($numero === $numero_adivinar):
$msj = "FIN";
break;
}
return $msj;
}
function terminar($estado) {
global $msj, $numero, $intentos, $numero_adivinar, $reiniciar;
if ($estado === true) {
$msj = "FELICIDADES,$numero ES EL NÚMERO BUSCADO<br />";
$msj.="Lo has acertado en $intentos intentos";
$reiniciar = disabled;
$intentos = 0;
} else {
$msj = "HAS TERMINADO TUS INTENTOS<br />";
$msj.="El número buscado es $numero_adivinar<br />";
$msj.="Buena suerte para la próxima vez";
$reiniciar = disabled;
$intentos = 0;
}
}
?>
<!doctype html>
<html lang="en">
<head>
<meta char3="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body style="width: 60%;float:left;margin-left: 20%; ">
<h3><?php echo $msj ?></h3>
<fieldset style="width:30%;background:bisque ">
<legend>Empieza el juego</legend>
<form action="jugar.php" method="POST" >
Escribe un número <input type="text" name="numero" id="">
<hr />
<input type="submit" value="jugar" name="enviar" >
<input type="submit" value="reiniciar" name="enviar" <?php echo $reiniciar ?> >
<input type="submit" value="volver" name="enviar" >
<input type="hidden" value="<?php echo $intentos ?>" name="intentos">
<input type="hidden" value="<?php echo $numero_adivinar ?>" name="numAdivinar">
</form>
</fieldset>
</body>
</html>
|
- Realizaremos esta práctica siguiendo o implementando los siguientes requisitos
- RF1: El fichero index.php me informará del juego
- RF2: El mismo fichero index.php me mostrará las opciones (ver imagen anterior)
- RF3: El fichero index.php tendrá un botón para empezar el juego
- RNF1: Deberemos identificar todas las variables que necesito
- Realiza un análisis de juego
- Juega directamente y anótate todas las variables que necesitas ($jugada, $max, $min, $intentos,...').
- RF4 En el primer acceso a jugar.php inicializo las variables
- RF5 Establece la estrategia (inputs:hidden) para pasar los valores de las variables
- RF6 Actualiza las variables según jugada y apúntales en los hidden para la siguiente jugada
- RF7 Controla el fin del juego (exceder el número de jugadas o haber acertado el número)