4
respostas

Função "Game Over"

Quebrei a cabeça para criar a função de GameOver, aparentemente esta funcionando(depois de testes, comigo funcionou) gostaria de uma avaliação dos colegas e/ou professores. Podem, por favor, verificar, e, principalmente, informar o que pode ser melhorado? Muito obrigado.

//código do ator

let xAtor = 85;
let yAtor = 367;
let colisao = false;
let meusPontos = 0;
let perde = 0;


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

function movimentaAtor(){
  if (keyIsDown(UP_ARROW)){
    if (perde <= meusPontos ){
   yAtor -= 3;}
  }
  if (keyIsDown(DOWN_ARROW)){
    if (podeSeMover()){
      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], comprimentoCarro, alturaCarro, xAtor, yAtor, 15)
    if (colisao){
      voltaAtorParaPosiçãoInicial();
      somDaColisao.play();
     meusPontos --;
      if (gameOver()){
        meusPontos = "Game Over"
        //perde = - 1;

      }
     // if (pontosMaiorQueZero()){

      //}
    }
  }
}

function voltaAtorParaPosiçãoInicial(){
    yAtor = 367;
}

function incluiPontos (){
  textAlign (CENTER)
  textSize (25);
  fill(255,240,60);
  text (meusPontos, width / 5, 27);
}

function marcaPonto (){
  if (yAtor < 15){
    meusPontos += 1;
    somDoPonto.play();
    voltaAtorParaPosiçãoInicial();
  }
}

//function pontosMaiorQueZero(){
//  return meusPontos > 0;
//}

function podeSeMover (){
  return yAtor < 367;
}

function gameOver () {
   if (meusPontos < 0){
    text (meusPontos, width / 5, 27);
    meusPontos = "Game Over";}
    perde = -1;
        print ("k"+ perde);
}
4 respostas

Fala aí Alan, tudo bem? Antes de mais nada, parabéns pela solução, muito bem.

Sobre as melhorias do código, acho que talvez tentar aplicar funcionalidades mais novas do JavaScript, trazer esse código para um padrão mais novo.

Fora isso teria apenas um detalhe ou outro, mas, nada demais.

Espero ter ajudado.

Obrigado Matheus! Aqui tudo tranquilo, valeu!

Ajuda sim, claro. Quero aplicar sim, mas ainda preciso aprender muito mais sobre o JavaScript. Mas"bah", fiquei curioso agora, sobre o que falou de modernizar o código e também os detalhes que comentou.

Manda ai! Hmm, peraí, melhor, mande problemas que acha que podem levar que eu também enxergue o que pode haver de melhorias, ai eu posso ir trabalhando em cima, por favor, claro, se quiser.

Obrigadão!

Isso aqui é um vício! >,<

Depois que lhe respondi, fui fuçar de novo no código, dei uma limpada e fiz melhorias! :D

//código do ator

let xAtor = 85;
let yAtor = 367;
let colisao = false;
let meusPontos = 0;

let perde = 0;
let recomecar = "Use as setas ↑ e ↓ para se mover" ;

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

function movimentaAtor(){
  if (keyIsDown(UP_ARROW)){
    if (perde <= meusPontos ){
   yAtor -= 3;}
  }
  if (keyIsDown(DOWN_ARROW)){
    if (podeSeMover()){
      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], comprimentoCarro, alturaCarro, xAtor, yAtor, 15)
    if (colisao){
      voltaAtorParaPosiçãoInicial();
      somDaColisao.play();
      meusPontos --;
      gameOver();
      if (perde == -1){
        somDaTrilha.stop();
       // recomecoFCinco();

      }
    }
  }
}

function voltaAtorParaPosiçãoInicial(){
    yAtor = 367;
}

function incluiPontos (){
  textAlign (LEFT);
  textSize (25);
  fill(255,240,60);
  text (meusPontos, width / 5, 27);
}

function marcaPonto (){
  if (yAtor < 15){
    meusPontos += 1;
    somDoPonto.play();
    voltaAtorParaPosiçãoInicial();
  }
}

function podeSeMover (){
  return yAtor < 367;
}

function gameOver () {
   if (meusPontos < 0){
     meusPontos = "Game Over!";
     perde = -1;
     recomecar = "F5 para recomeçar.";
     recomecoFCinco ();
   }
}

function recomecoFCinco (){
  textAlign (CENTER)
  textSize (16);
  fill(170,250,160);
  text (recomecar, 345, 23);

}

Fala Alan, quando eu digo código moderno seria aplicar novas funcionadades do JavaScript, por exemplo:

  • arrow functions
  • .forEach
  • diminuir os magic numbers

Como eu disse, nada demais, coisas bem simples, apenas pequenas melhorias.

Abraços e bons estudos.