Obrigado por visitar a The Game Makers Brasil 😁 Use o fórum de Dúvidas para fazer perguntas. Se está em busca de aprender dê uma olhada nos tutoriais.

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

Perguntas? A comunidade te ajuda a resolver.
Avatar do usuário
Dark_Tobito
Novato
Novato
Reações: 0
Mensagens: 5

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

Mensagem por Dark_Tobito » Sex Jun 24, 2016 7:01 pm

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.

Avatar do usuário
Dust
Membro
Membro
Reações: 0
Mensagens: 109
Localização: Santa Catarina

Re: Aleatório só vai até 16

Mensagem por Dust » Sex Jun 24, 2016 7:09 pm

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!

Avatar do usuário
thyago
Membro
Membro
Reações: 0
Mensagens: 60

Re: Aleatório só vai até 16

Mensagem por thyago » Sex Jun 24, 2016 7:11 pm

 . 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)];

Avatar do usuário
Dark_Tobito
Novato
Novato
Reações: 0
Mensagens: 5

Re: Aleatório só vai até 16

Mensagem por Dark_Tobito » Sex Jun 24, 2016 7:35 pm

vlw!!!!!

Avatar do usuário
gabrielsch
Colaborador
Colaborador
Reações: 0
Mensagens: 234

Re: Aleatório só vai até 16

Mensagem por gabrielsch » Sex Jun 24, 2016 7:40 pm

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.
Imagem

Avatar do usuário
Markito
Colaborador
Colaborador
Reações: 0
Mensagens: 50

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

Mensagem por Markito » Sex Jun 24, 2016 9:23 pm

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.

Trancado

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 12 visitantes