public void draw() {
		// Arrêt des animations joueurs si inactivité du clavier
		if(!(keyboard.isDown(keyboard.Z)) && !(keyboard.isDown(keyboard.S)) && !(keyboard.isDown(keyboard.Q)) && !(keyboard.isDown(keyboard.D))){
			joueur1.play("Stop");
		}
		if(!keyboard.isDown(keyboard.UP) && !keyboard.isDown(keyboard.DOWN) && !keyboard.isDown(keyboard.LEFT) && !keyboard.isDown(keyboard.RIGHT)){
			joueur2.play("Stop");
		}
		
		canvas.clear();

		// Affichage du plateau et gestion de la collision avec les murs
		for (int hauteur = 0; hauteur < grilleJeu.length; hauteur++) {
			for (int largeur = 0; largeur < grilleJeu[0].length; largeur++) {
				grilleJeu[hauteur][largeur].draw();
				if (!(grilleJeu[hauteur][largeur] instanceof Chemin)) {
					joueur1.stopIfCollidesWith(grilleJeu[hauteur][largeur]);
					joueur2.stopIfCollidesWith(grilleJeu[hauteur][largeur]);
				}
			}
		}

		// Affichage des flammes et gestion de leur expansion
		for (int i = 0; i < flammes.size(); i++) {
			Flamme f = flammes.get(i);
			if (!f.isBlown()) {
				f.draw();
				if ((!f.isSpread())
						&& grilleJeu[f.getHauteur()][f.getLargeur()]
								.est_traversable()) {
					f.spread();
				}
			} else {
				f.hide();
				flammes.remove(f);
				effets[f.getHauteur()][f.getLargeur()]--;
			}
		}

		// Affichage des bombes et gestion de leur explosion
		for (int i = 0; i < bombes.size(); i++) {
			Bombe b = bombes.get(i);
			if (b.isBurst()) {
				b.hide();
				bombes.remove(b);
			} else {
				b.draw();
				joueur1.stopIfCollidesWith(b);
				joueur2.stopIfCollidesWith(b);
				if (b.readyToExplode() || effets[b.getHauteur()][b.getLargeur()]>0) {
					b.burst();
					explodeSound.play();
					blowSound.play();
				}
			}
		}

		// Affichage des joueurs
		joueur1.draw();
		joueur2.draw();
	}