Bom dia,
Alguem consegue me ajudar nesse projeto?
É do jogo freeway, a minha vaca não está andando nem pra cima e nem pra baixo, já olhei tudo que meu conhecimento básico me disponibiliza, alguem conseguiria me dar uma ajuda?
Bom dia,
Alguem consegue me ajudar nesse projeto?
É do jogo freeway, a minha vaca não está andando nem pra cima e nem pra baixo, já olhei tudo que meu conhecimento básico me disponibiliza, alguem conseguiria me dar uma ajuda?
Oi, Daniel! Tudo bem contigo?
Após testar o seu projeto, não identifiquei nenhum problema na movimentação da vaquinha, seu código está correto! Para permitir sua locomoção, precisamos clicar com o botão direito do mouse sobre a tela do jogo.
Observe o GIF abaixo em que ilustro a vaca andando pela pista:
Espero que tenha dado tudo certo. Caso continue enfrentando esse desafio, estarei aqui para te ajudar.
Um abraço, Daniel!
Olá Daniel!
Testei seu jogo, e esta funcionando bem, voce tem que primeiramente clicar sobre o jogo com o botão direito e dois movimentar com as setas.
Boa Sorte!!
Eu mandei o link do jogo errado, peço perdão, o correto é esse aqui, pq fiz com os carros no sentido contrario e com a vaquinha mexendo para os lados tambem. só que a vaquinha agora só vai para os lados, não sobe e nem desce
Oi, Dani! Espero que esteja bem.
Peço desculpas pelo tempo que aguardou por uma resposta.
Antes de tudo, parabéns pela iniciativa! Muito legais as suas ideias de movimentação dos carros e do ator :)
Com relação ao seu problema, ele está ocorrendo devido à existência de múltiplas listas para representar os carros. Ao avaliar a colisão do ator com o carro, na função verificaColisao()
, consideramos apenas os itens contidos nas listas xCarros
e yCarros
— deixando de lado xCarros2
e yCarros2
.
Para resolver essa questão, podemos refatorar os códigos presentes no arquivo carros.js
, generalizando as listas e as funções. Abaixo, trago um exemplo de código que você pode utilizar:
let yCarros = [40, 96, 150, 210, 270, 318];
let xCarros = [600, 600, 600, -100, -100, -100];
let velocidadeCarros = [2, 3.2, 2.5, -5, -3.3, -2.3];
let comprimentoCarro = 50;
let alturaCarro = 40;
function mostraCarro() {
for (let i = 0; i < imagemCarros.length; i++) {
image(imagemCarros[i], xCarros[i], yCarros[i], comprimentoCarro, alturaCarro);
}
}
function movimentaCarro() {
for (let i = 0; i < imagemCarros.length; i++) {
xCarros[i] -= velocidadeCarros[i];
}
}
function voltaPosicaoInicialCarro() {
for (let i = 0; i < imagemCarros.length; i++) {
if (velocidadeCarros[i] > 0 && xCarros[i] < -50) {
xCarros[i] = 600;
} else if (velocidadeCarros[i] < 0 && xCarros[i] > 550) {
xCarros[i] = -100;
}
}
}
As mudanças foram:
Combinamos as listas xCarros
, xCarros2
, yCarros
, yCarros2
, velocidadeCarros
, e velocidadeCarros2
em listas individuais. Isso faz com que possamos usar um único loop em todas as funções, ao invés de dois;
A função voltaPosicaoInicialCarro()
foi modificada para verificar a direção do carro (se a velocidade é positiva ou negativa) e decidir qual limite verificar e qual valor reiniciar;
Removemos as funções passouTodaATela()
e passouTodaATela2()
, porque agora podemos verificar diretamente na função voltaPosicaoInicialCarro()
.
Com isso, deixamos o nosso código mais limpo e simples, permitindo, inclusive, que a função verificaColisao()
consiga reconhecer efetivamente quando há colisão da vaquinha com os carros! Além disso, também conseguimos mover horizontal e verticalmente o ator.
Espero que dê tudo certo em seu projeto! Em caso de dúvidas, fico à disposição.
Um forte abraço, Daniel!