Página 1 de 1

[Resolvido] Aleatório só vai até 16

Enviado: Sex Jun 24, 2016 7:01 pm
por Dark_Tobito
Fala galera,beleza,eu queria que vocês me ajudarem em uma coisa,bom,vamos lá,eu criei um jogo,daí,criei um botam para quando clicar,escolher os inimigos,ta,até ai tudo bem,o código era o siguinte 

Código: Selecionar todos

global.inimigo1 = choose (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16)
ta,até aí,tudo bem,daí criei mais um inimigo,quando fui fazer a escolha aleatória,botei  17,e deu erro 

Código: Selecionar todos

___________________________________________
FATAL ERROR in
action number 2
of Mouse Event for Left Button
for object Missao:

COMPILATION ERROR in code action
Error in code at line 1:
   global.inimigo1 = choose (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17)
                                                                     ^
at position 68: Wrong number of arguments to function or script.

se me ajuarem,eu irei agradeçer muito.

Re: Aleatório só vai até 16

Enviado: Sex Jun 24, 2016 7:09 pm
por Dust
Cara eu nunca tentei usar um choose acima de 3 :|
Mas, não sei se funciona experimente fazer o seguinte

Código: Selecionar todos

global.inimigo1 = choose (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16) or choose (17,18,19,20,21...)
// ou até mesmo
global.inimigo1 = choose (choose (1),choose (2), choose (3) )
Pode ser que de certo ;)
Flw!

Re: Aleatório só vai até 16

Enviado: Sex Jun 24, 2016 7:11 pm
por thyago
 . Use irandom_range assim seu código vai ficar bem mais flexivel, se for apenas numero mesmo

Código: Selecionar todos

global.inimigo1 = irandom_range(1, 17) //pode aumentar acho que até 32000.

 Caso não seja numero e sim os objetos, crie uma array com os inimigos dessa maneira

Código: Selecionar todos

inimigo[1] = inimigo1;
inimigo[2] = inimigo2;

 . E assim por diante, colocando todos na array, depois use o irandom_range

Código: Selecionar todos

global.inimigo1 = inimigo[irandom_range(1,17)];

Re: Aleatório só vai até 16

Enviado: Sex Jun 24, 2016 7:35 pm
por Dark_Tobito
vlw!!!!!

Re: Aleatório só vai até 16

Enviado: Sex Jun 24, 2016 7:40 pm
por gabrielsch
Para complementar as respostas existe uma técnica que é adicionar um choose dentro de um choose, assim:
abc = choose(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, choose(15, 16, 17, 18, ...))
Edit: Essa técnica tem um problema de probabilidade que pode ser explicado nesse tópico.

Re: [Resolvido] Aleatório só vai até 16

Enviado: Sex Jun 24, 2016 9:23 pm
por Markito
Outro adendo, em GML todas as funções só suportam um máximo de 16 argumentos. Ter esse valor em mente cai mais em conta em funções de argumentos variáveis, como choose, mas o GM também vai dar wrong number of arguments nas funções com número de argumentos menor que 16, pois os argumentos foram declarados no banco de funções.