LoginSignup
7
2

More than 5 years have passed since last update.

Scratchの用語とか裏技とか

Posted at

この記事について

この記事では前半にScratchの用語、後半にちょっとした裏技を紹介します。

Scratchの用語

New Scratcher(ニュースクラッチャー)

Scratchを始めたのユーザーのこと。

New Scratcherはプロフィールのアバター画像の右側にNew Scratcherと表示される。
スクリーンショット 2019-04-02 10.59.59.png

Scratcher(スクラッチャー)

Scratchのコミュニティなどで一定の条件を満たすとなれる。

ScratcherはNew Scratcherのようにアバター画像の右側にScratcherと表示される
スクリーンショット 2019-04-02 10.59.59.png

またScratcherになるとクラウド変数の仕様が可能になる。

クラウド変数

Scratcherになると使用可能になる変数。
その名の通りクラウド(サーバー上)に保存される変数。

クラウド変数はブロックパレットから[変数] -> [変数を作る]で通常の変数作成画面を開き、下部の「クラウド変数(サーバーに保存)」にチェックを付け[OK]を押すと作成できる。
スクリーンショット 2019-04-02 11.17.01.png

クラウド変数の規約として「数値しか代入ができない」というものがある。
これは「Scratchでチャットを作ってはいけない」のルールを守るためだと思われる。

クラウド変数を作成した際に表示されるアラート。
スクリーンショット 2019-04-02 11.16.36.png

なおこの変数を使った機能はScratcherしか利用するとこができない。

Scratcherではない状態でクラウド変数を使ったプロジェクトを開こうとするとアラートが表示される。
スクリーンショット 2019-04-02 11.14.47.png

詳しいクラウド変数の情報は公式の「よくある質問」を参照してください。

クラウドリスト

クラウド変数を使ってサーバーにリストのデータを保存できるもの。
詳しい情報は裏技で紹介します。

定義ブロック

他のプログラミング言語の「関数」のようのなもの。

ログインしているユーザーに挨拶をする定義ブロックの例。
このように自分のオリジナルのブロックを作成できる。
ブロックの処理内容は下の方の「定義・・・」というブロックで定義する。
スクリーンショット 2019-04-02 11.27.25.png

定義ブロックはブロックパレットから[ブロック定義] -> [ブロックを作る]を押して作成画面を開けます。
引数やラベルの追加で直感的にブロックの表示を編集することができます。
下部の「画面を再描画せずに実行する」にチェックを入れるとブロックの処理中に再描画が行われなくなり(多少は行われている?)処理が高速化される。
スクリーンショット 2019-04-02 11.26.51.png

Scratchの裏技?

子供向けプログラミング環境であるScratchにはちょっとした裏技がいくつかあります。
この記事でいくつかご紹介します。

ハッキング

Scratchのプロジェクトの保存形式はsb2もしくはsb3です。

sb3ファイルの画像
スクリーンショット 2019-04-02 10.45.30.png

そしてこの形式の招待はzipファイルです。
なので、拡張子をzipに変えて展開するとプロジェクトの中身を見ることができます。

拡張子をsb3からzipに変えて展開したフォルダの中身。
スクリーンショット 2019-04-02 10.46.55.png

いくつかの音声ファイルと画像ファイルとjsonが入っているのがわかります。

種類 説明 拡張子の例
画像ファイル Scratchのスプライトや背景のコスチュームの画像です。 png,jpg,svg
音声ファイル Scratchのスプライトや背景の音のファイルです。 wav, mp3
プロジェクトファイル プロジェクトのブロックの位置やブロックの親子関係、スプライトや背景の音声ファイル、画像ファイルの関係を示したファイルです。 json

※フォルダの有いつのjsonファイルであるproject.jsonはプロジェクトに1つしかありません。

そしてこのproject.jsonのブロックの情報などを書き換えることで通常は存在しない特殊なブロックを作ったりすることができます。

このようにproject.jsonの中身を書き換えることをハッキングと呼びます。
※ ハッキングで作った特殊なブロックをハッキングブロックと読んだりします。

trueやfalseを表現する

「<>ではない」ブロックは<>に指定する値がない場合はtrueを返します。
スクリーンショット 2019-04-02 11.57.57.png

「<>かつ<>」ブロックは<>に指定する値が両方ない場合はfalseを返します。
スクリーンショット 2019-04-02 11.58.03.png

定義ブロックの早期return

早期returnは他のプログラミング言語でも用いられるプログラムを見やすくするための手法。
Scratchでは定義ブロックの定義で「このスクリプトを止める」処理を抜けることができる。

早期returnの例。
スクリーンショット 2019-04-02 11.53.32.png

定義ブロックの処理を条件分岐で見やすくする

わざと定義中に実行される条件分岐を作って処理を分けると見やすくなる。
スクリーンショット 2019-04-02 11.56.21.png

大文字と小文字の比較

Scratchの文字列比較はちょっと特殊で大文字と小文字の判定ができません。

文字列helloHELLOの比較の様子。
スクリーンショット 2019-04-02 10.56.08.png

そのため、大文字と小文字の比較を行うためにちょっとした裏技があります。
スクリーンショット 2019-04-02 11.43.18.png
このコスチュームを変えるブロックですが、このように値を指定することができます。
スクリーンショット 2019-04-02 11.45.46.png
この場合、「コスチュームを(a)にする」という解釈になるためコスチュームは「a」になります。
※ なおコスチュームが存在しない場合は現在のコスチュームのまま変化しません。
そしてこのコスチュームを変えるブロックは大文字と小文字を厳密に判定します。
これを応用して大文字と小文字を厳密判定するプログラムを作成することができます。

判定を定義ブロックにした例。なおこのスプライトのコスチュームにはcostume1,a,b,c,...zが入っている。
https://scratch.mit.edu/projects/299088682
スクリーンショット 2019-04-02 11.50.25.png

クラウドリスト

クラウド変数には数値しか入れられないが、数値で文字列を表現することは可能です。
これを応用してリストのデータをクラウドに保存できるプログラムをクラウドリストと呼びます。

数値データの形式としては001はa002はbと数字で文字を表現し、それをクラウド変数に保存することで可能になります。

クラウド変数に16進数(もう使えません

Scratch2.0で消されてしまいましたが、クラウド変数には16進数が格納できました。

7
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
2