Oi Marcelo! Tudo bem por aí?
Peço desculpas pela demora responder tuas questões.
Muito legal ver que você explorou tantas formas de resolver esse problema! Parabéns por sua dedicação.
Vou te mostrar a forma que eu consegui resolver. Para atribuir velocidades aleatórias, podemos criar a seguinte função:
//velocidade aleatorias
function velocidadeAleatoria() {
return Math.random() * (7 - 3) + 3;
}
E na lista velocidadeCarros
, todos os valores serão a chamada da função. Dessa forma:
velocidadeCarros = [velocidadeAleatoria(), velocidadeAleatoria(), velocidadeAleatoria(), velocidadeAleatoria(), velocidadeAleatoria(), velocidadeAleatoria()]
Assim, a cada vez que o play for clicado, as velocidades definidas serão um novo valor aleatório entre 3 e 7.
Utilizamos o método getRandomArbitrary.
Vou deixar aqui a documentação oficial, caso você tenha interesse:
O artigo está em inglês. Caso tenha dificuldade com esse idioma, recomendo utilizar o tradutor do próprio navegador, clicando com o botão direito do mouse e selecionando traduzir para o português.
Para fazer com que o movimento dos carros volte a acontecer, precisamos fazer algumas alterações no seu código. Muitas vezes, utilizar o ctrl + z e copiar códigos da aula pode resultar em algumas informações faltantes. Vamos lá:
1- Complete as listas xCarros
e yCarros
let xCarros = [600, 600, 600, 600, 600, 600]
let yCarros = [45, 96, 152, 210, 270, 318];
2- Na função mostraCarro()
, configure todas as linhas para que obtenham um valor das listas. Você também pode criar variáveis para altura e comprimento dos carros para que o código fique mais legível.
function mostraCarros(){
image(carro1, xCarros[0], yCarros[0], comprimentoCarro, alturaCarro);
image(carro2, xCarros[1], yCarros[1], comprimentoCarro, alturaCarro);
image(carro3, xCarros[2], yCarros[2], comprimentoCarro, alturaCarro);
image(carro3, xCarros[3], yCarros[3], comprimentoCarro, alturaCarro);
image(carro2, xCarros[4], yCarros[4], comprimentoCarro, alturaCarro);
image(carro1, xCarros[5], yCarros[5], comprimentoCarro, alturaCarro);
}
3 - Altere a função movimentaCarro()
para que as informações também sejam retiradas das listas.
function movimentaCarro(){
xCarros[0] -= velocidadeCarros[0];
xCarros[1] -= velocidadeCarros[1];
xCarros[2] -= velocidadeCarros[2];
xCarros[3] -= velocidadeCarros[3];
xCarros[4] -= velocidadeCarros[4];
xCarros[5] -= velocidadeCarros[5];
}
4 - Na função voltaCarroPraDireita()
, especifique o item da lista em cada xCarros
, de 0 a 5.
function voltaCarroPraDireita(){
if(xCarros[0] < -50){
xCarros[0] = 600
}
if(xCarros[1] < -50){
xCarros[1] = 600
}
if(xCarros[2] < -50){
xCarros[2] = 600
}
if(xCarros[3] < -50){
xCarros[3] = 600
}
if(xCarros[4] < -50){
xCarros[4] = 600
}
if(xCarros[5] < -50){
xCarros[5] = 600
}
}
Agora os carrinhos se movimentam, e a cada vez que o play for clicado a velocidade será diferente.
Já sobre o Pong, percebi que o som de vitória e derrota está com problemas e também que o texto não está centralizado. Para corrigir o texto, basta alterar o x
para 300, e ficará centralizado.
text ("Você Perdeu! :c", 300, 200);
O som provavelmente está saindo distorcido por um arquivo corrompido. Sugiro que você exclua e faça o upload novamente. Caso o problema ainda persista, me avise e te ajudo a descobrir o que pode estar acontecendo.
Espero ter ajudado! Continue estudando e buscando formas de deixar os projetos com o seu jeitinho.
Abraço, Marcelo!