Bah je pense oui.
Vous trouverez mon code HTML et JS ci dessous:
HTML:
<!doctype html>
<html lang="fr">
	<head>
		<meta charset="utf-8">
		<title>Animation dans le Canvas</title>
		<script src="test2.js"></script>
        <link rel="stylesheet" href="test.css">
	</head>
	<body>
        <p id="score">0</p> </br> 
        <p id="scoreJ2">0</p>
		<canvas id="myCanvas" width="1915" height="900" style="border:1px black solid"></canvas>
        
	</body>
</html>
JS:
//VARIABLES	
	
var canvas;
var context;
var document;
// VARIABLES POUR BALLE
var rayon = 12; 
var posX = 957; 
var posY = 450;
//POSITION DE DEPART DE LA BALLE
var vx = 19;
var vy = 19;
// VITESSE DE LA BALLE
// JOUEUR 1 (A GAUCHE)
var xr = 5;
var yr = 245;
// POSITION DE DEPART DE J1
var largeur = 20;
var hauteur = 125;
// JOUEUR 2
var xr2 = 1880;
var yr2 = 244;
// POSITION DE DEPART DE J1
var largeur2 = 20;
var hauteur2 = 125;
//----------------------------------------------------------------------------------------------------------------------------------------------//
     
     
window.onload = function() 
{
		canvas = document.getElementById("myCanvas");
		context = canvas.getContext("2d");
     
        // AFFICHER LE CANVAS ET LE CONTEXTE GRAPHIQUE
		
		
		
		setInterval(animate,20); //LANCER L'ANIMATION
		
}
 
//----------------------------------------------------------------------------------------------------------------------------------------------//
                                      // FONCTION POUR ANIMER/AFFICHER TOUS LES ELEMENTS //
 
function animate() 
{    
    if (posY > canvas.height - rayon || posY<0) {
		vy = -vy
    } // REBONDIR SUR LES BORDS HAUT ET BAS DU CANVAS
    
    
    // COLLISION 
    
    if( !(posX >= xr + largeur || posX <= xr || posY >= hauteur + yr || posY <= yr)  ){ 
        vx = -vx; 
    }
    
    else if( !(posX >= xr2 + largeur2 || posX <= xr2 || posY >= hauteur2 + yr2 || posY <= yr2)  ){
            vx = -vx;        
    }
    
    
    
var scoreJ1 = 0;
var scoreJ2 = 0;
    
    if (posX < 0){
        scoreJ2 = scoreJ2 + 1;
        document.getElementById('scoreJ2').innerHTML = scoreJ2 
        
        
    }
    
    if (posX >1915){
        scoreJ1 = scoreJ1 + 1;
        document.getElementById('score').innerHTML = scoreJ1;
    }
    
		
    
    
    
    
    
    
	balle(); // AFFICHER LA BALLE
    
    ligneMilieu(); // LIGNE DU MILIEU
	rect(); // AFFICHER JOUEUR 1
    
	rect2(); // AFFICHER JOUEUR 2
        
    movePlayer(); // FAIRE BOUGER J1
    
    movePlayer2(); // FAIRE BOUGER J2
    
    remise(); //FONCTION POUR REMISE
    
    reset(); //FOCNTION POUR LE RESET DE LA BALLE
    
    
}
//----------------------------------------------------------------------------------------------------------------------------------------------//
                                            // DESSIN DE LA BALLE ET DES 2 JOUEURS //
function balle() // DESSIN DE LA BALLE
{
		// Clear
		context.clearRect(0, 0, canvas.width, canvas.height);
		// Draw Mob
		context.beginPath();
		context.arc(posX, posY, rayon,0, 2*Math.PI); // POSITION ET MISE EN FORME DE LA BALLE
        context.fillStyle = "white"; // COULEUR
		context.closePath();
		context.fill();
        
        
}
function rect() {  // JOUEUR 1
	context.beginPath();
    context.rect(xr,yr,largeur,hauteur);
    context.fillStyle = "white";
    context.fill();
    context.closePath();
	
}
function rect2() { // JOUEUR 2
	context.beginPath();
    context.rect(xr2,yr2,largeur2,hauteur2);
    context.fillStyle = "white";
    context.fill();
    context.closePath();
	
}
//----------------------------------------------------------------------------------------------------------------------------------------------//
function ligneMilieu() {
	
		context.beginPath();
		context.setLineDash([20, 15]); // POINTILLES 
		context.moveTo((canvas.width / 2), canvas.height); // COORDONNES DU POINT DU DEBUT DE LA LIGNE
		context.lineTo((canvas.width / 2), 0); // COORDONNES DU POINT DE LA FIN DE LA LIGNE
		context.lineWidth = 10;
		context.strokeStyle = "white";
		context.stroke(); // TRACEE DE LA LIGNE
}	
//----------------------------------------------------------------------------------------------------------------------------------------------//
 
                                                     // MOUVEMENT DES JOUEURS //
// J1
function hautz() { // TOUCHE Z
	yr=yr-15
}
function bass() { // TOUCHE S
	yr=yr+15
}
// J2
function hautf() { // FLECHE DU HAUT
	yr2=yr2-15
}
function basf() { // FLECHE DU BAS
	yr2=yr2+15
}
// LES JOUEURS MONTENT OU DESCENDENT
// DEPLACEMENTS FLUIDES DES JOUEURS
var goDown = false;
var goUp = false;
var goDown2 = false;
var goUp2 = false;
// AU DEBUT LES JOUEURS NE BOUGENT PAS (D'OU LE "FALSE")
document.onkeydown = function (event) // QUAND LA TOUCHE EST ENFONCE
	{
		if (event.keyCode == 90 ) goUp = true;  // = Z
		if (event.keyCode == 83 ) goDown = true; // = S
    
		if (event.keyCode == 38 ) goUp2 = true; // = FLECHE HAUT
		if (event.keyCode == 40) goDown2 = true; //=FLECHE BAS
    
        // SI LA TOUCHE EST ENFONCE, ALORS LES JOUEURS SE DEPLACENT (D'OU LE "TRUE")
    
            
		if (event.keyCode == 32) enJeu = true;
			
}
document.onkeyup = function(event){ // QUAND LA TOUCHE EST RELACHE ALORS LES JOUEURS S'ARRETENT ("FALSE")
    if (event.keyCode == 90) goUp = false;
    if (event.keyCode == 83 ) goDown = false;
    
    if (event.keyCode == 38) goUp2 = false;
    if (event.keyCode == 40 ) goDown2 = false;
}
// FONCTIONS POUR QUE LES JOUEUERS NE SORTENT PAS DU CANVAS
function movePlayer() {
    if (goUp && yr > 0) hautz();
    if (goDown && yr < canvas.height - hauteur) bass();
    
}
function movePlayer2(){
    if (goUp2 && yr2 > 0) hautf();
    if (goDown2 && yr2 < canvas.height - hauteur) basf();
}
//----------------------------------------------------------------------------------------------------------------------------------------------//
                                                        // ENGAGEMENT ET RESET DE LA BALLE //
function reset() { 
    if ( posX < 0 || posX > 1915){
        posX = 1000;
        posY = 450;
        
    } // RESET DE LA BALLE
}
function remise() {
    if (this.enJeu) {
		posX = posX - vx;
        posY = posY + vy;
        // ENGAGEMENT        
    }
}
//----------------------------------------------------------------------------------------------------------------------------------------------//