hiperCorreio   

Debate hiperL

     
[Anterior] [Próxima] [Responder] [Sem Formatação] [Outros Debates] [Ver Listagem]
problemas com colisoes em um gird
Remetente: digao  <digaots@uol.com.br>
Data  de  Envio: 2001-06-10  19:57:47.000
 

          Estou usando um grid , junto com a agenda comportamentoArrastavel, mas estou tendo problemas para colidir dois atores. Quando arrasto ( com o mouse) um ator sobre o outro nada acontece. Eu consegui o resultado esperado apenas quando  mando o ator se mover o suficiente para esquerda e voltar para a posicao inicial, depois de solto pelo mouse. Mas em situacoes erradas ocorrem colisao, exemplo: quando eu solto uma peca a uma casa a baixo de outra peca, eu acho que isso ocorre porque quando o mouse solta a peca, o grid arruma ela na posicao determinada pelo grid , assim colidindo com ela .  Nao sei se consegui me espressar bem, por isso vou colocar as agendas nominadas e os atores que usei.
 
    Agendas:
1- agenda comportamentoArrastabilidade
 
0 sobre <-
'aplique'
 
  [ 'maozinha' texto 'colidiu com'  texto lista lista ]
 
    obterIdentidade 5 inserirElemento 
 
  [ 1 sobre <- ]
 
seDito
 
 
 
'aplique'
 
  [ 'maozinha' texto 'parou de colidir com'  texto lista lista ]
 
    obterIdentidade 5 inserirElemento
 
  [  0 sobre <- ]
 
seDito 
 
 
 
'aplique'
 
 [ texto 'mouse arrastando'  numero lista ]
 
 [ sobre [ 4 obterElemento andarPara ] senaoZero ]
 
sedito
 
 
 
53 alturaDaCelula <-
 
83 larguraDaCelula <-
 
8 linhas <-
 
8 colunas <-
 
[-61 1] PosiçãoDoGrid <-  {270 210}
 
'aplique'
 
 [texto 'mouse botão solto' numero lista]
 
 
 
 [
 
 obterPosicao 1 obterElemento x <-
 
 obterPosicao 2 obterElemento y <-
 
 x -396 >
 
 x 274 < e
 
 y -219 > e
 
 y 214 < e
 
 [
 
 sobre
 
 [4 obterElemento 'VetorPosicao' <- VetorPosicao posiçãoDoGrid -1 * +  
 
 1 larguraDaCelula  / 1 alturaDaCelula  / listaDupla *  truncarLista 'PosicaoAB' <-  
 
 posiçãoDoGrid PosicaoAB larguraDaCelula alturaDaCelula listaDupla * + 'PosicaoDaCelula'<-
 
 PosicaoAB [1 -1]* 1 linhas  listaDupla + inverter 'PosicaoIJ' <-
 
 
 
 {Variaveis:
 
  *PosicaoIJ* guarda a posiçao na matriz, [i j]
 
  *PosicaoDaCelula* guarda as coordenadas da célula, [x y]
 
 }
 
 
 
 {Insira seu tramento de estímulos aqui}
 
  posicaoDacelula
 
                1 obterElemento
                posicaoDaCelula
 
                2 obterElemento
                2 gerarLista  andarpara
 
             { 95 fixarVelocidade
 
                100 frente [-20 frente] 5 vezesRepetir} { quando eu executo essa rotina, a colisao acontece}
 
 ] senaoZero
 
 ] senaoZero
 
 ]
 
seDito
 
2 -agenda Grid
 
 
 
  'colunas' <-
 
 'linhas' <-
 
 'AlturaDaCelula' <-
 
 'LarguraDaCelula' <-
 
  'nome' <-
 
 
 
{Coordenadas do polígono do grid}
 
[0 0 0 0]
 
  alturaDaCelula 4 inserirElemento  larguraDaCelula 5 inserirElemento 
 
  alturaDaCelula 6 inserirElemento  larguraDaCelula 7 inserirElemento
 
'Celula' <-
 
 
 
{Area Sensível para detectar estímulos}
 
colunas larguraDaCelula * linhas alturaDaCelula * listaDupla nome
 
  adicionarAreaSensivel
 
 
 
obterPosicao 'posiçãoDoGrid' <-  rastros 'antes' guardarEm 
 
invisivel 90 fixarDirecao semRastros
 
 
 
{Grid}
 
{corDoGrid fixarCorDosRastros} {espessuraDoGrid fixarEspessura} comRastros
 
 
 
semRastros
 
 
 
{Desenhar Grid vazio}
 
[
 
 
 
 0 fixarDirecao  
 
 [
 
   obterPosicão 'antes' <-
 
  antes andarPara
 
 
 
  {Comente esta linha se vc não quiser preenchimento}
 
  {Celula desenharPoligonoCheio}
 
 
 
  {Comente esta linha se vc não quiser grid}
 
  Celula desenharPoligono semRastros
 
 
 
  obterPosicão larguraDaCelula 0 listaDupla + andarPara
 
 ] colunas vezesRepetir
 
  obterPosicão  larguraDaCelula colunas * -1* alturaDaCelula listadupla + andarPara
 
 
 
] linhas vezesRepetir
 
 
 
 
 
antes 1 = [semRastros] seZero
 
3- agenda GridTeste
    [-396 -215] andarPara 8 fixarCorDosRastros 'grid' 83 53 8 8 grid
 
 
 
 
Atores:
 
1 - maozinha
 
bolinhaAM fixarIconeSimples
 
visivel tangivel
 
 
 
'aplique'
 
  [ 'mouse' 'mouse movendo'  numero lista ]
 
  [  4 obterElemento andarPara ]
 
sedito
 
 
2- peca1
 
peca1 fixarIconeSimples
 
[0 0]andarPara
 
visivel 0 frente
 
90 direita
 
comportamentoArrastabilidade
 
tangivel
 
{'aplique'
 
 [texto texto 'colidiu com' 'peca1' texto lista lista]
 
 [ 1 obterElemento
 
  'maozinha' = [-10 frente ] [100 frente] entaoSenao
 
 ]
 
seDito }
 
'aplique'
 
 ['peca3' texto 'colidiu com' 'peca1' texto lista lista]
 
 [suicidar]
 
seDito
 
 3- peca3
 
peca3 fixarIconeSimples
 
tangivel
 
[-150 0]andarPara
 
visivel 0 frente
 
90 direita
 
comportamentoArrastabilidade
 
 
4- grid
gridteste
 
 
 
 
 
 

[Anterior] [Próxima] [Responder] [Início da Mensagem]