[JS] Problema ao movimentar o jogador pelo <canvas>
Boa tarde, galera!
Estou com problemas ao executar este programa, o player nasce fora do canvas, os botoes de movimento parecem estar bugados, e quando consigo trazer o player para dentro do canvas ele deixa rastros.
Código:
const canvas = document.getElementById('canvas')
const ctx = canvas.getContext('2d')
var x = canvas.style.width/2 //começa no meio do x (player)
var y = canvas.style.height/2 //começa no meio do y (player)
//objeto player com propriedades do quadrado
var player = {
color: 'black',
altura: '10',
largura: '10',
position: {
coordx: x,
coordy: y
},
mover: {
cima: () => this.position.coordy = y++,
baixo: () => this.position.coordy = y--,
direita: () => this.position.coordx = x++,
esquerda: () => this.position.coordx = x--
},
}
//desestruturação do objeto player
var {color, altura, largura, position, mover} = player
//le a tecla digitada
document.addEventListener('keydown', event => {
switch(event.keyCode){
case 37: //esquerda
mover.esquerda()
break;
case 39: //direita
mover.direita()
break;
case 38: //cima
mover.cima()
break;
case 40: //baixo
mover.baixo()
break;
}
})
//desenha o player na tela
function draw(){
ctx.fillRect(position.coordx, position.coordx, largura, altura)
ctx.fillStyle = color
ctx.clearRect(position.coordx, position.coordy, largura, altura)
requestAnimationFrame(draw) //looping do programa
}
draw() //inicio do programa
HTML:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
#canvas{
height: 400;
width: 400;
background-color: aquamarine;
}
</style>
</head>
<body>
<canvas id="canvas"></canvas>
<script>
//script esta em cima
</script>
</body>
</html>