Programar dado de 100 o d20 con rand() en PHP
Bienvenidos a VerTutoriales, siguiendo con el proyecto de Reinos de Papel, hicimos un pequeño código donde generábamos una tirada de un dado de 100 o de 20, para ello utilizamos la función rand() de PHP.
La función rand(min, max), devuelve un entero que va desde el valor min hasta el valor max.
El código es muy sencillo, pero lo exponemos y luego explicaremos las lineas.
<?php
$mensaje = $_GET[‘txtmensaje’]; //recojo valor del tipo de dado
if ($mensaje != «») //es la primera vez
{
echo «Estas lanzando un dado de «.$mensaje;
echo ‘<br />’;
}if ($mensaje==»20») //según el dado lanza d20 o d100
{
$num=rand(1,20);echo $num;
echo «<br />»;}elseif ($mensaje==»100″)
{
$num=rand(1,100);echo $num;
echo «<br />»;}
?>
<form id=»form1″ name=»form1″ method=»get» action=»dado.php»>
<label>
<input type=»submit» name=»button» id=»button» value=»Lanzar Dado» />
</label>
<p>
<label>
<select name=»txtmensaje» id=»txtmensaje»>
<option value=»20″>d20</option>
<option value=»100″>d100</option>
</select>
</label>
</p>
</form>
Como podeis ver el código no es muy extenso, pero vayamos por partes, lo primero es recojer la opción del dado d20 o d100, comprueba la opción y «lanza el dado» utilizando la función rand(valor min, valor max) y se guarda en $num para luego mostrarlo en pantalla.
A continuación mostramos el formulario, el botón y un menú desplegable para la selección del dado, una vez hecha la selección pulsa el botón y comenzaría con el código, recojer la opción, realizamos la condicional, lanza el dado y otra vez se muestra el formulario… idem
¿Qué más se os ocurre añadirle?
y para este probema ???
una aplicación utilizando HTML y PHP que simule el lanzamiento de un dado 20 veces, la aplicación debe imprimir el número de veces que salió cada cara del dado. Ejemplo:
Cara 1: 5 veces.
Cara 2: 2 veces.
Cara 3: 3 veces.
Cara 4: 6 veces.
Cara 5: 3 veces.
Cara 6: 1 veces.
Total de lanzamientos: 20.
Deberás de crear un bucle for para repetirse 20 Veces (http://www.vertutoriales.com/index.php/como-se-hacen-bucles-for-next-flex-php-visual-basic/)
Además de crear un array donde se guarde un contador de caras
$resultado[$tirada]++;
Sino también puedes crear 6 variables para cada una de las caras y realizar un switch para cada caso y realizar el contador, aunque es algo más tedioso, dará el mismo resultado.
Luego solo quedará imprimirlo en pantalla.
Espero que te ayude.
y el codigo de que forma quedaria??? soy novato en sto
Si eres novato en HTML y PHP, tendrás que hacer por cambiarlo, y eso con lleva práctica y escritura, mucha escritura de código.
Las pistas ya te las he dado, pero te lo pongo en lenguaje natural y luego lo pasas a PHP
Repetir de 1 a 20
Tira dado
Si es 1: Tirada1++;
Si es 2: Tirada2++;
Si es 3: Tirada3++;
Si es 4: Tirada4++;
Si es 5: Tirada5++;
Si es 6: Tirada6++;
Fin Repetir
Imprimir Tirada1;
Imprimir Tirada2;
Imprimir Tirada3;
Imprimir Tirada4;
Imprimir Tirada5;
Imprimir Tirada6;
Con eso tendrías el código listo, se podría optimizar como comenté anteriormente utilizando un array, pero entiendo que aún no has manejado listas ni tablas, así que tampoco quiero liarte más.
A ver si así lo entiendes mejor 😉