※ 当ページには【広告/PR】を含む場合があります。
2020/08/19
2022/08/19
【Scratch入門】コスチュームを変えてスプライトのアニメーション効果を付ける
【Scratch入門】リストの『挿入』・『削除』をじっくり理解する
ビッグデータやデータサイエンスという言葉がこの10年でずいぶんと一般に知られるようになった現代において、データを取り扱うというのはコンピューター科学にとってもますます重要なテーマになっています。Scratchで大量のデータを取り扱う場合、「リスト」という機能を使います。今回はリストを使って、テキストからデータを読み込んでプログラミングでどう利用するのかという基礎的なところを学習します。
【Pschool厳選】Scratchを学べるオンライン・駅前プログラミングスクール5選
テキストデータからのインポート
まずはリストを作成しましょう。左の変数
の項目から、リストを作る
をクリックすると、新しいリスト
ダイアログが出ますので、ここではリストのテスト
という名前でリストを作成します。最初にリストを作成すると、リストに関するブロックとともに、空のリストがScratchの画面に追加されます。次に下の内容でテキストファイルを用意します。名前は何でもOKですが、今回はリストのテスト.txt
という名前でファイルを新規作成して、以下のテキスト内容を追加します。このテキストはパソコンのフォルダのどこかに保存しておきましょう。そして、Scratchの実行画面に表示されたリストの上でマウスを右クリックすると、読み込み
というメニューが現れますので、これをクリックします。すると、以下のようにファイルを選択するファイルのアップロード
ダイアログが表示されますので、先程作成しておいたリストのテスト.txt
を選択して開く
ボタンを押します。するとこのテキストファイルが読みこまれ、以下のようにリストに反映されました。このリストのデータを使って、プログラムの中で利用することができます。以降ではリストの具体的な使い方を紹介していきます。データテキストのフォーマット
具体的なブロックコーディングに話を移すまえに、Scratchに読み込むテキストデータのフォーマット(書式)についての注意点を簡単に触れておきます。Scratchのリストはcsv形式を念頭において、テキストファイルからデータ読み込みをおこなってくれます。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はデータ区切りを無視してくれます。ということで、上のテキストデータは、セパレーターに空白文字(
)を利用した区切り方にしています。空白文字切りのフォーマットもポピュラーですが、セパレーターに何を利用するかは個人の好みやプログラムによるので、適切に検討するのが良いと思います。
【Pschool厳選】Scratchをしっかり学ぶためのオススメ書籍まとめ
リストを利用したプログラミング
それではまず先程作成したリストリストのテスト
からデータ(数値)を読み込み、それを表示するだけのプログラムを作成してみます。まず、行
と列
という2つの変数を作成しておきましょう。これがテキストデータでの何行目、何列目の数をそれぞれ表しています。例えば今回の場合、1行目の3列目の数値は3
です。まず行だけを上から下まで読み込んで、何かを行うためのブロックは以下のようになるでしょう。このとき、行
は1からテキストの最後の行が読み込まれるまで1づつ増えるようにしておきます。また、ひとつの列を操作する場合には、以下のようなブロックで扱います。リストのブロックである、"リスト"の〜番目
ブロックで一行分の文字が取得できます。あとは演算にある〜の長さ
でこの文字の長さを受け取り、ループを作成し、変数の列
を1から文字分の長さの最後になるまで1づつ増やします。ということで、'リストのテスト'の'行'番目の'列'番目の文字
というブロックで、文字をひとつひとつ、抜き取っているプログラムとなります。以上、これらのブロックを組み合わせると、となり、下のようなプログラムになります。区切り文字の処理
先程のプログラムでは、一行の文字をまるごとすべて読みこんでいたので、区切り文字(空白文字)も表示していました。実際のプログラムにとっては区切り文字は利用しませんので、意味のある数値データだけを取り出してみましょう。先程のブロックコードから少し中身を修正して、とします。制御のブロックもし〜なら〜でなければ〜
で、空白文字を読み込んだときと、そうでないときで条件分けしています。その中身の条件ですが、空白文字ですので、一見なにも見えないと思いますが、きっちりと" "
(空白文字)が1文字の入っています。空ではないですので注意してください。これを動かすと、のように区切り文字
と実データ
を分けたプログラムになります。リストを使った簡単な応用
最後に簡単なリストデータの利用を考えてみましょう。先程のプログラムから編集していきます。まずは猫のスプライトとは別に、もうひとつスプライトを用意します。ここではスタンプ
という名前で追加しました。この新しいスプライトのコスチュームを8個ほど、下の図のように適当にダウンロードしてみました。コスチュームの追加方法などは前回の記事で説明しましたので、必要であればそちらを参考にしてください。【Scratch入門】コスチュームを変えてスプライトのアニメーション効果を付けるScratchでスプライトを移動させる時にコスチューム番号をずらしてアニメーションで動かす方法を解説します。
新しいスタンプ
というスプライトは、猫のスプライトの横らへんに配置しておきます。ブロックコーディングの前に、コスチュームの番号を記録する絵柄番号
という変数も追加しておきます。また、今回はメッセージイベント
を利用して、スプライトを操作してみましょうとおもいます。下のように、イベント
の項目にあるメッセージブロックのコンボ欄の上でクリックすると、新しいメッセージ
が作成できますので、絵を変える
メッセージを新規作成しておきます。まずは猫のスプライトからブロックコーディングしていきます。上記までのブロックプログラムから以下のように修正します。ポイントとしては、コスチューム番号をデータとして受け取り、その値を絵柄番号
に設定し、絵を変える
メッセージをイベントとして送っています。次にスタンプ
のスプライトに切り替えて、ブロックを仕込んでいきます。こちらは先程設定した、絵を変える
メッセージを受け取ったら動くプログラムです。以上で、リストからデータを受け取り、その値でコスチュームを操作しているプログラムになってると思います。
【Pschool厳選】Scratchを学べるオンライン・駅前プログラミングスクール5選
まとめ
Scratchでテキストデータを扱う場合に、リストの使い方をマスターすることが重要です。リストを使うことで、より応用的なプログラミングも可能になります。これを機会に積極的に利用していっても面白いと思います。