2
respostas

Duvida sobre a velocidade

assistindo a aula, achei que manter as velocidades constantes deixaria o jogo sem desafio depois de 3 ou 4 partidas, então decidi usar uma função para gerar velocidades aleatórias, assim os carros não teriam padrões.

meu primeiro desafio foi fácil, substituir a velocidade pré-definida pela função:

let velocidadeCarro1 = Math.round(Math.random() * 10);

let velocidadeCarro2 = Math.round(Math.random() * 10);

let velocidadeCarro3 = Math.round(Math.random() * 10);

meu segundo desafio me deu mais trabalho, como fazer os números somente serem sorteados entre 3 e 7, assim não viraria um foguete, caso desse 7, ou uma lesma caso desse 1, e não corre o risco de sair um 0 e ele nunca surgir, depois de um pouco de pesquisa achei a solução na internet, porém não funcionou, também tentei fazer a minha moda usando um if, porém sem sucesso:

Solução 1:
function getRandomInt(min, max) {
  min = Math.ceil(3);
  max = Math.floor(7);
  return Math.floor(Math.random() * (max - min)) + min;
}

solução 2:

function numeroAleatorio(){
  var velo = Math.round(Math.random() * 10)
  if(velo < 3){
    velo +2
  }
  if(velo > 7){
    velo - 2
  }
  console.log(velo);
}

numeroAleatorio();

Como que posso fazer o jogo gerar números aleatórios entre 3 e 7 e joga-los no array ?

aqui segue o link do jogo, caso queiram ver algo a mais: https://editor.p5js.org/Ryuuji_Staz/sketches/SdgSyIvzb

PS: meu jogo do ponto também deu bug nas telas de derrota e vitória, e não consigo saber o porque: https://editor.p5js.org/Ryuuji_Staz/sketches/Wmi4WfWKu

2 respostas

depois desses testes o meu p5 parou de funcionar, mesmo voltando tudo ao normal com ctrl+z, os carros mantinham sempre a velocidade, depois as imagens bugaram, criei um novo arquivo e copiei igual o do prof e não funcionou, tem algum jeito de arrumar isso ?

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!