public ArrayList<Move> generateAllPossibleMoves(boolean color) {
		ArrayList<Move> moves = new ArrayList<Move>();
		final List<Piece> listPiece;

		// Sélectionne la liste des pièces selon la couleur
		if (Helper.isColorWhite(color)) {
			listPiece = whites;
		} else {
			listPiece = blacks;
		}

		// Parcours les pièces afin de lister les mouvements possibles
		boolean existRoi = false;
		for (final Piece piece : listPiece) {
			if (piece.getClass().equals(Roi.class)) {
				existRoi = true;
			}
			final ArrayList<Move> movesForThisPiece = piece.generateMovesForThisPiece(this);
			if (!(movesForThisPiece.isEmpty())) {
				for (final Move move : movesForThisPiece) {
					moves.add(move);
				}
			}
		}

		// Si il n'y a plus de roi alors la partie s'arrete
		if (!existRoi) {
			moves = new ArrayList<Move>();
		}

		if (Helper.isColorWhite(color)) {
			setNbWhiteMoves(moves.size());
		} else {
			setNbBlackMoves(moves.size());
		}

		return moves;
	}