Ir para conteúdo

POWERED BY:

Arquivado

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

Cífro13

Diário de um Estudante de PHP

Recommended Posts

Bom Galera a idéia é lançar nossas dúvidas e descobertas.

 

vou começar contribuindo com a formula da coca-cola, um simples script que vai pegar os valores que você colocar nos inputs texts e gerar valores randômicos.

<html>

<head><title>Rolar dado de RPG</title></head>

<body>
<form name='cadastro' method='get'>
<table>
<tr><td>Quantidade</td><td><input type='text'name='quantia'size='2'></td></tr>
<tr><td>Lados</td><td><input type='text'name='faces' size='2'></td></tr>
<tr><td><input type='submit' value='Rolar'></td></tr>
</table>
</form>

<?php
//O method 'get' foi usado no form 'cadastrado' e as variaveis
//$lados e $qtd vai receber esses valores.
$lados = $_GET[faces];
$qtd = $_GET[quantia];
//criei uma array vazia para no próximo passo receber os valores
$arr = array();

/*o comando while (vamos chamar de faça enquanto) vai executar
um lop enquanto $qtd for maior que 0 (zero)
*/
while($qtd>0){
/*rand gera e escrever na tela números aleatórios do, nesse caso números iagual
ou maiores que 1 e menores ou igual ao número de lados definidos pelo usuário*/
echo $roll = rand(1,$lados);echo "</br>";
//quando ponho o a variavel correspondente a array com  abre e fecha colchetes '[]' eu insiro
//um elemento nele, nesse caso o valor gerado randomicamente
$arr[]=$roll;
//agora eu subtraio 1 da quantidade, isso é que vai findar o lop já que a variavel
//$qtd vai ser atualizada, e quando ela atingir zero ela encerra o ciclo
$qtd--;}

//declarei mais uma variavel com o nome de $dice e atribuir a soma do conteúdo da array $arr a ele
// array_sum() soma o conteúdo de uma array
$dice = array_sum($arr);
//pedi pra imprimir "Total: " mais $dice q é o total dos elementos de $arr
echo "Total: ";
print_r ($dice);
?>
</body>
</html>

 

basta copiar e colar num bloco de notas salvar como a extensão .php e vai funfar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

funciona tbm Sr hehehe.

 

pessoal queria evoluir essa idéia para algo assim no meio do post, eu possa colocar algo como [dice]2d12[/dice] e ele role 2 dados de 12. vou iniciar a pesquisa, se alguém souber como fazer postaew.

Compartilhar este post


Link para o post
Compartilhar em outros sites

desculpe se eu me perdi, mas qual a real função desse código ??

 

isso é um rolador de dados muito usado nos sistemas de RPG,

ao executar esse script vai aparece duas caixas

de texto um para a quantodade de dados a ser rolado e a outra para

a quantidade de faces do dado,

ao rolar ele vai exibir cada dado rolado e o total da rolagem

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não é complicado, porém, você quer fazer isso com imagem ou simples?

 

 

simples msm, como normalmente isso acontece em narrativas, imprimindo apenas o resultado tá joia.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Usa a função sleep();, ele dá um delay no código.

 

<?php

echo "Rodando dado 1 <br />";
 sleep(2); //dá um delay de 2 segundos
echo rand(1,2)."<br />";
 sleep(2); //outro delay de 2 segundos
echo "Rodando dado 2 <br />";
 sleep(3); //delay de 3 segundos
echo rand(1,6);

?>

 

Depois, é só ir encrementando o seu código.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Usa a função sleep();, ele dá um delay no código.

 

<?php

echo "Rodando dado 1 <br />";
 sleep(2); //dá um delay de 2 segundos
echo rand(1,2)."<br />";
 sleep(2); //outro delay de 2 segundos
echo "Rodando dado 2 <br />";
 sleep(3); //delay de 3 segundos
echo rand(1,6);

?>

 

Depois, é só ir encrementando o seu código.

 

<?php
//vai imprimir esse valor
echo "Rodando dado 1 <br />";
//aguardar 2 segundos
 sleep(2); //dá um delay de 2 segundos
//vai imprimir esse valor
echo rand(1,2)."<br />";
//aguardar 2 segundos
 sleep(2); //outro delay de 2 segundos
//vai imprimir esse valor
echo "Rodando dado 2 <br />";
//aguardar 3 segundos
 sleep(3); //delay de 3 segundos
//vai imprimir esse valor
echo rand(1,6);

?>

 

acredito que não me fiz entender, vou explicar

imagine uma área de texto num fórum, onde o cara vai responder a uma situação, como estamos fazendo aqui.

então ele vai colocar essa tag [dice][/dice] e dentro dela os valores, por exemplo 4d5, a quantidade de

