【Scratch入門】リストから数値データを使いこなす
※ 当ページには【広告/PR】を含む場合があります。
2020/08/19
2022/08/19
ビッグデータやデータサイエンスという言葉がこの10年でずいぶんと一般に知られるようになった現代において、データを取り扱うというのはコンピューター科学にとってもますます重要なテーマになっています。
Scratchで大量のデータを取り扱う場合、
今回はリストを使って、テキストからデータを読み込んでプログラミングでどう利用するのかという基礎的なところを学習します。
テキストデータからのインポート
まずはリストを作成しましょう。
左の
変数
リストを作る
新しいリスト
リストのテスト

最初にリストを作成すると、リストに関するブロックとともに、空のリストがScratchの画面に追加されます。

次に下の内容でテキストファイルを用意します。
名前は何でもOKですが、今回は
リストのテスト.txt
1 2 3 4
5 6 7 8
1 2 3 4
5 6 7 8
1 2 3 4
5 6 7 8
1 2 3 4
5 6 7 8
1 2 3 4
5 6 7 8
1 2 3 4
5 6 7 8
このテキストはパソコンのフォルダのどこかに保存しておきましょう。
そして、Scratchの実行画面に表示されたリストの上でマウスを右クリックすると、
読み込み

すると、以下のようにファイルを選択する
ファイルのアップロード
リストのテスト.txt
開く

するとこのテキストファイルが読みこまれ、以下のようにリストに反映されました。

このリストのデータを使って、プログラムの中で利用することができます。 以降ではリストの具体的な使い方を紹介していきます。
データテキストのフォーマット
具体的なブロックコーディングに話を移すまえに、Scratchに読み込むテキストデータのフォーマット(書式)についての注意点を簡単に触れておきます。
Scratchのリストは
csv形式のデータは、コンマ文字(
,
1列目,2列目,3列目,4列目,5列目
1列目,2列目,3列目,4列目,5列目
1列目,2列目,3列目,4列目,5列目
1列目,2列目,3列目,4列目,5列目
...以下略
というテキストがあったとして、Scratchが読み込むのは1列だけ...ここでいうと、1〜5列目のうちどれか一つということになります。
よって、一つのリストにすべての列を入力したリストを作成したい場合、コンマを含むデータテキストはScratchでは利用不可です。
ここでのコンマのような、データの境目を表す文字を、区切り文字(セパレーター)といいますが、コンマ以外がセパレーターであれば、Scratchはデータ区切りを無視してくれます。
ということで、上のテキストデータは、セパレーターに空白文字(
リストを利用したプログラミング
それではまず先程作成したリスト
リストのテスト
まず、
行
列

これがテキストデータでの何行目、何列目の数をそれぞれ表しています。 例えば今回の場合、1行目の3列目の数値は
3
まず行だけを上から下まで読み込んで、何かを行うためのブロックは以下のようになるでしょう。

このとき、
行
また、ひとつの列を操作する場合には、以下のようなブロックで扱います。
リストのブロックである、
"リスト"の〜番目
あとは演算にある
〜の長さ
列

ということで、
'リストのテスト'の'行'番目の'列'番目の文字
以上、これらのブロックを組み合わせると、

となり、下のようなプログラムになります。
区切り文字の処理
先程のプログラムでは、一行の文字をまるごとすべて読みこんでいたので、区切り文字(空白文字)も表示していました。
実際のプログラムにとっては区切り文字は利用しませんので、意味のある数値データだけを取り出してみましょう。
先程のブロックコードから少し中身を修正して、

とします。
制御のブロック
もし〜なら〜でなければ〜
その中身の条件ですが、空白文字ですので、一見なにも見えないと思いますが、きっちりと
" "

これを動かすと、
のように
区切り文字
実データ
リストを使った簡単な応用
最後に簡単なリストデータの利用を考えてみましょう。
先程のプログラムから編集していきます。
まずは猫のスプライトとは別に、もうひとつスプライトを用意します。 ここでは
スタンプ
この新しいスプライトのコスチュームを8個ほど、下の図のように適当にダウンロードしてみました。

新しい
スタンプ

ブロックコーディングの前に、コスチュームの番号を記録する
絵柄番号
また、今回は
メッセージイベント
下のように、
イベント
新しいメッセージ
絵を変える

まずは猫のスプライトからブロックコーディングしていきます。
上記までのブロックプログラムから以下のように修正します。

ポイントとしては、コスチューム番号をデータとして受け取り、その値を
絵柄番号
絵を変える
次に
スタンプ

こちらは先程設定した、
絵を変える
以上で、リストからデータを受け取り、その値でコスチュームを操作しているプログラムになってると思います。
まとめ
Scratchでテキストデータを扱う場合に、リストの使い方をマスターすることが重要です。
リストを使うことで、より応用的なプログラミングも可能になります。
これを機会に積極的に利用していっても面白いと思います。