public boolean isValidSwap(int selectedI, int selectedJ, int swappedI,
			int swappedJ) {
		// il faut que les cases soient dans la grille
		if (selectedI == -1 || swappedI == -1 || selectedJ == -1
				|| swappedJ == -1)
			return false;
		// que les cases soient à côté l'une de l'autre
		if (Math.abs(swappedI - selectedI) + Math.abs(swappedJ - selectedJ) != 1)
			return false;
		// et que les couleurs soient différentes
		if (grid.casesEqual(grid.getCase(selectedI, selectedJ),
				grid.getCase(swappedI, swappedJ)))
			return false;
		// alors on effectue l'échange
		grid.swap(selectedI, selectedJ, swappedI, swappedJ);

		// et on vérifie que ça créé un nouvel alignement
		boolean newAlignment = false;
		for (int i = 0; i < 3; i++) {
			newAlignment |= horizontalAligned(selectedI - i, selectedJ);
			newAlignment |= horizontalAligned(swappedI - i, swappedJ);
			newAlignment |= verticalAligned(selectedI, selectedJ - i);
			newAlignment |= verticalAligned(swappedI, swappedJ - i);
		}

		// puis on annule l'échange
		grid.swap(selectedI, selectedJ, swappedI, swappedJ);
		
		return newAlignment;
	}