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);
}