Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

marcelobbt

Jogar dados

Recommended Posts

Estava tentando montar um sistema de lançar dados, mas está dando erro na hora de imprimir os resultados na tela.

 

Quando imprimo em seguida ao ser criado sai os resultados perfeitamente.

Se crio um for em outro ponto do código ele só gera o último valor do vetor.

 

<?php
	  //valores para os dados
	  $qtd = 4;
	  $face = 20;
	  
	  $a = 1;
	  echo "Resultados: ";
	  
	  for ($i=1;$i<=$qtd;$i++) {
    		$resultado['$a']= mt_rand(1, $face);
		echo $resultado['$a'],", "; //resultado funciona aqui.
		$a = $a +1;
	  }
	  echo "<br>";
	  $a=1;
	  
	  For ($i=1;$i<=$qtd;$i++) { 	
		echo $resultado['$a'],", "; //aqui aparece o mesmo valor para todos os resultados
		$a++;
	  }	  
?>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

<?php

 

$lados = 20;

$dados = 4;

 

while($dados--) {

echo mt_rand(1, $lados), '<br />';

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso é tranquilo.

Mas o que eu quero é guardar os resultados num vetor para poder utilizá-los posteriormente.

 

Aí que estou errando em algum ponto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu já havia tentado isso, mas aí da o seguinte erro:

 

Notice: Undefined offset: 1 in C:\...\teste.php on line 18
,
Notice: Undefined offset: 2 in C:\...\teste.php on line 18
,
Notice: Undefined offset: 3 in C:\...\teste.php on line 18
,
Notice: Undefined offset: 4 in C:\...\teste.php on line 18

 

A linha 18 é a que possui o comentário, conforme abaixo:

 

For ($i=1;$i<=$qtd;$i++) { 	
		echo $resultado[$a],", "; //aqui aparece o mesmo valor para todos os resultados
		$a++;
	  }	  

Compartilhar este post


Link para o post
Compartilhar em outros sites

...

<?php

$lados = 20;
$dados = 4;
$arr = Array();

while($dados--) {
    $arr[] = mt_rand(1, $lados);
}
var_dump($arr);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado!

 

Consegui resolver.

 

Segue código final para quem quiser usar:

 

<?php
 //valores para os dados
 $qtd = 4; //número de dados
 $face = 20; //quantidade de faces em cada dado.
 $resultado = Array();
 $a = 1;
 echo "Resultados: ";
 
 $a = $qtd;
 while($a--) {
$resultado[] = mt_rand(1, $face);
 }
 
 $a=$qtd;
 
 
 While ($a--) {
  echo $resultado[$a],", "; //aqui saem os resultados na tela
 }  
?>

 

Em adicional, segue um código de lançamento de dados com formulário para inserir a quantidade de dados e o número de faces de cada dado. Simples mas funcional.

 

Dados.php

<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
		<title>Sistema de Lançar Dados</title>	
	</head>
 <BODY>
  <table ALIGN="CENTER" BORDER="0" WIDTH="80%">
   <tr>
    <td>
     <font FACE="Verdana" COLOR="#000000" SIZE="3">
      <p> </p>
	  <form method="POST" name="dados"> <!--formulário para entrar valores das variáveis-->
	  	<p>Defina o número de dados: <input maxlength="2" name="qtd" id="qtd"/></p>
		<p>Defina o número de faces: <input maxlength="2" name="face" id="face"/></p>
		<p><input type="submit" name="Lançar dados!" value="jogar" id="jogar"/></p>
	  </form>
	  <?php
	  	$qtd = 0;
		$face = 0;
		//recebe as variáveis do form
		$qtd = isset($_POST['qtd']) ? $_POST['qtd'] :''; //isset evita erro caso o valor seja nulo.
		$face = isset($_POST['face']) ?$_POST['face']:''; //isset evita erro caso o valor seja nulo.
		//checa se foi preenchido o form
		if ($qtd<>0 and $face<>0) {
			echo "Resultado: ";
			for ($i=1;$i<=$qtd;$i++) {
    			echo mt_rand(1, $face),", ";
			}	
		} else {
			echo "<b>Preencha a quantidade de dados e o número de faces antes de lançar os dados.</b>";
		}
		

	  ?>
	 </font>
    </td>
   </tr>
  </table>
 </BODY>
</HTML>

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.