dados e de lados do dado não é definido pelo desenvolvedor do script, mas pelo usuário.

no msm post o cara pode por:

[dice]1d5[/dice]

[dice]4d20[/dice]

[dice]6d4[/dice]

 

tipo:

xdy

onde x = ao número de lançamentos de dados

d = é um separador

y = ao número de faces do dado

 

e cada um deve rolar seus valore ex:

[dice]1d5[/dice] = 3

[dice]4d20[/dice] = 16+3+2+9 =30

[dice]6d4[/dice] = 3+4+2+4+1+3 = 17

Compartilhar este post


Link para o post
Compartilhar em outros sites

beleza Sr Back-on, fui a luta e cheguei a fórmula da coca-cola com limão.

 

<html>

<head><title>code</title></head>

<body>
<form name='teste' method='get'>
<table>
<tr><td><textarea cols='32' rows='4' name='mensagem'></textarea></td></tr>
<tr><td><input type='submit' value='Postar>>'></td></tr>
</table>
</form>

<?php

//criei um arrey em que as chaves eram :) e :(
//seus valores são feliz e triste
$arr = array(':)'=>'feliz',':('=>'triste');

//a variavel seguinte va extrair apenas as chaves
//eainda em $GLOBALS() vou definilá como super global
//isso fará com que ela seja reconhecida em todo o programa
$chaves = array_keys($GLOBALS['arr']);

//fiz o mesmo com os valores
$valores = array_values($GLOBALS['arr']);


//peguei a mensagem que eu postaria na área de texto
$mensagem = $_GET[mensagem];

//str_replace funciona assim(a grosso modo) ler o texto verifica se existem chaves especiais
//se encontrar substitui pelo valor correspondente
//a ordem é chave>valor>mensgaem
$saida = str_replace($chaves,$valores,$mensagem);

//imprime o valor de saida que já possui as substituições de chaves por valores
echo $saida;

?>
</body>
</html>

jhone diz: - E os dados cífro?

cífro13 diz: -Calma que eu chego nos dados, me dá um tempo jhone

_________

 

Cífro13: -Jhone, estou editando esse post pq estava aqui pensando neh.

No bbcode eu posso criar delimitadores assim como expliquei pra galera no texto acima neh?!

Jhone: -Sim, e daew?

Cífro13: -pensei em colocar os roladores como [dice]xdy[/dice], mas não estou conseguindo fazer isso pq

tenho que explicar pro php que [dice]até o 'd', é a quantidade de dados que eu quero rolar,

e que do d até o[/dice] são as faces dos dados.

 

mas se eu usar o str_replace e diser q o "d" é um delimitador, se eu escrever eduardo por exemplo

o que ele vai imprimir, e se o usuário casquinha q nem eu escrever "d junior" ao inves de "de junior"

o que vai acontecer?

 

Jhone: - Poxa cara, eu só sei o que você sabe então vou pesquisar com você e vamos achar a solução vlw?!

Cífro13: - Possa crer, e como se não fosse pra o suficiente ainda tenho q descobrir como escrever em uma cx de texto e ele reconhecer os enters como parágrafo, tô avaliando a idéia do nl2br, mas acho q num vai rolar.

 

Jhone: -Calma vei uma coisa de cada vez, calma, vamos aos dados primeiro, pq a outra questão me parece mais simples, eu vi uns resultado legais num fórum aew pra estas questões, e verdade que num lembro onde, mas vamo com calma.

 

Cífro13: -ok man vamo lá então

Compartilhar este post


Link para o post
Compartilhar em outros sites

beleza Sr Back-on, fui a luta e cheguei a fórmula da coca-cola com limão.

 

<html>

<head><title>code</title></head>

<body>
<form name='teste' method='get'>
<table>
<tr><td><textarea cols='32' rows='4' name='mensagem'></textarea></td></tr>
<tr><td><input type='submit' value='Postar>>'></td></tr>
</table>
</form>

<?php

//criei um arrey em que as chaves eram :) e :(
//seus valores são feliz e triste
$arr = array(':)'=>'feliz',':('=>'triste');

//a variavel seguinte va extrair apenas as chaves
//eainda em $GLOBALS() vou definilá como super global
//isso fará com que ela seja reconhecida em todo o programa
$chaves = array_keys($GLOBALS['arr']);

//fiz o mesmo com os valores
$valores = array_values($GLOBALS['arr']);


//peguei a mensagem que eu postaria na área de texto
$mensagem = $_GET[mensagem];

//str_replace funciona assim(a grosso modo) ler o texto verifica se existem chaves especiais
//se encontrar substitui pelo valor correspondente
//a ordem é chave>valor>mensgaem
$saida = str_replace($chaves,$valores,$mensagem);

