KLWPでテキストファイルの中から指定した行のテキストを表示する

KLWPを使って画面上に指定したテキストを表示する方法はいくつかあります。今回はその表示するテキストを別ファイルとして用意し、そのテキストファイルの中から指定した行のテキストを表示する方法です。
これを使うと、名言集などを用意して、その中からランダムに表示するといったことができるようになります。

1.テキストファイルを用意する

まずは1行に1つの言葉を記したテキストファイルを用意します。今回は適当にスヌーピーの名言を15個書き記したものを用意しました。

ここで気をつけることは、このテキストファイルの文字コードをUTF-8で保存することです。Windowsのメモ帳などで何も考えずにShift_JISで保存したりすると、文字化けする事になります。

2.KLWPで表示する

KLWPのテキストで次のように入力します。

$sh("sed -n 2p /storage/emulated/0/Kustom/txt/test.txt")$

これはKLWPの$sh()$で表示できるシェルコマンドで、指定したファイルの指定した行を表示するというものです。

青字の2pという部分が何行目という指示になります。2pなので2行目が表示されます。こういったものだと先頭を0行目とすることも多いですが、この場合は先頭が1行目です。なお、0pにするとファイルの内容が全て表示されます。(ただしパラメータを付けないと5行目まで。)

赤字の部分がファイルの位置を示します。ここで指定したファイルが表示されます。

ファイルの位置(パス)については、ファイラーアプリで確認できますし、そのままパスをコピーすることができるアプリもあります。(画像はSolid Explorerを使ってます。)

ランダムに表示する

指定した行を表示するだけであれば、そのまま入力したほうが早いですよね。なので次は、ファイルの○行目というのをランダムにしてみます。

今回のコードは以下になります。

$sh("sed -n $((RANDOM%15+1))p /storage/emulated/0/Kustom/txt/test.txt")$

最初の例の2pという行数の指定部分が$((RANDOM%15+1))pというものになりました。RANDOMはシェルコマンドでランダムな数字を出すもので、%15はそれを15で割った「余り」を表示するものです。これで0から14までのランダムな数字が取り出せます。今回は0行目だと全文表示されてしまうので、最後に1を足しています。これで1から15までの数字が取り出せます。

問題点

ただ、このランダムは切り替わる時間の指定ができません。とりあえず私の環境だと2分おきに表示が切り替わりました。$((RANDOM%15+1))の部分をKLWPの$tu(rnd, 1, 1, 15)$などに置き換えられれば良かったのですが、このままシェルコマンドの中に入れることはできないようです。

2分程度であれば、その間ずっとホーム画面を見つめているということもないので大丈夫だとは思いますが、切り替え時間を厳密に決めたいという人には不満かもしれません。

代替案

今回の趣旨とは外れますが、間隔を自分で決めてランダムに表示したいのであれば以下のようにするのがいいと思います。

$if(tu(rnd, 10, 1, 4)=1, alpha, tu(rnd, 10, 1, 4)=2, beta, tu(rnd, 10, 1, 4)=3, gammma, omega)$

単純にifを使ってすべてテキストの中に入れてしまう方法です。ちょっと内容が長くなるので、別アプリで書いてペーストするのがいいと思います。

まとめ

まだ少し制限は付きますが、今回のような方法を使えば画面上のキャラに好きな言葉をランダムに喋らせたり、モチベーションアップする標語を画面上にランダム表示させることができます。何かに使えるかもしれませんね。

KLWPの使い方についてはこちらのページにてまとめています。使い方に困ったときなど、こちらのページも参考にしてください。

この記事が気に入ったら
いいね!しよう
 シェアする  ツイートする
PREVIOUS POST
NEXT POST
ANDROID
GIVES YOU
MORE