1
resposta

Jogo Finalizado! Com algumas melhorias MAS TEM UM BUG!

Implementei algumas melhorias que achei aqui mesmo no fórum.

Além de poder mover o personagem para os lados, usei a solução do Rafael Menezes Scussiato, que melhorou a colisão do Ator com os Carros.

Outra melhoria, ideia do Willian Figueiredo Fachetti, achei muito legal colocar as vidas pro jogo não ficar infinito. Também havia percebido o problema do ator reiniciar e já ir andando automaticamente, e a solução que o Luis Dias deu pra ele, melhorou muito a jogabilidade.

Tentei fazer com que os carros aumentassem a velocidade a cada ponto, mas isso gerou um BUG. Na lista Carros criei uma function aumentarVelocidade(){ velocidadeCarros += 0.3; }

Logo em seguida na lista Ator na função de marcarPonto chamei essa função:

function marcarPonto() { if (yAtor < 15) { meusPontos += 1; somPonto.play(); voltaAtorParaInicio(); aumentarVelocidade(); } }

Mas quando o ator reinicia alguns carros desaparecem e ao movimentar o personagem ele colide com o "nada".

O link para darem uma olhada: https://editor.p5js.org/isabela-fonseca/sketches/XXQVAA8Kr

1 resposta

Oi, Isabela! Tudo certo por aí?

Antes de tudo, peço desculpas pela demora em retornar.

O seu projeto ficou muito legal, parabéns! Aliás, achei super interessante que você utilizou soluções de outros estudantes da Alura!

Para resolver o erro que você compartilhou, precisamos alterar a função aumentarVelocidade. A fim de que todos os itens do array velocidadeCarros tenham seus valores aumentados em 0.3, podemos utilizar a estrutura de repetição for:

function aumentarVelocidade(){
  for (var i = 0; i < velocidadeCarros.length; i++) {
  velocidadeCarros[i] += 0.3    
  }
}

A variável i representa o índice atual do array. Desta forma, enquanto estivermos percorrendo ele, será somado 0.3 a cada valor.

Com essa mudança, deixamos o jogo ainda mais divertido e difícil ao longo das “fases”.

O código completo de “carro.js” está logo abaixo:

// CÓDIGOS PARA OS CARROS

let xCarros = [550, 550, 550, 550, 550, 550];
let yCarros = [45, 100, 155, 215, 265, 320];
let comprimentoCarro = 40;
let alturaCarro = 30;
let velocidadeCarros = [2.2, 3.2, 2.5, 3, 3.5, 2.7];

function mostraCarro() {
  for (i = 0; i < imagemCarros.length; i++) {
    image(imagemCarros[i], xCarros[i], yCarros[i], comprimentoCarro, alturaCarro);
  }
}

function movimentaCarro() {
  for (i = 0; i < imagemCarros.length; i++) {
    xCarros[i] -= velocidadeCarros[i];
  }
}

function voltaCarroPosicaoInicial() {
  for (i = 0; i < imagemCarros.length; i++) {
    if (carroPassouDaTela(xCarros[i])) {
      xCarros[i] = 600;
    }
  }
}

function carroPassouDaTela(xCarro) {
  return xCarro < -50;
}

// CRIOU UM BUG!!!
function aumentarVelocidade(){
  for (var i = 0; i < velocidadeCarros.length; i++) {
  velocidadeCarros[i] += 0.3    
  }
}

Fico à disposição para te ajudar caso surjam dúvidas ao decorrer dos seus estudos.

Grande abraço!

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