GMBR
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Entrar

Esqueci-me da senha

Últimos assuntos
» Como ajustar velocidade de cada frame da animação no game maker
por pequetux Hoje à(s) 16:45

» Preciso de ajuda
por AftonDuGrau Dom 21 Abr 2024, 20:18

» Como faz o evento drawn GUI, não se repetir?
por aminaro Sex 19 Abr 2024, 20:30

» PROBLEMAS COM FÍSICAS DE ÁGUA
por aminaro Ter 16 Abr 2024, 10:07

» Retorno da GMBR!!!
por Ralphed Sex 12 Abr 2024, 22:45

» JOGADOR PARANDO NO AR QUANDO ATACA
por aminaro Qua 10 Abr 2024, 13:51

» Problemas com texto interativo
por Kaaru72 Dom 07 Abr 2024, 11:31

» Erro escondido e indecifrável
por dev_gabize.azv Qui 04 Abr 2024, 10:11

» Mudar cor de apenas uma palavra
por Ralphed Sáb 30 Mar 2024, 00:39

» Procuro Programador de game maker
por Wou Sex 15 Mar 2024, 10:27

» Mod APK
por gamerainha Qua 13 Mar 2024, 06:30

» Aceito pedidos de sprites (Com exemplos meus)
por Sevilha Qua 28 Fev 2024, 12:17

» Inventário simples
por Isquilo_Roedor Qui 22 Fev 2024, 15:18

» Problemas na programaçnao de inimigo [jogo DOOM LIKE]
por Black Mirror Dom 11 Fev 2024, 13:34

» ANDROID MULTI TOUCH
por DiegoBr Dom 04 Fev 2024, 12:13

» Servidor de Discord do fórum?
por Lighter Sáb 27 Jan 2024, 17:18

» Save e Load Json
por Klinton Rodrigues Qui 25 Jan 2024, 11:12

» Colisão com mais de um objeto
por aminaro Seg 22 Jan 2024, 15:02

» Oi sou novo aqui
por Thiago Silveira Alexandre Sáb 20 Jan 2024, 20:55

» Como acessar conteudo comprado no marketplace
por macmilam Sex 19 Jan 2024, 07:42

» Devlogs em vídeos do Block Room
por Joton Seg 15 Jan 2024, 16:56

» Alguém aqui já ganha dinheiro com seus games?
por Joton Seg 15 Jan 2024, 16:49

» ACERVO GMBR MAGAZINE
por Joton Qui 11 Jan 2024, 19:21

» como aumentar o obj sem aumentar a colisão??
por GabrielXavier Qua 10 Jan 2024, 07:21

» Asteroid Core - Early Acesse Update [0.2.0.0]
por JOZ. Seg 08 Jan 2024, 14:39


[Resolvido]Como melhorar esse código ?

3 participantes

Ir para baixo

[Resolvido]Como melhorar esse código ? Empty [Resolvido]Como melhorar esse código ?

Mensagem por loganout Dom 30 Mar 2014, 13:55

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 Smile 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 !
loganout
loganout

Data de inscrição : 10/04/2012
Reputação : 3
Número de Mensagens : 63
Prêmios : [Resolvido]Como melhorar esse código ? Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://www.ihebhost.com.br

Ir para o topo Ir para baixo

[Resolvido]Como melhorar esse código ? Empty Re: [Resolvido]Como melhorar esse código ?

Mensagem por Superbomber_MuyMacho Dom 30 Mar 2014, 14:16

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
Superbomber_MuyMacho

Data de inscrição : 22/03/2014
Reputação : 9
Número de Mensagens : 103
Prêmios : [Resolvido]Como melhorar esse código ? Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Resolvido]Como melhorar esse código ? Empty Re: [Resolvido]Como melhorar esse código ?

Mensagem por loganout Dom 30 Mar 2014, 14:31

