Diferencia entre revisiones de «Usuario:ManuelRomero/ProgramacionWeb/Inaem2021/formularios/practica»
De WikiEducator
(4 revisiones intermedias 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 179: | Línea 181: | ||
#RF7 Controla el fin del juego (exceder el número de jugadas o haber acertado el número) | #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. | *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 | ||
+ | [[Archivo:Casos_uso_juego_adivinar_numero.png|center]] | ||
+ | {{plegable|hide|posible_solucion| | ||
+ | {{plegable|hide|index.php| | ||
+ | <source lang="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> | ||
+ | |||
+ | </source> | ||
+ | }} | ||
+ | {{plegable|hide|jugar.php| | ||
+ | <source lang="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> | ||
+ | |||
+ | |||
+ | </source> | ||
+ | }} | ||
+ | {{plegable|hide|fin.php| | ||
+ | <source lang="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> | ||
+ | |||
+ | </source> | ||
+ | }} | ||
+ | {{plegable|hide|estilo.css| | ||
+ | <source lang="php"> | ||
+ | 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; | ||
+ | } | ||
+ | |||
+ | </source> | ||
+ | }} | ||
+ | }} | ||
+ | ; | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | }} |
Última revisión de 00:55 24 dic 2022
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
**(Se calculará otro número y tendrás 10 intentos de nuevo)
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 | ||||||||
---|---|---|---|---|---|---|---|---|
|
}}