Diferencia entre revisiones de «Usuario:ManuelRomero/ProgramacionWeb/Inaem2021/formularios/practica»

De WikiEducator
Saltar a: navegación, buscar
 
(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

Adivina1.png



Icon activity.jpg
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

Adivina2.png


  • Deberás de tener tres fichero:
  1. index.html que te generará la información
  2. jugar.php que es es juego
  3. fin.php cuando termine la partida con la información del juego realizado.

Adivina3.png


  • Selecciona la práctica 3 en la siguiente url
http://manuel.infenlaces.com/





  • Realizaremos esta práctica siguiendo o implementando los siguientes requisitos
  1. RF1: El fichero index.php me informará del juego
Este requisito es fácil de implementar. Se puede copiar directamente el contenido del fichero
  1. RF2: El mismo fichero index.php me mostrará las opciones (ver imagen anterior)
  2. RF3: El fichero index.php tendrá un botón para empezar el juego
  3. RNF1: Deberemos identificar todas las variables que necesito
    1. Realiza un análisis de juego
    2. Juega directamente y anótate todas las variables que necesitas ($jugada, $max, $min, $intentos,...').
  4. RF4 En el primer acceso a jugar.php inicializo las variables
  5. RF5 Establece la estrategia (inputs:hidden) para pasar los valores de las variables
  6. RF6 Actualiza las variables según jugada y apúntales en los hidden para la siguiente jugada
  7. 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
Casos uso juego adivinar numero.png



}}