Ir ao conteúdo

Posts recomendados

Postado
Tenho um site de sorteio de cargos para um jogo RPG. Eu uso inputs para criar uma arraylist de nomes que é mandada através do método .POST para o arquivo PHP, então, o shuffle passa a sortear, depois o print mostra tudo. Exemplo: Bruxo: Lucas
O problema é que muitas pessoas vem reclamando que pegam o mesmo cargo toda hora! Eu não sei o que fazer, até por que não sou experiente nessa linguagem.
Já pensei em fazer que o shuffle sorteie duas vezes, não só uma, mas eu não consegui fazer a façanha. Também tentei colocar a ordem dos valores embaralhadas, mas continua na mesma. Por favor, me ajudem?!
 
Conheçam o site para melhor entendimento: guerrascivis.mygamesonline.org -ou- guerrascivis.freeoda.com
 
PS: Costuma repetir o cargo de quem coloca o nome no input sete ou seis.
 
 
Código PHP:
 
<?php     $pessoas = isset($_POST['name']) ? $_POST['name'] : null;     shuffle($pessoas);     print "Juiz: " . $pessoas[11];    print " / Policial: " . $pessoas[7];    print " / Anjo: " . $pessoas[10] . "<br><br>";    print "Assassino: " . $pessoas[9];    print " / Aprendiz: " . $pessoas[8];    print " / Silence: " . $pessoas[5]."<br><br>";    print "Paralisador: " . $pessoas[4] . " " . "<br>";    print "/Paparazzi: " . $pessoas[6] . " " . "<br>";    print "/Bruxo: " . $pessoas[0] . " " . "<br>";    print "/Detetive: " . $pessoas[2] . " " . "<br>";    print "/Aldeao: " . $pessoas[3] . " " . "<br>";    print "/Espirito: " . $pessoas[1] . " " . "<br><br>";    print "/Fada: " . $pessoas[1] . " ";    print "/Escudeiro: " . $pessoas[1] . " " . "<br>";    print "/Psicopata: " . $pessoas[0] . " ";    print "/Demonio: " . $pessoas[0] . "<br><br>";    ?>

 


Pensei em fazer com que ele lembre qual foi a ordem dos números dos valores da rodada anterior, se ao sortear algum número repetir, ele resorteia até não ocorrer novamente. Mas, como eu disse, não tenho experiência. 

 

Como eu faria de tal forma?

  • Moderador
Postado

@João Lucas_757651

 

Não sei se entendi... mas, você está repetindo os índices ali.. por isso ele mostra repetido. 

veja bem, você armazena o valores enviados pelo formulário em um array chamado $pessoas.

Como são 12 valores, o índice do array é de 0 a 11.  

 

Os 4 últimos prints você repete os índices. então ele sempre vai mostrar o mesmo valor daquele índice duplicado.

No caso o  print "/Espirito: " . $pessoas[1]  e print "/Escudeiro: " . $pessoas[1] 

 

 

O que precisas fazer é só acrescentar mais 4 campos inputs no formulário... e enviar 16 nomes ao invés de 12.

e no php você atribui em cada linha um índice diferente.  assim eles não se repetem.

 

fico no aguardo.

Postado

@João Lucas_757651

 

Não sei se entendi... mas, você está repetindo os índices ali.. por isso ele mostra repetido. 

veja bem, você armazena o valores enviados pelo formulário em um array chamado $pessoas.

Como são 12 valores, o índice do array é de 0 a 11.  

 

Os 4 últimos prints você repete os índices. então ele sempre vai mostrar o mesmo valor daquele índice duplicado.

No caso o  print "/Espirito: " . $pessoas[1]  e print "/Escudeiro: " . $pessoas[1]

 

 

O que precisas fazer é só acrescentar mais 4 campos inputs no formulário... e enviar 16 nomes ao invés de 12.

e no php você atribui em cada linha um índice diferente.  assim eles não se repetem.

 

fico no aguardo.

 

Sim , você está certo, mas isto é proposicional. Eu me refiro a quando uma pessoa fica pegando só policial, toda vez que clica em sortear. Tipo um bug!

 

Pensei em fazer com que ele lembre qual foi a ordem dos valores da rodada anterior. Se ao sortear algum valor repetir a posição, ele resorteia até não ocorrer novamente. Mas, como eu disse, não tenho experiência. 

 

Como eu faria de tal forma?

  • Moderador
Postado

@João Lucas_757651

 

Estranho... não presenciei esse bug(ainda).. testei diversas vezes com os mesmos nomes... sempre ficaram em diferentes posições.

Claro que uma hora... eles vão se repetir...não tem como nunca repetir se são só 12 valores.

 

O que podes de repente tentar fazer é substituir um índice pelo outro caso eles forem iguais.

 

Por exemplo:  http://stackoverflow.com/questions/8668826/search-and-replace-value-in-php-array

 

Nunca tentei fazer isso.. então não sei.. mas  é por ai.. 

 

 

Minha opinião pessoal, acho que é bem comum esse tipo de coisa em jogos que são sorteados...  a vezes  a pessoa pega a mesma posição várias vezes.. seguidas ou não.  

O problema é mesmo  quando SEMPRE uma pessoa em específico pega uma posição fixa.

Agora se o cara tenta por exemplo 5 vezes...  das 5 vezes 3 ele pegou a posição policial...  foi pura má sorte dele... pois os elementos são randomizados com a função suffle() que é a função utilizada para randomizar e embaralhar mais de um elemento em um vetor.

Postado

Sim, concordo

 

@João Lucas_757651

 

Estranho... não presenciei esse bug(ainda).. testei diversas vezes com os mesmos nomes... sempre ficaram em diferentes posições.

Claro que uma hora... eles vão se repetir...não tem como nunca repetir se são só 12 valores.

 

O que podes de repente tentar fazer é substituir um índice pelo outro caso eles forem iguais.

 

Por exemplo:  http://stackoverflow.com/questions/8668826/search-and-replace-value-in-php-array

 

Nunca tentei fazer isso.. então não sei.. mas  é por ai.. 

 

 

Minha opinião pessoal, acho que é bem comum esse tipo de coisa em jogos que são sorteados...  a vezes  a pessoa pega a mesma posição várias vezes.. seguidas ou não.  

O problema é mesmo  quando SEMPRE uma pessoa em específico pega uma posição fixa.

Agora se o cara tenta por exemplo 5 vezes...  das 5 vezes 3 ele pegou a posição policial...  foi pura má sorte dele... pois os elementos são randomizados com a função suffle() que é a função utilizada para randomizar e embaralhar mais de um elemento em um vetor.

 

 

Sim, é pura randomização! Mas, uma hora ou outra pode cair igual. O que acontece é que tem gente que pegar quatro vezes, três, ai consegue pegar um diferente, depois volta a pegar mais quatro vezes... Isso é muito intrigante! Até por que sempre é a mesma pessoa, aqui...

  • Moderador
Postado

@João Lucas_757651

 

Eu entendo que seja intrigante.. rsrs

 

De repente o que poderia tentar é usar o media storage  do html5 com javascript... depois na próxima vez que gerar,  comparar com o armazenado.  se for igual altera o valor por outro, se for diferente mostra direto.

Nunca usei o media storage.. então não posso dizer com certeza se funciona ou não.

 

 

Material de referência:

http://www.w3schools.com/html/html5_webstorage.asp

http://www.devmedia.com.br/html5-storage-armazenando-dados-com-html5/28797

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!