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

[Dúvida] Velocidade aleatória para os carros

Como eu poderia adicionar uma velocidade aleatória para os carros? Ao invés de sempre manter um padrão entre eles. Existe alguma função semelhante ao randint do python para isso?

1 resposta
solução!

Olá André, tudo bem? Espero que sim

Gostaria de agradecer por levantar essa questão, e dar os parabéns por querer aprender mais e se desafiar a implementar novas funções e elaborar ainda mais o seu jogo.

Podemos usar um comando da própria biblioteca do JavaScript Math.random() ela é responsável por gerar números aleatórios, a título de curiosidade deixo o link para a documentação.

Depois podemos criar uma função que gera dois números, por exemplo entre 2 e 4, o carro só vai poder alternar entre essas velocidades escolhidas, a função que gera esses números fica assim:

function GeraVelocidadeCarros(min, max) {
  return Math.random() * (max - min) + min;
}

A função recebe um valor mínimo(min) e depois um máximo(max)

Depois vamos na função que reconhece quando o carro ultrapassa a tela, ou seja, toda vez que o carro passa a tela ele muda a velocidade.

function voltaPosicaoInicialDoCarro(){  
 for (let i = 0; i < imagemCarro.length; i++){
if (passouTodaATela(xCarros[i])){
     xCarros[i] = 600;
      velocidadeCarros[i] = GeraVelocidadeCarros(1,5); // gera uma nova velocidade
  }
 }
}

Desse modo o jogo fica bem mais dinâmico e onde ficou "(1,5)" você pode alterar deixando mais rápido ou mais lento, fique a vontade para alterar, deixo o código completo para te auxiliar, lembrando que as minhas variáveis podem ser diferentes das suas e que todas essas alterações é no arquivo carro.js.

//código do carro

let xCarros = [600, 600, 600, 600, 600, 600]
let yCarros = [40, 96, 150, 210, 270, 318];
let velocidadeCarros = [2, 2.5, 3.2, 5, 3.3, 2.3];
let comprimentoCarro = 55;
let alturaCarro = 35;

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

 }
}

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

function voltaPosicaoInicialDoCarro(){  
 for (let i = 0; i < imagemCarro.length; i++){
if (passouTodaATela(xCarros[i])){
     xCarros[i] = 600;
      velocidadeCarros[i] = GeraVelocidadeCarros(2, 6);
  }
 }
}

function passouTodaATela(xCarros){
  return xCarros < - 50;

}
function GeraVelocidadeCarros(min, max) {
  return Math.random() * (max - min) + min;
}

Espero que com essas dicas eu consiga te ajudar, qualquer dúvida me coloco a disposição.

Um grande abraço e até mais!

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