//imprime o valor de saida que já possui as substituições de chaves por valores
echo $saida;

?>
</body>
</html>

jhone diz: - E os dados cífro?

cífro13 diz: -Calma que eu chego nos dados, me dá um tempo jhone

_________

 

Cífro13: -Jhone, estou editando esse post pq estava aqui pensando neh.

No bbcode eu posso criar delimitadores assim como expliquei pra galera no texto acima neh?!

Jhone: -Sim, e daew?

Cífro13: -pensei em colocar os roladores como [dice]xdy[/dice], mas não estou conseguindo fazer isso pq

tenho que explicar pro php que [dice]até o 'd', é a quantidade de dados que eu quero rolar,

e que do d até o[/dice] são as faces dos dados.

 

mas se eu usar o str_replace e diser q o "d" é um delimitador, se eu escrever eduardo por exemplo

o que ele vai imprimir, e se o usuário casquinha q nem eu escrever "d junior" ao inves de "de junior"

o que vai acontecer?

 

Jhone: - Poxa cara, eu só sei o que você sabe então vou pesquisar com você e vamos achar a solução vlw?!

Cífro13: - Possa crer, e como se não fosse pra o suficiente ainda tenho q descobrir como escrever em uma cx de texto e ele reconhecer os enters como parágrafo, tô avaliando a idéia do nl2br, mas acho q num vai rolar.

 

Jhone: -Calma vei uma coisa de cada vez, calma, vamos aos dados primeiro, pq a outra questão me parece mais simples, eu vi uns resultado legais num fórum aew pra estas questões, e verdade que num lembro onde, mas vamo com calma.

 

Cífro13: -ok man vamo lá então

 

Desculpa o flod mas naum apareceu a opção para editar o post

 

Cífro: - olha a evolução para separar

 

<?php error_reporting(E_ALL);


$msg= "[dice]3d5[/dice]";
$x=str_word_count($msg,1,1234567890);//separa todas as palavras e palavrascom numeros e armazena em strings
$dice = $x[1]; //o valor 1 é que possui o XdY
$arr = explode("d",$dice);//transforma o d em separador e armazena os pedaços em uma array

$qtd = $arr[0];//recebe o elemento 0
$lados = $arr[1];//recebe o elemento 1
//daki vcs ja sabem
while($qtd>0){
echo $roll = rand(1,$lados);echo "</br>";
$arr[]=$roll;
$qtd--;}
$dice = array_sum($arr);
echo "Total: ";
print_r ($dice);




?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amo BBCODE. Só não entendi a tag:

xdy

onde x = ao número de lançamentos de dados

d = é um separador

y = ao número de faces do dado

 

Bem, gerar um numero randomico é facil. Tem isso:

echo uniqid(time()); = numeros e letras

echo rand(); = numeros

echo rand(1, 10); = numeros de 1 a 10

$letras = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'); echo array_rand($letras); = letras.

 

Já o bbcode:

'/\[dice\]([0-9]{1, 3})d([0-9]{1, 3})\[\/dice\]/is'

Ai da o replace por o que você quiser.

exemplo:

$x = '$1'

$y = '$2'

 

$texto = "[dice]TANTO FAZ[/dice]";

$texto = preg_replace('/\[dice\]([0-9]{1, 3})d([0-9]{1, 3})\[\/dice\]/is', '<span class="dado">'.uniqid(time()).'</span>', $texto);

 

// FIZ A MINHA FORMULA DA COCA-COLA

Compartilhar este post


Link para o post
Compartilhar em outros sites

já que a brincadeira e dice de jogo

cria uma porcentagem, para a chance que o cara tem de

receber tal item na rolagem, por exemplo

<?php
   $Items = Array( 'item1' => '10%',  'item2' => '2%' );
   ...

Faz o algoritmo pra o cara receber tal item de acordo com a porcentagem

no array, ao der a rolagem, no caso o 'dice'

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amo BBCODE. Só não entendi a tag:

xdy

onde x = ao número de lançamentos de dados

d = é um separador

y = ao número de faces do dado

 

Bem, gerar um numero randomico é facil. Tem isso:

echo uniqid(time()); = numeros e letras

echo rand(); = numeros

echo rand(1, 10); = numeros de 1 a 10

$letras = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'); echo array_rand($letras); = letras.

 

Já o bbcode:

'/\[dice\]([0-9]{1, 3})d([0-9]{1, 3})\[\/dice\]/is'

Ai da o replace por o que você quiser.

exemplo:

$x = '$1'

$y = '$2'

 

$texto = "[dice]TANTO FAZ[/dice]";

