Проблема в блоке
if (ballx > 0) {
ballspeedx = 5;
}
Если шарик находится на самом правом краю (800), он все равно больше нуля. Поэтому, даже если вы измените скорость (что и должно быть), это автоматически настроит ее на дальнейшее движение вправо. Я изменил вашу moveEverything()
функцию на эту, и она работала нормально:
function moveEverything() {
ballx = ballx + ballspeedx;
if (ballx > 800 || ballx < 0) {
ballspeedx = -ballspeedx;
ballx += ballspeedx;
}
}
Кроме того, вы не должны перемещать мяч в drawEverything()
, это просто плохой дизайн.