提供:Japanese Scratch-Wiki

このきじは ひらがなでよめます。ひらがなでよむ
真偽ブロックの形状

真偽ブロックは、「条件・状態」を意味する六角形のブロックである(この形状は、フローチャートにおける「条件判断」に近い形として採用された)。プログラム内で呼び出されたとき、真偽ブロックは、真(True)または偽(False)を返す値ブロックとしてふるまう。

真偽ブロックは調べるブロック演算ブロック変数ブロックの3つのカテゴリに存在しており、総数は13個である。ブロック定義 (カテゴリ)でも、ブロック定義で指定しておけば、真偽ブロックによる真偽値の入力を受け取ることができる。

ブロック

Scratch 3.0には、次の13個の真偽ブロックが存在する:

形状

真偽ブロックは真(True)または偽(False)のいずれかの「条件」(状態)を持つブロックである。形状は六角形であり、他のブロックにある六角形のスロットにはめ込んで使用する(六角形のスロットは条件を表し、すべての真偽ブロックを入れることができる)。

もし <(スペース v) キーが押された> なら
(ジャンプ! v) を送る
end

さらに、形状は一致しないものの、文字列を入力する場所には真偽ブロックをはめ込むこともできる。

@greenFlag が押されたとき::events hat
ずっと
<(スプライト1 v) に触れた> と言う//スプライト1に接触している間は「true」、接触していない間は「false」と表示される

真(True)と偽(False)は、次のようにすれば数値に変換できる(真は1、偽は0となる)。

@greenFlag が押されたとき::events hat
ずっと
((0) + <(スプライト1 v) に触れた>) と言う//スプライト1に接触している間は「1」、接触していない間は「0」と表示される
end

これらのスクリプトでは、真偽ブロック自体は真(True)または偽(False)を返しているが、スプライトでこれらを文字列や数値に変換して、表示している。

種類

Scratchには2種類の真偽ブロックがある。1つは特定の状態を調べるもの、もう1つは値を比較するものである。

状態を調べる真偽ブロックには、たとえば次のものがある: () に () が含まれるブロック、() に触れたブロック

値同士を比較する真偽ブロックには、たとえば次のものがある: () = ()ブロック、() かつ ()ブロック、() ではないブロック なお「() かつ ()」「() または ()」「() ではない」ブロックが返す値は、真理値表に基づいている。

使用例

真偽ブロックは、ブロックの内容を評価して、真または偽を返すブロックであり、条件を指定したいときに使用できる。 真偽ブロックによる条件を受け取るブロックは、C型ブロック制御ブロックスタックブロックの3つのカテゴリに存在するが、その中でも制御カテゴリのもし () ならブロックは特に利用する機会が多い。 「もし () なら」ブロックでは、条件が真のとき内部のブロックが実行されるが、この条件には「マウスがスプライトに触れたかどうか」から「ある変数の値が他の変数と等しいかどうか」まで、さまざまな内容が指定できる。 次に「もし () なら」ブロックの使用例を示す:

@greenFlag が押されたとき::events hat
<(ストップ実行) = [1]> まで繰り返す
(10) 歩動かす
[色 v] の効果を (25) ずつ変える
終わるまで (meow v) の音を鳴らす
もし <(端 v) に触れた> なら
[終了!] と (2) 秒言う
[このスクリプト v] を止める ::control cap
end
end

() まで繰り返すでは、真偽ブロック() = ()を使って、変数「ストップ実行」の値が1であるかどうかを調べている。この場合は、条件が偽となるあいだ(変数「ストップ実行」が1ではないとき)、内部のブロックが実行される。 一方、繰り返し処理の内部にあるもし () ならでは、真偽ブロック() に触れたを使って、スプライトが画面の端に接触したかどうかを調べている。こちらの場合は、条件が真の場合(スプライトが画面の端に接触した場合)、「もし () なら」内部のブロックが実行されるため、このスクリプトが終了する。

その他の使用例

真偽値間の比較

真偽値の値は、別の真偽値の値と比較することができる。たとえば、次の例では2つの真偽ブロックが返す値を直接比較している。この例では、両方の真偽ブロックが同じ値を返すとき(両方とも真、または、両方とも偽、XNOR)、「もし () なら」内部のコードが実行される。

もし <<マウスが押された> = <[#00A] 色に触れた>> なら
...
end

変数への代入

真偽値は、ほかの値と同じように変数に入れることができる。たとえば、次のスクリプトを実行すると、現在のマウスの状態が真偽値として変数「bool」に格納される(マウスが押されているときは真(True)、マウスが押されていないときは偽(False)が格納される)。

[bool v] を <マウスが押された> にする

このようにして真偽値を入れた変数は、後からほかの真偽値(真偽ブロック)と比較することができる:

もし <<マウスが押された> = (bool)> なら
...
end

上記の例では、現在のマウスの状態が、bool変数に値を入れたときと同じであるかどうかがチェックされる。

関連項目

Cookieは私達のサービスを提供するのに役立ちます。このサービスを使用することにより、お客様はCookieの使用に同意するものとします。