Sistema travado

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Resolvido Sistema travado

Mensagem por eubruno em Sex 25 Nov 2011, 23:51

Tá eu sei que travar o pc usando o GM é coisa de noob mais aconteceu.
O código que eu usei foi esse
Código:

{do
 {
for (xx=obj_edge.x; xx<=room_width; xx+=1)
  {
  instance_create(xx,obj_edge,seletor)
  }
}
until

place_meeting(x,y,obj_edge_direita)
}

acontece que como eu vi depois o "instance_create(xx,obj_edge,seletor)" está errado deveria ser na verdade "instance_create(xx,obj_edge.y,seletor)"

Então to perguntando aqui pq ficar reiniciando o pc toda hora não é bom. Meu código está certo ou ainda vai dar erro?


Última edição por eubruno em Sab 03 Dez 2011, 15:36, editado 1 vez(es)

eubruno

Número de Mensagens : 27
Idade : 20
Data de inscrição : 06/11/2011
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Resolvido Re: Sistema travado

Mensagem por Igor KinGamer em Sab 26 Nov 2011, 08:29

O seu PC trava por completo quando faz um loop infinito? Aqui um ctrl+alt+del resolve.

Enfim, o seu problema não está nisso que você disse. Afinal, o código poderia funcionar mesmo você esquecendo o ".y", pois "obj_edge" guarda algum valor inteiro positivo (referente ao objeto).

O problema está no teste final: place_meeting(x, y, obj_edge_direita). Esse loop que você fez (do - until) não altera a posição da instância em que ele é executado. Então, digamos que a posição horizontal da instância que executa esse loop é inicialmente 0. Depois da primeira iteração (primeira vez em que as ações do loop são executadas), a posição dela continua sendo 0, não satisfazendo a condição do until. Então, o loop é executado novamente, e a posição continua sendo 0. Isso nunca acaba (loop infinito), por isso que trava.

Igor KinGamer

Número de Mensagens : 890
Idade : 21
Data de inscrição : 26/09/2008
Reputação : 11
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Resolvido Re: Sistema travado

Mensagem por eubruno em Sab 26 Nov 2011, 10:13

Então uma forma de consertar esse erro seria saber se QUALQUER instancia tocou o objeto edge.

Se eu usar o event collision com o objeto edge_direita para definir uma variável, e essa variável definir quando o loop parar vai dar certo?

eubruno

Número de Mensagens : 27
Idade : 20
Data de inscrição : 06/11/2011
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Resolvido Re: Sistema travado

Mensagem por Igor KinGamer em Sab 26 Nov 2011, 22:29

O raciocínio pode até estar certo, mas uma vez que o loop começou a ser executado, qualquer outra coisa só será executada após o final dele, a não ser que seja chamada de dentro dele.
Isto é, o loop está dentro do evento step de um objeto. Enquanto ele não acabar, o evento step não acabará e mais nenhum evento ocorrerá, e isso inclui os eventos de colisão.

Entretanto, você pode fazer esse teste de colisão usando with e place_meeting(), ou algo assim. Mas, em vez de testar colisão, você pode comparar a variável xx com o x do obj_edge_direita. Isso seria bem mais rápido, considerando que o with faria com que todas as instâncias testassem o place_meeting().

Uma coisa que eu não entendi muito bem é o que você quer fazer. Você quer que as instâncias parem de ser criadas quando ou o xx ultrapassar o room_width, ou uma instância encostar no obj_edge_direita, o que vier primeiro? Ou é outra coisa?

Igor KinGamer

Número de Mensagens : 890
Idade : 21
Data de inscrição : 26/09/2008
Reputação : 11
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Resolvido Re: Sistema travado

Mensagem por eubruno em Dom 27 Nov 2011, 13:11

Puxa vida é por isso que deu tudo errado :/ vou dar uma olhada, se funcionar eu coloco resolvido no rópido.

Quanto ao que eu to tentando fazer na verdade é encostar no objeto edge direita. O Room width é só pra não ultrapassar limites da room. mas não de umuito certo Razz

eubruno

Número de Mensagens : 27
Idade : 20
Data de inscrição : 06/11/2011
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Resolvido Re: Sistema travado

Mensagem por Limalokão em Dom 27 Nov 2011, 13:41

Acho que seu pc está travando por causa que ele está criando muitos objetos de uma só vez! Então a cada step ele cria um, imagine só, cada 30 steps 1 segundo cada um segundo 30 objetos Happy

Limalokão

