2
respostas

A Vaca só colide com um carro

Verifiquei o cod varias vezes e aparentemente não encontro o erro que faz a vaca só colidir com um carro. https://editor.p5js.org/isaquic/sketches/5dp0JqbMr

//Ator
let xAtor = 100;
let yAtor = 366;
let colisao = false;
function mostraAtor() {
   image(imagemDoAtor, xAtor, yAtor, 30, 30);
}

function movimentaAtor (){
  if (keyIsDown(UP_ARROW)){
    yAtor -= 3;
  }
  if (keyIsDown(DOWN_ARROW)){
    yAtor += 3;
  }
}

function verificaColisao(){
  //collideRectCircle(x1, y1, width1, height1, cx, cy, diameter)
  for (let i = 0; i < imagemCarros.length; i++){
    colisao = collideRectCircle(xCarros[i], yCarros[i],50, 40, xAtor, yAtor, 15)
  } if (colisao){
   colidiu();
  }
}

function colidiu (){
  yAtor = 366;
}
2 respostas

RESOLVIDO.

O erro se encontrava no fechamento do cod

//Ator
let xAtor = 100;
let yAtor = 366;
let colisao = false;
function mostraAtor() {
   image(imagemDoAtor, xAtor, yAtor, 30, 30);
}

function movimentaAtor (){
  if (keyIsDown(UP_ARROW)){
    yAtor -= 3;
  }
  if (keyIsDown(DOWN_ARROW)){
    yAtor += 3;
  }
}

function verificaColisao(){
  //collideRectCircle(x1, y1, width1, height1, cx, cy, diameter)
  for (let i = 0; i < imagemCarros.length; i++){
    colisao = collideRectCircle(xCarros[i], yCarros[i],50, 40, xAtor, yAtor, 15)
 ** }** if (colisao){
   colidiu();
  }
}

function colidiu (){
  yAtor = 366;
}

o jeito correto é da seguinte forma:

function verificaColisao(){
  //collideRectCircle(x1, y1, width1, height1, cx, cy, diameter)
  for (let i = 0; i < imagemCarros.length; i++){
    colisao = collideRectCircle(xCarros[i], yCarros[i],50, 40, xAtor, yAtor, 15)
  if (colisao){
   colidiu();
      **}**
  }
}

Oi Isaqui, tudo bem?

Obrigado pela paciência em aguardar uma resposta!

Fico feliz que tenha conseguido uma solução para o seu problema. Como você observou, o fechamento de símbolos nos comandos, como chaves, parênteses, colchetes entre outros, deve ser realizado para que o código funcione adequadamente.

A maioria dos editores de código fonte realiza esse procedimento de fechar os sinais usados nos comandos automaticamente, mas é preciso sempre se atentar para evitar eventuais problemas. Pra isso, uma dica que pode ajudar é contar os símbolos abertos dentro de uma determinada função ou propriedade e contar os símbolos fechados, pois eles sempre andam em pares.

Como você bem colocou, a forma correta do código fica da seguinte maneira:

function verificaColisao(){
  //collideRectCircle(x1, y1, width1, height1, cx, cy, diameter)
  for (let i = 0; i < imagemCarros.length; i++){
    colisao = collideRectCircle(xCarros[i], yCarros[i],50, 40, xAtor, yAtor, 15)
  if (colisao){
   colidiu();
  }
  }
}

Perceba que há três chaves que abrem e, portanto, devem haver três que fecham a função responsável pela verificação da colisão.

Recomendo, que caso se sinta confortável em compartilhar seu conhecimento, interagir com outros estudantes, trocar experiências e fazer networking, participe do Discord oficial da Alura de alunas e alunos:

Caso tenha outras dúvidas, estarei à disposição para te ajudar!

Grande abraço e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado! ✓.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software