Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Retirar pontos quando colide, mas evitando números negativos

Olá, pessoal!

Eu tentei customizar meu código para que a pontuação fosse subtraída do ator quando houvesse uma colisão, mas a pontuação estava ficando negativa, então eu tentei adicionar na mesma função uma correção, mas não funciona. Abaixo meu código:

//Variáveis do ator

let yAtor = 510;
let xAtor = 100;
let colisao = false;
let meusPontos = 0;

function mostraAtor(){
image(imagemDoAtor,xAtor,yAtor,30,30);

}

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

//collideRectCircle(x1, y1, width1, height1, cx, cy, diameter)

function verificaColisao(){
   for (let i = 0; i < imagemCarros.length; i = i+1){
colisao = collideRectCircle(xCarros[i],yCarros[i],comprimentoCarro,alturaCarro,xAtor,yAtor,15)
  if (colisao){
  voltaAtorInicio();
}
}
}

function voltaAtorInicio(){
  yAtor = 510;
}

function colidiu(){
  yAtor = 510;
}

function incluiPontos(){
  textStyle (BOLD);
  fill (247, 249, 249); 
  textAlign (CENTER);
  textSize (25);
  text (meusPontos,width/5,33);
}

function marcaPontos(){
  if (yAtor < 9){
      meusPontos +=1;
    voltaAtorInicio();
}
}

function retiraPontos(){
  if (colisao){
    meusPontos -=1;
    meusPontos >0;
}
}
3 respostas

Fala pessoal, Eu tava me adiantando em fazer isso e não tinha visto que a aula seguinte tratava disso já. Peço desculpas.

solução!

Oi Rodrigo, tudo bem?

Obrigado pela paciência em aguardar um retorno!

Dei uma analisada no seu código e gostaria de te parabenizar por você ter buscado implementar os comandos apresentados durante o curso. Também quero dar uma dica para que você desenvolva mais as boas práticas em relação a escrita do código. Sempre é bom, ao final da escrita dos comandos, colocar um ponto e vírgula (;) para evitar complicações com códigos mais complexos.

Com relação a inclusão ou remoção de pontos do jogo, percebi que você já concluiu o curso e, portanto, deve ter visto as aulas que mostram como realizar esse procedimento. Contudo, deixo abaixo os códigos necessários para a marcação dos pontos.

function marcaPonto(){
  if(yAtor<15){
    meusPontos+=1;
     voltaAtorParaPosicaoInicial();
  }
}

function pontosMaiorQueZero(){
  return meusPontos>0;
}

function verificaColisao(){
  for(let i = 0; i<imagemCarros.length; i++){
    colisao = collideRectCircle(xCarros[i], yCarros[i], comprimentoCarro, alturaCarro, xAtor, yAtor, 15)
    if(colisao){
      voltaAtorParaPosicaoInicial();
    if(pontosMaiorQueZero()){
      meusPontos-=1;
      }

Não precisa se desculpar querer aprimorar o conteúdo do seu jogo, pois isso mostra que você estava empenhado em seus estudos e buscando maneiras de melhorar a jogabilidade do seu jogo e a compreensão a respeito da lógica de programação.

Continue se dedicando e caso tenha dúvidas, estarei à disposição para te ajudar!

Sucesso e bons estudos!

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

Obrigado, Rodrigo! Muito grato!