Я пытался отскочить мяч вокруг холста с гравитацией. Каждый раз, когда мяч ударяется о боковые или нижние стенки, скорость x и y должна уменьшаться. Следующий код не работает, потому что мяч просто падает сквозь стены.

{amp}lt;canvas id="canvas" width="200" height ="200"{amp}gt;{amp}lt;/canvas{amp}gt; var Ball=function(color) { this.color=color; this.x =100; this.y =100; this.xSpeed =5; this.ySpeed =3; }; 

}

  Ball.prototype.move =function () { this.x  = this.xSpeed; this.y  = this.ySpeed; }; Ball.prototype.checkCollison =function () { if(this.x {amp}lt; 0 ) { if(this.xSpeed {amp}gt;0){ this.xSpeed--; }else if(this.xSpeed{amp}lt;0) { this.xSpeed  ; } this.xSpeed = -this.xSpeed; }else if(this.x {amp}gt;200) { if(this.xSpeed {amp}gt;0){ this.xSpeed--; }else if(this.xSpeed{amp}lt;0) { this.xSpeed  ; this.xSpeed = -this.xSpeed; }else if(this.y {amp}lt; 0 ) { if(this.ySpeed{amp}gt;0) { this.ySpeed--; }else if(this.ySpeed{amp}lt;0) { this.ySpeed  ; } this.ySpeed = -this.ySpeed; } } }; 

Пожалуйста, дайте мне знать, если у вас есть решение.

После долгих проб и ошибок я наконец-то понял ответ на эту часть кода:

 Ball.prototype.checkCollison =function () { if(this.x {amp}lt;= 0 ) { if(this.xSpeed {amp}lt;0) this.xSpeed  ; this.xSpeed = -this.xSpeed; this.x=1; } else if( this.x {amp}gt;= 200) { if(this.xSpeed {amp}gt; 0) this.xSpeed--; this.xSpeed = -this.xSpeed; this.x--; } else if( this.y {amp}gt;= 200) { if(this.ySpeed {amp}gt;0) this.ySpeed--; this.ySpeed = -this.ySpeed; this.y--; } else if(this.y{amp}lt;=0) { this.ySpeed=-this.ySpeed; } }; 

Спасибо всем за то, что пытаетесь помочь, я ценю усилия.