private int executeViewer(int posX, int posY, boolean stop) {
        if (stop) return 1;
        if (posY < 0 || posY == matrix[0].length) return 1;
        if (posX < 0 || posX == matrix.length) return 1;

        stop = matrix[posX][posY].showValue();

        executeViewer(posX, (posY + 1), stop);
        executeViewer(posX, (posY - 1), stop);
        executeViewer((posX + 1), posY, stop);
        executeViewer((posX - 1), posY, stop);
        return 0;
    }