Estou tentado fazer o exercício com o js dom, ao invés de utilizar o canvas, eu criei uma "div" para fazer referência ao jogo. Montei o código abaixo, porém não sei como implementar a colisão, o personagem está se movimentando e os carros também, (obs.: eu só preciso da colisão). Eu até tive uma ideia a qual coloquei como comentário na última linha, se alguém puder me ajudar a desvendar o "mistério da colisão", eu agradeço muito:
let gameWindow = document.querySelector(".gameWindow");
let jogador = document.createElement("div");
jogador.id = "jogador";
jogador.classList.add("jogador");
let playerPositionY = 460;
let playerPositionX = 385;
jogador.style.top = playerPositionY + "px";
jogador.style.left = playerPositionX + "px";
gameWindow.appendChild(jogador);
let velocity = 5;
let y = 0;
document.addEventListener("keydown", (event)=>{
const keyName = event.key;
switch(keyName){
case "ArrowUp":
y--;
vertical();
break;
case "ArrowDown":
y++;
vertical();
break;
}
})
let arr = [];
let carro1PosicaoX = 700;
let carro1PosicaoY = 130;
let carro1 = document.createElement("div");
carro1.classList.add("carro1")
carro1.style.top = carro1PosicaoY + "px";
carro1.style.left = carro1PosicaoX + "px";
gameWindow.appendChild(carro1);
let carro2PosicaoX = 350;
let carro2PosicaoY = 270;
let carro2 = document.createElement("div");
carro2.classList.add("carro2")
carro2.style.top = carro2PosicaoY + "px";
carro2.style.left = carro2PosicaoX + "px";
gameWindow.appendChild(carro2);
// let carro3PosicaoX = 700;
let carro3PosicaoY = 400;
let carro3PosicaoX = 0;
let carro3 = document.createElement("div");
carro3.classList.add("carro3")
carro3.style.top = carro3PosicaoY + "px";
carro3.style.left = carro3PosicaoX + "px";
gameWindow.appendChild(carro3);
let dx1 = 1;
let dx2 = 1;
let dx3 = 1;
let velocityCarro1 = 4;
let velocityCarro2 = 4;
let velocityCarro3 = 4;
function moveCar1(){
carro1PosicaoX+=(dx1*velocityCarro1);
carro1.style.left = carro1PosicaoX + "px";
if(carro1PosicaoX > 720){
dx1 = -1;
} else if (carro1PosicaoX <30){
dx1 = 1;
}
anima = requestAnimationFrame(moveCar1);
}
window.requestAnimationFrame(moveCar1);
function moveCar2(){
carro2PosicaoX+=(dx2*velocityCarro2);
carro2.style.left = carro2PosicaoX + "px";
if(carro2PosicaoX > 720){
dx2 = -1;
} else if (carro2PosicaoX <30){
dx2 = 1;
}
anima = requestAnimationFrame(moveCar2);
}
window.requestAnimationFrame(moveCar2);
function moveCar3(){
carro3PosicaoX+=(dx3*velocityCarro3);
carro3.style.left = carro3PosicaoX + "px";
if(carro3PosicaoX > 600){
dx3 = -1;
} else if (carro3PosicaoX < 30){
dx3 = 1;
}
anima = requestAnimationFrame(moveCar3);
}
window.requestAnimationFrame(moveCar3);
function vertical(){
movePlayerY = velocity * y + playerPositionY;
jogador.style.top = movePlayerY + "px";
arr.push(movePlayerY)
console.log(arr)
}
// O que eu tenho que fazer é criar um array que verifique se existe algum carro que esteja na posição x quando o personagem estiver na posição y, se as duas posições forem iguais (posiçãoCarroX == posiçãoJogadorY), então quer dizer que o carro conseguiu colidir com o jogador, para que possamos verificar se isso está ocorrendo devemos criar um array que sempre marca a posição do jogador e a posição dos carros, quando houver a coincidência, haverá a colisão, se não houver, o jogador ganha um ponto, se houver o jogador perde um ponto.