bug no jogo de colorir

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

bug no jogo de colorir

Mensagem por saim em Qua 30 Nov 2011, 12:38

Fiz um jogo de colorir, mas tenho um bug. Deixa eu mostrar o código, depois explico as variáveis:
Código:
if (desenhando == true){
var dire, dist, i;
dire = point_direction(mxp, myp, mouse_x, mouse_y);
dist = max(point_distance(mxp, myp, mouse_x, mouse_y), 1);
surface_set_target(tela);
for(i=0, i<dist, i+=1){
  draw_circle_color(mxp + lengthdir_x(i, dire), myp + lengthdir_y(i, dire), raio, cor, cor, 0)
  }
surface_reset_target();
}

mxp = mouse_x; myp = mouse_y;
variáveis:

"desenhando" é a variável que verifica se o botão está pressionado
"mxp/myp" são as coordenadas do mouse no step anterior (por isso atualizo elas no final do código);
"tela" é a surface que será colorida pelo jogador
"cor" é a cor escolhida pelo jogador
"raio" é a espessura do pincel
"dire" e "dist" são a direção e a distância que o mouse se moveu no último step
E, pra ver o que estou fazendo, coloco essa "tela" no draw_event.

Meu bug acontece quando movo o mouse numa velocidade muito alta. O esperado seria que eu desenhasse uma linha contínua (e talvez causasse um pouco de lag no processamento), mas o que acontece é que surgem pequenos espaços em branco, quase como se eu estivesse fazendo um pontilhado.
Se eu atualizasse os valores de mxp e myp em qualquer outro evento (end step, por exemplo), eu diria que é um problema do código. Mas da forma como está, não consigo imaginar a causa do problema.


Última edição por saim em Qua 30 Nov 2011, 13:15, editado 2 vez(es)

saim

Ranking : Nota B
Número de Mensagens : 2964
Idade : 38
Data de inscrição : 14/01/2011
Notas recebidas : C-D-A-B
Reputação : 121
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 3

Voltar ao Topo Ir em baixo

Re: bug no jogo de colorir

Mensagem por CRP-Max em Qua 30 Nov 2011, 13:06

Me lembro de já ter tido problemas com o mouse no GM, parece que a uma certa velocidade, quando ele faz a checagem do ponteiro, ele perde a referencia, no meu caso o ponteiro tinha que verificar a colisão com a parede mas a uma certa velocidade ele passava direto...
Mas no seu caso esta linha deveria se preocupar apenas com o ponto de inicio e o ponto atual do mouse, ou ela vai criando conforme a posição do ponteiro?

CRP-Max

Ranking : Nota C
Número de Mensagens : 819
Idade : 41
Data de inscrição : 28/10/2008
Notas recebidas : C
Reputação : 29
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: bug no jogo de colorir

Mensagem por saim em Qua 30 Nov 2011, 13:16

No seu caso, até se explica: num step, o mouse está de um lado da parede, no outro step está do lado oposto, não houve colisão de verdade. Seria, para o game maker, um teleporte. Acontece com objetos em velocidades muito altas, também.

Mas, no meu caso, o código só se preocupa em ligar dois pontos. No final, o ponto "atual" passa a ser o ponto "anterior" pro próximo step. O loop é tão longo quanto a distância entre esses pontos, desenhando um círculo em cada pixel de distância.
Comparando com o seu caso, seria como usar collision_line ao invés de place_meeting (ou instance_place).

PS: corrigi alguns detalhes que eu tinha escrito errado no código
é que estou longe do arquivo e escrevendo de cabeça...

saim

Ranking : Nota B
Número de Mensagens : 2964
Idade : 38
Data de inscrição : 14/01/2011
Notas recebidas : C-D-A-B
Reputação : 121
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 3

Voltar ao Topo Ir em baixo

Re: bug no jogo de colorir

Mensagem por gambit em Sex 02 Dez 2011, 19:16

tente aumentar a velocidade da room
e também pode resolver o problema do "teleporte" do saim

gambit

Número de Mensagens : 156
Data de inscrição : 22/06/2008
Reputação : 8
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

http://ssqt.blogspot.com.br/

Voltar ao Topo Ir em baixo

Re: bug no jogo de colorir

Mensagem por itallo em Sex 02 Dez 2011, 22:09

o que acontece é que aumentando a velocidade, aumenta a quantidade de pixels pulados, por isso dos pontos em vez da reta.
faz como o gambit falou, tente aumentar a velocidade da room, se não, crie um path para simular o trajeto do mouse e pintar.

itallo

Ranking : Sem avaliações
Número de Mensagens : 969
Idade : 24
Data de inscrição : 26/08/2009
Reputação : 12
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   :
   :

http://www.zuluhotel.com.br

Voltar ao Topo Ir em baixo

Re: bug no jogo de colorir

Mensagem por Conteúdo patrocinado Hoje à(s) 11:44


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