Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

SUGESTÃO DE CÓDIGO PARA RANDOMIZAR APARÊNCIA E VELOCIDADE DOS CARROS

Eu criei algumas funções para randomizar a imagem dos carros e suas velocidades, com a intenção de tornar o jogo mais dinâmico.

O jogo inicia conforme a configuração inicial vista nas aulas, mas quando um carro sai da tela uma nova imagem e uma nova velocidade são alocadas àquele carro.

É necessário criar duas listas: uma para ser um banco de imagens de carros e outra um banco de valores de velocidade.

Também usei a função getRandomInt(min, max) (disponível em https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/random) que retorna um valor inteiro entre um valor mínimo inclusivo e um máximo exclusivo.

//Na função preload():quando criar a lista "imagemCarros" com as imagens iniciais dos 6 carros, também criar uma segunda lista contendo todas as imagens de carros carregadas no jogo, sem repetição.

repositorioCarros = [imagemCarro1, imagemCarro2, imagemCarro3];

//Em carro.js criar uma lista com variadas velocidades
let repositorioVelocidades = [5, 2.5, 3.2, 2, 3.7, 2.3];

//Função que retorna uma imagem de carro aleatória da lista de imagens de carros.
function carroAleatorio(){
  let carro = repositorioCarros[getRandomInt(0,repositorioCarros.length)];
  return carro;
}

//Função que retorna um valor de velocidade aleatório da lista de velocidades.
function velocidadeAleatoria(){
  let velocidade = repositorioVelocidades[getRandomInt(0,repositorioVelocidades.length)];
  return velocidade;
}

//função que reinicia a posição do carro que saiu da tela, selecionando uma nova imagem e uma nova velocidade para o carro.
function reiniciaCarros(){
  for (i = 0; i < xCarros.length; i++){
    if (saiuDaTela(xCarros[i])){
      xCarros[i] = 660; // usei um canvas maior, por isso esse valor alto.
      velocidadeCarros[i] = velocidadeAleatoria();
      if (i != 0){
        imagemCarros[i] = carroAleatorio();
      } 
    }
  }
}

//função que retorna um número inteiro aleatório entre um valor mínimo e um valor máximo. O máximo é exclusivo e o mínimo inclusivo.
function getRandomInt(min, max) {
  min = Math.ceil(min);
  max = Math.floor(max);
  return Math.floor(Math.random() * (max - min) + min);
}
1 resposta
solução!

Perfeito, José!

Obrigado por compartilhar sua lógica conosco!

São atitudes como essa que faz com que nossa comunidade cresça cada vez mais e tenho certeza que vai contribuir muito com os alunos aqui também

Qualquer dúvida nos procure!

Um abraço e bons estudos