Sorteando Valores Diferentes Para Várias Variáveis

O sistema a seguir é útil para quem quer sortear valores aleatórios para várias variáveis sem que os valores delas se repitam. Com isso é possível fazer sistemas para embaralhar Card Games e coisas do tipo.
(É recomendável que saiba o básico sobre variáveis, labels, switches e condições.)
Primeiro, crie um evento. Ele pode ser ativado da forma que você quiser, depende de que sistema você vai acoplar a isso. No exemplo a seguir, o evento iniciará em processo paralelo.
*

Parte 1: Organizando as variáveis

Para que fique tudo organizado e que você não se confunda na hora de programar o sistema, é altamente recomendado nomear as variáveis.
Repare nos nomes: as variáveis Valor e Aux irão nos auxiliar no sistema, enquantonum1num2num3num4 e num5 são as variáveis que receberão os valores aleatórios e diferentes.
*

Parte 2: Os primeiros comandos

Agora vamos começar a programar: selecione o comando de evento Opções de Variável, selecione a variável Valor, escolha Substituir e coloque o valor 1 emConstante, depois clique em OK.
Agora vamos criar uma Label, nomeando-a como quiser:
Nossos comandos de eventos já estão mais ou menos assim:
Agora abra mais uma vez o comando Opções de Variável e selecione a variável Aux, escolha Substituir colocando Aleatório de 1 até 5. Vai ficar assim:
Depois disso, vamos adicionar um comando muito importante para que o sistema fique funcional. Escolha o comando Esperar e coloque 1 frame:
E os seus comandos devem ter ficado como os da imagem abaixo:
*

Parte 3: Criando as condições

Agora crie uma Condição, selecione a opção Variável e escolha a variável Aux. Selecione a opção Constante, coloque o valor 1, e embaixo escolha a opção Igual a. Se quiser, desmarque a opção para adicionar exceção, assim:
Agora crie outra condição e faça nela o mesmo que a outra, só que dessa vez coloque a Constante igual a 2.
Repita o processo criando mais 3 condições, uma com a constante igual a 3, outra com ela igual a 4 e outra com ela igual a 5. Feito isso vamos ter 5 condições e seus comandos vão ficar assim:
*

Parte 4: Criando mais condições

Agora vamos criar uma condição dentro da nossa primeira condição (que fizermos anteriormente). Escolha o comando Variável, selecione a variável num1, escolha a opção Constante, coloque zero no valor e depois escolha a opção Igual a. Dessa vez, vamos deixar marcada a opção de adicionar exceção, ficando assim:
Dê OK e abra novamente o comando Opções de variável, selecione a variável num1, escolha a opção Substituir, depois clique na opção Variável e selecione a variávelValor. Ficará assim:
Outra vez, iremos abrir o comando Opções de Variáveis. Selecione a variável Valor, escolha a opção “+”  e depois coloque 1 como valor da Constante.
Agora vamos usar o comando Ir para Label. Digite lá o nome que você escolheu anteriormente para aquela que criou.
Copie o mesmo comando Ir para Label que criamos aqui e coloque-o também naExceção da condição que criamos no início da Parte 4 deste tutorial.
Iremos agora repetir esse processo para as outras 4 condições que criamos na Parte 3. Criamos então uma condição dentro da segunda condição que criamos na Parte 3, só que agora ao invés de selecionar a variável num1, vamos fazer com a num2. Na terceira, a num3, e assim por diante. Veja como vai ficando:
Repita o processo para todas as condições.
*

Parte 5: Toques finais

Agora vamos criar uma condição em cima da primeira que há em sua aba de eventos. Escolha a opção Variável, selecione a variável Valor, escolha Constante e atribua 5 a ela. Embaixo, selecione Maior.
Clique em OK e depois crie uma Switch Local (dentro da condição) que sirva para mudar a página do evento. Seus comandos ficarão assim:
O sistema está pronto!
*

Parte 6: Dicas

Para testar se o sistema está programado corretamente, vamos criar um NPC e usar o comando Mostrar Mensagem para exibir os valores das variáveis.
Agora é só rodar o jogo e ver se está tudo certo:
*

Entendeu como funciona?

Caso não tenha entendido a lógica do sistema, segue a explicação. Primeiro vemos que a variável Valor tem definido o valor 1. Após isso há uma Label e depois um sorteio aleatório da variável Aux que vai de 1 até 5. Dependendo do valor dela, o evento irá executar uma das 5 condições de baixo, e depois ele vai verificar, uma por uma, se as variáveis num1num2, etc, são iguais a zero. Se alguma for, sabemos que não foi sorteado nenhum valor para ela, então os comandos de dentro da condição são executados. Ela então vai receber o valor da variável Valor, que ali é igual a 1, no momento. Além disso, a variável Valor recebe +1 em sua constante.
Em seguida, o sistema volta para a Label, e perceba que a variável Valor já é igual a 2. Uma das variáveis “num” já possui o valor 1, e portanto vem a repetição do evento, que acontece por conta da Label. Mas, dessa vez, estaremos sorteando uma variável para receber o valor 2.
Caso uma das variáveis já possua um número, ao invés de executar o que tem na condição, irá executar a exceção, que faz simplesmente voltar para a Label e repetir tudo até que encontre uma variável que não tenha nenhum valor até o momento.
Depois que todas as variáveis receberem seus devidos valores, a variável Valor terá uma constante maior que 5, o que significa que será executada uma condição que vai mudar a aba do evento, fazendo-o parar.
*

Perguntas frequentes

1 – Se eu quiser sortear outros valores além de 1 a 5, posso?
Claro que sim, basta mudar a sorteio aleatório que é feito com a variável Aux.
2 – E se eu quiser que o sorteio seja de 0 a 4, e não de 0 a 5? Vai dar erro se eu apenas mudar o sorteio aleatório do Aux.É simples: no final do evento, na condição que faz o evento parar, faça a variável que recebe o valor 5 receber o valor zero.

Categories:

Leave a Reply