Entrar
Últimos assuntos
» player não consegue andarpor lovn7 Qui 21 Nov 2024, 13:33
» É possível fazer istó no game maker
por William Lima Qui 21 Nov 2024, 10:56
» Rio Rise - novo launcher do Gta San Andreas SAMP Brasil
por Lua Sáb 16 Nov 2024, 20:22
» (Resolvido) Cenario longo x Texture Pages
por josuedemoraes Sáb 16 Nov 2024, 15:31
» Kids' band
por Adilson Lucindo Santos Sex 15 Nov 2024, 12:23
» (RESOLVIDO) Engasgos-Troca de Sprites/animações
por josuedemoraes Ter 12 Nov 2024, 01:49
» Block Room - DEMO
por Joton Qua 06 Nov 2024, 22:58
» Game Infinito vertical (subindo)
por macmilam Sáb 26 Out 2024, 12:36
» Retorno da GMBR!!!
por Dancity Ter 22 Out 2024, 16:36
» Máquina de estados
por aminaro Qui 10 Out 2024, 13:33
» como faço pra um objeto colidir com o outro e diminuir a vida do player ?
por josuedemoraes Qui 03 Out 2024, 16:51
» RESOLVIDO: Colisão com objetos moveis
por josuedemoraes Qua 02 Out 2024, 20:28
» Crypt of the Blood Moon
por divin sphere Qua 11 Set 2024, 18:18
» como fazer um objeto seguir?
por divin sphere Dom 18 Ago 2024, 18:08
» Procuro de alguém para Modelar/Texturizar/Animar objetos 3D
por un00brn Dom 11 Ago 2024, 11:10
» Destruição de cenário (estilo DD Tank)
por CoronelZeg Sex 09 Ago 2024, 17:16
» RESOLVIDO-Como destruir uma instancia especifica de um objeto
por josuedemoraes Ter 23 Jul 2024, 00:40
» Automatizar a coleta de id
por GabrielXavier Seg 22 Jul 2024, 18:01
» Preciso de ajuda para concluir um pequeno projeto
por lmoura Qui 27 Jun 2024, 15:45
» ANGULO ACOMPANHAR O OBJETO
por Klinton Rodrigues Qui 27 Jun 2024, 08:34
» Musica reinicia quando sala reinicia
por GabrielXavier Ter 18 Jun 2024, 07:28
» como fazer uma copia de gd
por generico_cube Sex 14 Jun 2024, 15:48
» Square Adventure
por guilherme551 Ter 11 Jun 2024, 09:54
» como posso definir limite de uma variavel
por GabrielXavier Sex 07 Jun 2024, 14:14
» [Resolvido] Dúvida, colisão única de objeto
por vdm842 Sex 24 maio 2024, 09:50
[Resolvido]Como melhorar esse código ?
3 participantes
Página 1 de 1
[Resolvido]Como melhorar esse código ?
Estou tentando criar alguns obj randomizados e que eles nunca se repetissem na room.
tentei criar dessa forma, mas está bem feia e não funciona 100%. Eu tenho 20 carros (obj) diferentes que surgem a direita da minha view, como se a view estivesse mais rápida que a velocidade do carro atual.
Dessa forma (codigo abaixo), estou até conseguindo criar obj randomizados, mas eles se repetem e a função que eu vou executo logo depois, vai cair sobre todos os obj iguais, causando um acidente e isso não quero que aconteça.
No exemplo abaixo coloquei a penas 3 obj, quando executo o código ele qse não cria o obj_caminhao_marrom e repete muito o obj_carro_vermelho.
Gostaria de ajuda para otimizar meu código e fazer com que não se crie o mesmo objeto enquanto ele estiver na view.
Obrigado !
tentei criar dessa forma, mas está bem feia e não funciona 100%. Eu tenho 20 carros (obj) diferentes que surgem a direita da minha view, como se a view estivesse mais rápida que a velocidade do carro atual.
Dessa forma (codigo abaixo), estou até conseguindo criar obj randomizados, mas eles se repetem e a função que eu vou executo logo depois, vai cair sobre todos os obj iguais, causando um acidente e isso não quero que aconteça.
No exemplo abaixo coloquei a penas 3 obj, quando executo o código ele qse não cria o obj_caminhao_marrom e repete muito o obj_carro_vermelho.
Gostaria de ajuda para otimizar meu código e fazer com que não se crie o mesmo objeto enquanto ele estiver na view.
- Código:
if global.gerar = true
{
ox = 1700
oy = 580
if collision_circle(ox,oy,100,obj_furgao_preto,0,0)or
collision_circle(ox,oy,100,obj_carro_vermelho,0,0)or
collision_circle(ox,oy,100,obj_caminhao_marrom,0,0)
{
exit;
}
else
{
instance_create(ox,oy,choose(obj_furgao_preto,obj_carro_vermelho,obj_caminhao_marrom))
global.gerar = false
alarm[0] = (room_speed * 5);
}
}
Obrigado !
Re: [Resolvido]Como melhorar esse código ?
Faz assim quando randomizar o carro, usa o instance_exists() para saber se aquele objeto já está na sala, se já tiver repete a ação, com outro random
Exemplo:
teste = true
with(teste = true){
carro = random(20)
if (!instance_exist(carro)){
instance_create(0,0,carro)
teste = false
}else { teste = true }
}
Exemplo:
teste = true
with(teste = true){
carro = random(20)
if (!instance_exist(carro)){
instance_create(0,0,carro)
teste = false
}else { teste = true }
}
Superbomber_MuyMacho- Data de inscrição : 22/03/2014
Reputação : 9
Número de Mensagens : 103
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: [Resolvido]Como melhorar esse código ?
Da erro na linha
if (!instance_exist(carro)){
Cannnot set a constant to a value
if (!instance_exist(carro)){
Cannnot set a constant to a value
Re: [Resolvido]Como melhorar esse código ?
Foi mal fiz errado é assim: if (!instance_exists(carro)){ se der erro faz assim: if !(instance_exists(carro)){
Superbomber_MuyMacho- Data de inscrição : 22/03/2014
Reputação : 9
Número de Mensagens : 103
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: [Resolvido]Como melhorar esse código ?
O problema não é a escrita vc escreveu errado mas eu arrumei no GMS antes, dai quando eu foi reportar o erro pra vc copiei o que vc tinha escrito errado. rrsrsrs
mas ele retorna o erro que eu mostrei acima
mas ele retorna o erro que eu mostrei acima
Re: [Resolvido]Como melhorar esse código ?
O problema está em carro = random(20). Provavelmente porque um objeto se chama carro, e já que é um valor fixo para o objeto, ele dá esse erro pois não é possível alterar o valor da constante "carro" e.... não pera, tem algo estranho aí. Qual é a do "with(teste = true)"?
Mas não tem segredo, se cada carro tiver um objeto separado, usa o irandom(numero) (random normal gera frações) e cria o carro. Porém, falta um detalhezinho:
E então:
Fica bem mais intuitivo para uma mudança futura. Eu usei irandom_range ao invés do random normal, para incluir o zero nos valores gerados.
Mas não tem segredo, se cada carro tiver um objeto separado, usa o irandom(numero) (random normal gera frações) e cria o carro. Porém, falta um detalhezinho:
- Código:
// Poe isso num script e chama ele no Create
arr_carros[0] = obj_carro1
arr_carros[1] = obj_carro2
arr_carros[2] = obj_carro3
arr_carros[3] = obj_carro4
arr_carros[4] = obj_carro5
arr_carros[5] = obj_carro6
arr_carros[6] = obj_carro7
arr_carros[7] = obj_carro8
arr_carros[8] = obj_carro9
arr_carros[9] = obj_carro10
arr_carros[10] = obj_carro11
arr_carros[11] = obj_carro12
arr_carros[12] = obj_carro13
arr_carros[13] = obj_carro14
arr_carros[14] = obj_carro15
arr_carros[15] = obj_carro16
arr_carros[16] = obj_carro17
arr_carros[17] = obj_carro18
arr_carros[18] = obj_carro19
arr_carros[19] = obj_carro20
quantidade_carros = 20
E então:
- Código:
// Blah, collision_line
else {
c = irandom_range(0,quantidade_carros-1)
if (!instance_exists(arr_carros[c])) {
instance_create(ox,oy,arr_carros[c])
}
global.gerar = false
alarm[0] = room_speed * 5;
}
Fica bem mais intuitivo para uma mudança futura. Eu usei irandom_range ao invés do random normal, para incluir o zero nos valores gerados.
Markituh- Games Ranking :
Data de inscrição : 11/10/2009
Reputação : 106
Número de Mensagens : 2184
Prêmios :
x 0 x 1 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: [Resolvido]Como melhorar esse código ?
Cara a variável carro era só pra exemplo não disse pra por assim no seu jogo o tal carro representava qual carro você quer por...E no caso da variável carro ia criar o objeto pela index não pelo nome
E o with serve pra repetir só se aquele carro já existe(Se esse carro já existe lá ele repete e tenta outro) assim não teria carros repitidos
E como eu coloquei no meu post era um exemplo do que ele devia fazer não como fazer
E o with serve pra repetir só se aquele carro já existe(Se esse carro já existe lá ele repete e tenta outro) assim não teria carros repitidos
E como eu coloquei no meu post era um exemplo do que ele devia fazer não como fazer
Eu 2 posts atrás escreveu:Faz assim quando randomizar o carro, usa o instance_exists() para saber se aquele objeto já está na sala, se já tiver repete a ação, com outro random
Exemplo: "<-----"
teste = true
with(teste = true){
carro = random(20)
if (!instance_exist(carro)){
instance_create(0,0,carro)
teste = false
}else { teste = true }
}
Superbomber_MuyMacho- Data de inscrição : 22/03/2014
Reputação : 9
Número de Mensagens : 103
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: [Resolvido]Como melhorar esse código ?
Sim, to ligado (até porque os nomes linkam para as indexes de qualquer forma), mas e se os carros dele não forem as primeiras 20 IDs? Vai dar problema, certamente.
Eu acho, apenas acho, que você confundiu with com while. Mas realmente, uma rotina desse tipo necessita ser implementada, então ficaria assim:E o with serve pra repetir só se aquele carro já existe(Se esse carro já existe lá ele repete e tenta outro) assim não teria carros repitidos
- Código:
c = irandom_range(0,quantidade_carros-1)
while (instance_exists(arr_carros[c])) c = irandom_range(0,quantidade_carros-1)
instance_create(ox,oy,arr_carros(c))
// E o resto bla
Tranquilo, estou aqui apenas complementando. Enfim, espero que ele esteja entendo a lógica do códigoE como eu coloquei no meu post era um exemplo do que ele devia fazer não como fazer
Markituh- Games Ranking :
Data de inscrição : 11/10/2009
Reputação : 106
Número de Mensagens : 2184
Prêmios :
x 0 x 1 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: [Resolvido]Como melhorar esse código ?
É, erro de português(Quer dizer inglês) quis dizer while
Eu já falei antes que isso era um exemplo???Não disse pra randomizar assim
Foi isso o que eu disse. O resto era só um exemplo.Você não considera exemplos como possibilidade, exemplos são para você entender melhor.Sem referência nenhum ao oque você quer, mais sim sobre oque você quer. Ex: o FIAT Uno é um carro. Isso é um exemplo de carro, não quer dizer que o Uno seja o carro que você se referiu.Quer dizer que o Uno é o exemplo de carro. Sem referências a você, só referências a carros...
Markituh escreveu:Sim, to ligado (até porque os nomes linkam para as indexes de qualquer forma), mas e se os carros dele não forem as primeiras 20 IDs? Vai dar problema, certamente.
Eu já falei antes que isso era um exemplo???Não disse pra randomizar assim
Minha verdadeira resposta, Nua e crua, Sem exemplos, só explicação escreveu:Faz assim quando randomizar o carro, usa o instance_exists() para saber se aquele objeto já está na sala, se já tiver repete a ação, com outro random
Foi isso o que eu disse. O resto era só um exemplo.Você não considera exemplos como possibilidade, exemplos são para você entender melhor.Sem referência nenhum ao oque você quer, mais sim sobre oque você quer. Ex: o FIAT Uno é um carro. Isso é um exemplo de carro, não quer dizer que o Uno seja o carro que você se referiu.Quer dizer que o Uno é o exemplo de carro. Sem referências a você, só referências a carros...
Superbomber_MuyMacho- Data de inscrição : 22/03/2014
Reputação : 9
Número de Mensagens : 103
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: [Resolvido]Como melhorar esse código ?
Só uma coisa, se tiver usando aquele while, vai dar problema caso todos os carros estiverem na room. Cria uma variável global pra controlar a quantidade de carros, que aumenta o valor dela no create de cada carro e diminui no Destroy deles, e então você usa um if pra testar se essa var é == a quantidade_carros, e da um exit [antes do c = blabla].
Markituh- Games Ranking :
Data de inscrição : 11/10/2009
Reputação : 106
Número de Mensagens : 2184
Prêmios :
x 0 x 1 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Tópicos semelhantes
» Como posso melhorar meu código.
» [Resolvido] O q tem de errado com esse código?
» [Resolvido]Me ajudem a entender esse código
» [Resolvido]Como faz esse tipo de menu ?
» [Resolvido]Como criar esse efeito?
» [Resolvido] O q tem de errado com esse código?
» [Resolvido]Me ajudem a entender esse código
» [Resolvido]Como faz esse tipo de menu ?
» [Resolvido]Como criar esse efeito?
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos