public void demandeDeplacement(final int dx, final int dy)
	{
		final int nouveauX = this.x + dx;
		final int nouveauY = this.y + dy;

		if (!this.mort) {
			// Verifier mort pirate
			final BandeDeSingesErratiques bandeSinge = this.monkeyIsland.getSingesErratiques();
			final List<SingeErratique> vectorSinge = bandeSinge.getSingesErratiques();
			final Iterator<SingeErratique> iteSinge = vectorSinge.iterator();
			while (iteSinge.hasNext() && !this.mort) {
				final SingeErratique singe = iteSinge.next();
				if (singe.coordonneesEgales(nouveauX, nouveauY)) {
					this.mort = true;
				}
			}
			// Verifier detruire tresor
			if (this.monkeyIsland.getTresor().coordonneesEgales(nouveauX, nouveauY)) {
				this.monkeyIsland.suppressionTresor();
			}

			// Appel  l'IHM
			for (final PirateEcouteur ecouteur : this.pirateEcouteurs.getListeners(PirateEcouteur.class)) {
				if (this.mort) {
					ecouteur.mortPirate(0);
				} else {
					ecouteur.liberationClavier();
					// Gestion des bords
					if (this.monkeyIsland.valeurCarte(nouveauX, nouveauY) == Integer.valueOf(1)) {
						this.setX(nouveauX);
						this.setY(nouveauY);
						ecouteur.deplacementPirate(0, nouveauX, nouveauY);
					}
				}
			}
		}
	}