Ranking : Nota C
Número de Mensagens : 803
Idade : 24
Data de inscrição : 24/11/2009
Notas recebidas : C
Reputação : 10
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Resolvido Re: Sistema travado

Mensagem por eubruno em Dom 27 Nov 2011, 18:36

Para entender melhor oq eu estou tentando fazer:
*=seletor
]=obj_edge
[=obj_edge_direita

oq ele tem que fazer:
criar instancias do obj_edge até o obj_edge_direita não importando a distancia

]*****[
]*********[
é isso que ele vai fazer se funcionar

eubruno

Número de Mensagens : 27
Idade : 20
Data de inscrição : 06/11/2011
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Resolvido Re: Sistema travado

Mensagem por Igor KinGamer em Seg 28 Nov 2011, 12:49

É, então realmente é só testar o xx com o x do obj_edge_direita.
Mas esse objeto seletor tem só um pixel de largura? Se, por exemplo, ele tiver 32 pixels, não tem porque criar um por pixel, você deveria colocar lá no for "xx += 32". Criar tantas instâncias assim compromete o fps mesmo.

Obs.: Quanto ao que o Soul Limaloko disse, não é 30 instâncias por segundo, porque o código não cria uma instância por step. A criação está dentro do for, então, todas são criadas no mesmo step.

Igor KinGamer

Número de Mensagens : 890
Idade : 21
Data de inscrição : 26/09/2008
Reputação : 11
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Resolvido Re: Sistema travado

Mensagem por eubruno em Sab 03 Dez 2011, 14:22

Opa pessoal, desculpa o sumiço.

Mas então o sistema continua travando quando eu ativo o codigo.
O codigo atual está assim:
Código:
if keyboard_check_pressed(ord"B"))
{
 do
  {
    for(xx=x; xx<=obj_edge_direita.x; xx+=32)
        {
            instance_creat(xx,obj_edge.y,obj_seletor)
          }
    }

until (xx=obj_edge_direita.x
}


Então oq está acontecendo :\ é o meu pc que não aguenta?
Será que daria pra alguém fazer o código testar e ver se funciona?

eubruno

Número de Mensagens : 27
Idade : 20
Data de inscrição : 06/11/2011
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Resolvido Re: Sistema travado

Mensagem por Hatzo enkiri em Sab 03 Dez 2011, 14:55

Encontrei alguns errinhos:
if keyboard_check_pressed(ord("B"))
{
do
{
for(xx=x; xx<=obj_edge_direita.x; xx+=32)
{
instance_create(xx,obj_edge.y,obj_seletor)
}
}

until (xx=obj_edge_direita.x)
}
Só uma Pergunta :Para O Quê vc tá usando esse código

Hatzo enkiri

Ranking : Nota B
Número de Mensagens : 226
Idade : 22
Data de inscrição : 19/02/2009
Notas recebidas : B
Reputação : 7
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Resolvido Re: Sistema travado

Mensagem por Mr.Brum em Sab 03 Dez 2011, 15:06

O problema não é o teu pc...
Seu código até que tá certo, mas o erro pode estar aqui no final:
Código:
until (xx=obj_edge_direita.x
}
Essa é a condição para que o código do Do ocorra.
No gm dificilmente vc terá uma igualdade em comparações no step, pois pode ocorrer muito rápido a ponto de ela não ser detectada(dependendo da posição no código step).

Tente trocar o igual por <= assim mesmo que a condição de igualdade passe batida,ela pode ser detectada pelo <.

Espero que dê certo:
until (xx<=obj_edge_direita.x
}

Não sei o objetivo do seu código, mas fiz uma engine que pode te ajudar,ela não faz um loop,mas dá certo,e vc pode improvisar pro teu caso:
http://dl.dropbox.com/u/43446077/novos/seletor.gmk



Mr.Brum

Ranking : Nota C
Número de Mensagens : 913
Idade : 25
Data de inscrição : 28/04/2011
Notas recebidas : D + D + C + C + D + B
Reputação : 41
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 0

http://mrbrumgames.blogspot.com/

Voltar ao Topo Ir em baixo

Resolvido Re: Sistema travado

Mensagem por eubruno em Sab 03 Dez 2011, 15:35

Vlw mrbrum funcionou. Na verdade tem uma certa logica pra eu usar o do mas eu tenho que dar uma olhada melhor em como eu vou fazer oq tenho em mente.
De qualquer forma Tópico resolvido

eubruno

Número de Mensagens : 27
Idade : 20
Data de inscrição : 06/11/2011
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Resolvido Re: Sistema travado

Mensagem por Conteúdo patrocinado Hoje à(s) 22:48


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum