|
|
(Una revisión intermedia por el mismo usuario no mostrado) |
Línea 1: |
Línea 1: |
| {{:Usuario:ManuelRomero/ProgramacionWeb/Inaem2021/formularios/nav}} | | {{:Usuario:ManuelRomero/ProgramacionWeb/Inaem2021/formularios/nav}} |
| ===Juego de adivinar un número=== | | ===Juego de adivinar un número=== |
| + | Puedes probarla en |
| + | http://manuel.infenlaces.com/dwes/practicas/practica_3/ |
| ;Se trata de hacer un juego para que la aplicación adivine un número que tu pienses | | ;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 | | *La aplicación me mostrará 3 opciones |
Línea 182: |
Línea 184: |
| [[Archivo:Casos_uso_juego_adivinar_numero.png|center]] | | [[Archivo:Casos_uso_juego_adivinar_numero.png|center]] |
| {{plegable|hide|posible_solucion| | | {{plegable|hide|posible_solucion| |
− | {{plegable|hide|index.php | + | {{plegable|hide|index.php| |
| <source lang="php"> | | <source lang="php"> |
| <?php | | <?php |
Línea 235: |
Línea 237: |
| </source> | | </source> |
| }} | | }} |
− | {{plegable|hide|jugar.php | + | {{plegable|hide|jugar.php| |
| <source lang="php"> | | <source lang="php"> |
| <?php | | <?php |
Línea 328: |
Línea 330: |
| </source> | | </source> |
| }} | | }} |
− | {{plegable|hide|fin.php | + | {{plegable|hide|fin.php| |
| <source lang="php"> | | <source lang="php"> |
| <?php | | <?php |
Línea 358: |
Línea 360: |
| </source> | | </source> |
| }} | | }} |
− | {{plegable|hide|estilo.css | + | {{plegable|hide|estilo.css| |
| <source lang="php"> | | <source lang="php"> |
| fieldset{ | | fieldset{ |
Última revisión de 00:55 24 dic 2022
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 probarla en
http://manuel.infenlaces.com/dwes/practicas/practica_3/
- 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 algoritmica 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/
|
- Realizaremos esta práctica siguiendo o implementando los siguientes requisitos
- RF1: El fichero index.php me informará del juego
Este requisito es fácil de implementar. Se puede copiar directamente el contenido del fichero
- 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)
- Se pide también que lleves un log, donde anotes la hora (minutos y segundos) de cada jugada, especificando el número de jugada y el número aportado.
- Un posible diagrama de casos de uso del programa podría ser
posible_solucion |
---|
index.php |
---|
<?php
$intentos = $_GET['intentos'] ?? 10;
//Si vengo de jugar leo los intentos por get, si no doy un valor por defecto 10
//Estas variables contendrán el texto para incluir den los input de tipo radio
//Uno de ellos será checked el resto null
$checked_10 = null;
$checked_16 = null;
$checked_20 = null;
switch ($intentos) {
case 10:
$checked_10 = "checked";
break;
case 16:
$checked_16 = "checked";
break;
case 20:
$checked_20 = "checked";
break;
}
?>
<!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>Document</title>
<link rel="stylesheet" href="estilo.css">
</head>
<body>
<h1>Juego de adiviana un número</h1>
<fieldset>
<legend>Seleccona un intervalor</legend>
<form action="jugar.php" method="POST">
<input type="radio" name="intentos" <?= $checked_10 ?> value="10" id="">10 intentos valores entre(1-1024)<br/>
<input type="radio" name="intentos" <?= $checked_16 ?> value="16" id="">16 intentos valores entre(1-65536)<br/>
<input type="radio" name="intentos" <?= $checked_20 ?> value="20" id="">20 intentos valores
entre(1-1048576)<br/>
<input type="submit" value="Empezar" name="submit">
</fieldset>
</form>
</body>
</html>
|
jugar.php |
---|
<?php
//obtengo la opción que me ha traído a esta págian
$opcion = $_POST['submit'] ?? null;
switch ($opcion) {
case "Empezar": //Identifico e inicializo las varilbles
case "Reiniciar":
$min = 1;
$intentos = $_POST['intentos'];
$max = pow(2, $intentos);
$jugada = 1;
break;
case "Jugar": //Hacemos la jugada actual (
//leer los datos que son los valores de la jugada anterior o de inicializar las variables
$jugada = $_POST['jugada'];
$jugada++;//actualizo la jugada
$min = $_POST['min'];
$max = $_POST['max'];
$num = $_POST['numero'];
$intentos = $_POST['intentos'];
$rtdo = $_POST['rtdo'];
//Evalúo la jugada si ya he terminado me voy a fin
if ($jugada > $intentos && $rtdo != "=") {
$resultado = false;
header("Location:fin.php?acertado=$resultado");
exit();
}
switch ($rtdo) {
case ">":
$min = $num;
break;
case "<":
$max = $num;
break;
case "=":
$resultado = true;
header("Location:fin.php?acertado=$resultado");
exit();
}
break;
case "Volver":
$intentos = $_POST['intentos'];
header("Location:index.php?intentos=$intentos");
exit();
default:
header("Location:index.php");
exit();
}
$numero = round(($min + $max) / 2);
?>
<!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>Document</title>
<link rel="stylesheet" href="estilo.css">
</head>
<body>
<fieldset>
<legend>Opciones del juego</legend>
<form action="jugar.php" method="post">
<h1>En número es <?= $numero ?></h1>
<h2>Juagada actual <?= $jugada ?></h2>
<input type="radio" checked name="rtdo" value=">" id="">Mayor<br/>
<input type="radio" name="rtdo" value="<" id="">Menor<br/>
<input type="radio" name="rtdo" value="=" id="">Igual<br/>
<input type="submit" value="Jugar" name="submit">
<input type="submit" value="Reiniciar" name="submit">
<input type="submit" value="Volver" name="submit">
<input type="hidden" name="max" value="<?= $max ?>">
<input type="hidden" name="min" value="<?= $min ?>">
<input type="hidden" name="numero" value="<?= $numero ?>">
<input type="hidden" name="intentos" value="<?= $intentos ?>">
<input type="hidden" name="jugada" value="<?= $jugada ?>">
</form>
</fieldset>
</body>
</html>
|
fin.php |
---|
<?php
$acertado = $_GET['acertado'];
if ($acertado)
$msj ="Ves que listo soy";
else
$msj ="No puede ser, no has sido sincero";
?>
<!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>Document</title>
</head>
<body>
<h1><?=$msj?></h1>
<form action="index.php" method="post">
<input type="submit" value="Volver" name="submit">
</form>
</body>
</html>
|
estilo.css |
---|
fieldset{
background: azure;
margin-left:100px;
margin-top:10px;
width: 60%;
}
legend{
font-size:2em;
color:blue;
}
input[type=submit],
input[type=reset]{
color:darkblue;
font-size:1.4em;
}
|
|
-
}}