$texto = preg_replace('/\[dice\]([0-9]{1, 3})d([0-9]{1, 3})\[\/dice\]/is', '<span class="dado">'.uniqid(time()).'</span>', $texto);

 

// FIZ A MINHA FORMULA DA COCA-COLA

 

 

$arr = explode("d",$dice);

//transforma o d em separador e armazena os pedaços em uma array

no caso da função explode, você determina um caracter para separar os texto, tipo uma vírgula, um traço, espaço ou um underline, eu escolhi o "d" isso faz eu pegar os valores exceto o "d" e mais q isso eu divido em antes do "d" e depois do "d".

 

 

<?php error_reporting (E_ALL ^ E_NOTICE);
$txt = "o ataque causou [dice]1d3[/dice] e [dice][/dice]";
$extrai = '/\[dice\]([0-9]{1,3})d([0-9]{1,3})\[\/dice\]/';
$func = preg_match($extrai,$txt,$matches);

print_r($matches[0]);echo "<br>";


$msg= $matches[0];
$x=str_word_count($msg,1,1234567890);//separa todas as palavras e palavrascom numeros e armazena em strings
$dice = $x[1]; //o valor 1 é que possui o XdY
$arr = explode("d",$dice);//transforma o d em separador e armazena os pedaços em uma array

$qtd = $arr[0];//recebe o elemento 0
$lados = $arr[1];//recebe o elemento 1
//daki vcs ja sabem
while($qtd>0){
echo $roll = rand(1,$lados);echo "</br>";
$arr[]=$roll;
$qtd--;}
$dice = array_sum($arr);
echo "Total: ";
print_r ($dice);

?>

 

:huh: Cífro13: -pequeno problema, se você mandar imprimir a array $matches tipo print_r(matches);

vai aparecer 0=>1d3,1=>1,2=>3 então o array_sum acaba dando o valor randômico +1+3.

não sei se errei no código, mas tentei armazenar o elemento "0" dentro de uma outra array mas não obtive exito ainda

;) Jhone: -Calma garotão vamo lá, estamos quase chegando.

 

 

 

Andrey Knupp

ainda vou avançar para os modificadores. no rpg existe um adicional de modificação nos testes, tipo uma arma msm q te dá mais cinco(5), ficaria assim:

 

[dice]2d5+1[/dice]

resultado 4+1=5

2+1=3

total 5+3=8

 

 

Jhone vejaew como estáo código, mas o q preciso agora é que ele substitua o comando pelo valor, assim como fizemos com o :) por feliz e o :( pelo triste

 

<html>

<head><title>Projeto RPG Browser</title></head>

<body>

<p><h1>Alteração do código por simbolos</h1></p>
Simbolos dispoíveis: :) e :(
<form name='teste' method='get'>
<table>
<tr><td><textarea cols='32' rows='4' name='mensagem'></textarea></td></tr>
<tr><td><input type='submit' value='Postar>>'></td></tr>
</table>
</form>

<?php
error_reporting(E_ALL);
//criei um arrey em que as chaves eram :) e :(
//seu valores são feliz e triste
$arr = array(':)'=>"<img src='emo\feliz.gif'>",':('=>"<img src='emo\mau.gif'>");

//a variavel seguinte va extrair apenas as chaves
//eainda em $GLOBALS() vou definilá como super global
//isso fará com que ela seja reconhecida em todo o programa
$chaves = array_keys($GLOBALS['arr']);

//fiz o mesmo com os valores
$valores = array_values($GLOBALS['arr']);


//peguei a mensagem que eu postaria na área de texto
$mensagem = $_GET[mensagem];
$extrai = '/\[dice\]([0-9]{1,3})d([0-9]{1,3})\[\/dice\]/';
$func = preg_match($extrai,$mensagem,$matches);




$msg= $matches[0];

//separa todas as palavras e palavrascom numeros e armazena em strings
$x=str_word_count($msg,1,1234567890);

//o valor 1 é que possui o XdY
$dice = $x[1]; 

//transforma o d em separador e armazena os pedaços em uma array
$arr = explode("d",$dice);

//recebe o elemento 0
$qtd = $arr[0];

//recebe o elemento 1
$lados = $arr[1];

while($qtd>0){
echo $roll = rand(1,$lados);echo "</br>";
$arr[]=$roll;
$qtd--;}
$dice = array_sum($arr);


//str_replace funciona assim(a grosso modo) ler o texto verifica se existem chaves especiais
//se encontrar substitui pelo valor correspondente
//a ordem é chave>valor>mensgaem
$saida = str_replace($chaves,$valores,$mensagem);

//imprime o valor de saida que já possui as substituições de chaves por valores
echo $saida;

?>
</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.