Da erro na linha
if (!instance_exist(carro)){

Cannnot set a constant to a value
loganout
loganout

Data de inscrição : 10/04/2012
Reputação : 3
Número de Mensagens : 63
Prêmios : [Resolvido]Como melhorar esse código ? Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://www.ihebhost.com.br

Ir para o topo Ir para baixo

[Resolvido]Como melhorar esse código ? Empty Re: [Resolvido]Como melhorar esse código ?

Mensagem por Superbomber_MuyMacho Dom 30 Mar 2014, 14:42

Foi mal fiz errado é assim: if (!instance_exists(carro)){ se der erro faz assim: if !(instance_exists(carro)){
Superbomber_MuyMacho
Superbomber_MuyMacho

Data de inscrição : 22/03/2014
Reputação : 9
Número de Mensagens : 103
Prêmios : [Resolvido]Como melhorar esse código ? Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Resolvido]Como melhorar esse código ? Empty Re: [Resolvido]Como melhorar esse código ?

Mensagem por loganout Dom 30 Mar 2014, 14:51

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 Smile
loganout
loganout

Data de inscrição : 10/04/2012
Reputação : 3
Número de Mensagens : 63
Prêmios : [Resolvido]Como melhorar esse código ? Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://www.ihebhost.com.br

Ir para o topo Ir para baixo

[Resolvido]Como melhorar esse código ? Empty Re: [Resolvido]Como melhorar esse código ?

Mensagem por Markituh Dom 30 Mar 2014, 14:53

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)"? scratch 

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
Markituh

Games Ranking : Sem avaliações

Data de inscrição : 11/10/2009
Reputação : 106
Número de Mensagens : 2184
Prêmios : [Resolvido]Como melhorar esse código ? Empty

Medalhas x 0 Tutoriais x 1 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Resolvido]Como melhorar esse código ? Empty Re: [Resolvido]Como melhorar esse código ?

Mensagem por Superbomber_MuyMacho Dom 30 Mar 2014, 15:01

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

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
Superbomber_MuyMacho

Data de inscrição : 22/03/2014
Reputação : 9
Número de Mensagens : 103
Prêmios : [Resolvido]Como melhorar esse código ? Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Resolvido]Como melhorar esse código ? Empty Re: [Resolvido]Como melhorar esse código ?

Mensagem por Markituh Dom 30 Mar 2014, 15:14

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.
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
Eu acho, apenas acho, que você confundiu with com while. Mas realmente, uma rotina desse tipo necessita ser implementada, então ficaria assim:
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

E como eu coloquei no meu post era um exemplo do que ele devia fazer não como fazer
Tranquilo, estou aqui apenas complementando. Enfim, espero que ele esteja entendo a lógica do código Happy
Markituh
Markituh

Games Ranking : Sem avaliações

Data de inscrição : 11/10/2009
Reputação : 106
Número de Mensagens : 2184
Prêmios : [Resolvido]Como melhorar esse código ? Empty

Medalhas x 0 Tutoriais x 1 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Resolvido]Como melhorar esse código ? Empty Re: [Resolvido]Como melhorar esse código ?

Mensagem por Superbomber_MuyMacho Dom 30 Mar 2014, 15:27

É, erro de português(Quer dizer inglês) quis dizer while


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
Superbomber_MuyMacho

Data de inscrição : 22/03/2014
Reputação : 9
Número de Mensagens : 103
Prêmios : [Resolvido]Como melhorar esse código ? Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Resolvido]Como melhorar esse código ? Empty Re: [Resolvido]Como melhorar esse código ?

Mensagem por loganout Dom 30 Mar 2014, 16:18

Valeu pessoal, deu certinho + [Resolvido]Como melhorar esse código ? 28a6xd1
loganout
loganout

Data de inscrição : 10/04/2012
Reputação : 3
Número de Mensagens : 63
Prêmios : [Resolvido]Como melhorar esse código ? Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://www.ihebhost.com.br

Ir para o topo Ir para baixo

[Resolvido]Como melhorar esse código ? Empty Re: [Resolvido]Como melhorar esse código ?

Mensagem por Markituh Dom 30 Mar 2014, 16:26

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
Markituh

Games Ranking : Sem avaliações

Data de inscrição : 11/10/2009
Reputação : 106
Número de Mensagens : 2184
Prêmios : [Resolvido]Como melhorar esse código ? Empty

Medalhas x 0 Tutoriais x 1 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Resolvido]Como melhorar esse código ? Empty Re: [Resolvido]Como melhorar esse código ?

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Ir para o topo


 
Permissões neste sub-fórum
Não podes responder a tópicos