この記事について
この記事では前半にScratchの用語、後半にちょっとした裏技を紹介します。
Scratchの用語
New Scratcher(ニュースクラッチャー)
Scratchを始めたのユーザーのこと。
Scratcher(スクラッチャー)
Scratchのコミュニティなどで一定の条件を満たすとなれる。
またScratcherになるとクラウド変数の仕様が可能になる。
クラウド変数
Scratcherになると使用可能になる変数。
その名の通りクラウド(サーバー上)に保存される変数。
クラウド変数はブロックパレットから[変数] -> [変数を作る]で通常の変数作成画面を開き、下部の「クラウド変数(サーバーに保存)」にチェックを付け[OK]を押すと作成できる。
クラウド変数の規約として「数値しか代入ができない」というものがある。
これは「Scratchでチャットを作ってはいけない」のルールを守るためだと思われる。
なおこの変数を使った機能はScratcherしか利用するとこができない。
詳しいクラウド変数の情報は公式の「よくある質問」を参照してください。
https://scratch.mit.edu/info/faq/#clouddata
クラウドリスト
クラウド変数を使ってサーバーにリストのデータを保存できるもの。
詳しい情報は裏技で紹介します。
定義ブロック
他のプログラミング言語の「関数」のようのなもの。
ログインしているユーザーに挨拶をする定義ブロックの例。
このように自分のオリジナルのブロックを作成できる。
ブロックの処理内容は下の方の「定義・・・」というブロックで定義する。
定義ブロックはブロックパレットから[ブロック定義] -> [ブロックを作る]を押して作成画面を開けます。
引数やラベルの追加で直感的にブロックの表示を編集することができます。
下部の「画面を再描画せずに実行する」にチェックを入れるとブロックの処理中に再描画が行われなくなり(多少は行われている?)処理が高速化される。
Scratchの裏技?
子供向けプログラミング環境であるScratchにはちょっとした裏技がいくつかあります。
この記事でいくつかご紹介します。
ハッキング
Scratchのプロジェクトの保存形式はsb2
もしくはsb3
です。
そしてこの形式の招待はzip
ファイルです。
なので、拡張子をzip
に変えて展開するとプロジェクトの中身を見ることができます。
いくつかの音声ファイルと画像ファイルとjsonが入っているのがわかります。
種類 | 説明 | 拡張子の例 |
---|---|---|
画像ファイル | Scratchのスプライトや背景のコスチュームの画像です。 | png,jpg,svg |
音声ファイル | Scratchのスプライトや背景の音のファイルです。 | wav, mp3 |
プロジェクトファイル | プロジェクトのブロックの位置やブロックの親子関係、スプライトや背景の音声ファイル、画像ファイルの関係を示したファイルです。 | json |
※フォルダの有いつのjson
ファイルであるproject.json
はプロジェクトに1つしかありません。
そしてこのproject.json
のブロックの情報などを書き換えることで通常は存在しない特殊なブロックを作ったりすることができます。
このようにproject.json
の中身を書き換えることを**ハッキングと呼びます。
※ ハッキングで作った特殊なブロックをハッキングブロック**と読んだりします。
trueやfalseを表現する
「<>ではない」ブロックは<>に指定する値がない場合はtrueを返します。
「<>かつ<>」ブロックは<>に指定する値が両方ない場合はfalseを返します。
定義ブロックの早期return
早期returnは他のプログラミング言語でも用いられるプログラムを見やすくするための手法。
Scratchでは定義ブロックの定義で「このスクリプトを止める」処理を抜けることができる。
定義ブロックの処理を条件分岐で見やすくする
わざと定義中に実行される条件分岐を作って処理を分けると見やすくなる。
大文字と小文字の比較
Scratchの文字列比較はちょっと特殊で大文字と小文字の判定ができません。
そのため、大文字と小文字の比較を行うためにちょっとした裏技があります。
このコスチュームを変えるブロックですが、このように値を指定することができます。
この場合、「コスチュームを(a)にする」という解釈になるためコスチュームは「a」になります。
※ なおコスチュームが存在しない場合は現在のコスチュームのまま変化しません。
そしてこのコスチュームを変えるブロックは大文字と小文字を厳密に判定します。
これを応用して大文字と小文字を厳密判定するプログラムを作成することができます。
判定を定義ブロックにした例。なおこのスプライトのコスチュームにはcostume1,a,b,c,...zが入っている。
https://scratch.mit.edu/projects/299088682
クラウドリスト
クラウド変数には数値しか入れられないが、数値で文字列を表現することは可能です。
これを応用してリストのデータをクラウドに保存できるプログラムをクラウドリストと呼びます。
数値データの形式としては001はa
、002はb
と数字で文字を表現し、それをクラウド変数に保存することで可能になります。
クラウド変数に16進数(もう使えません)
Scratch2.0で消されてしまいましたが、クラウド変数には16進数が格納できました。