STEP2:スモウルビーの使い方

7.ブロックリファレンス

スモウルビーでは、ジャンル分けされた多数のブロックが用意されています。

それぞれのブロックの用途について、簡単に説明します。

説明はジャンル毎に節を分け、それぞれのジャンル内のブロックに番号を振って、それぞれの番号に対応するブロックの説明を文章で記載します。

動き

キャラクタの挙動に関するブロックをまとめたジャンルです。

全てのブロックはキャラクタブロックの内側に配置されることが前提となります。

キャラクタブロックの「実行ボタンがクリックされたとき」の内側に配置して実行してください。

また、本ジャンルの全てのブロックの動作は、実行ウィンドウの1フレームにおける挙動を意味するため、連続的に実行するためにはループブロックと組み合わせて利用してください。

  • n歩動かす

    キャラクタを式で指定された歩数nだけ進行方向に移動させます。

    キャラクタの進行方向は、キャラクタの向きに依存して決定されます。

    向きが0度の場合、キャラクタは画面右方向に進みます。

    向きが180度の場合、キャラクタは画面左方向に進みます。

  • 時計回りにn度回す

    キャラクタをその場で時計回りの方向にn度回転させます。

    キャラクタの現在の「向き」から、追加でn度回転させるため、例えばキャラクタが45度の向きを持っている状態で、本ブロックにより45度回した場合、キャラクタの向きは最終的に90度になります。

  • 反時計周りにn度回す

    「時計回りにn度回す」の反対向きの動作をするブロックです。

    反時計回りの回転ですので、仮にある時点で45度の「向き」を持つキャラクタに本ブロックを適用して45度回す場合、キャラクタの向きは最終的に0度に戻ります。

  • n度に向ける

    キャラクタの向きを絶対値で指定します。

    その時点でのキャラクタの向きに関わりなく、キャラクタの向きを指定した値にセットします。

  • cへ向ける

    cには、式ではなくその時点でプログラミングエリア上に表示されているキャラクタの名称がリスト表示されています。

    本ブロックは、現在のキャラクタの向きを、当該キャラクタから見てcで指定したキャラクタが存在する座標の方向に向けます。

  • マウスポインターへ向ける

    「cへ向ける」ブロックと同様の動きをするブロックですが、キャラクタではなくその時点でマウスカーソルが存在する座標の方向へ向きを変えます。

  • x座標をx、y座標をyにする

    キャラクタのウィンドウ上の座標を変更するためのブロックです。

    当該キャラクタのx, y座標値を、式で指定された値に変更します。

    x,yにはそれぞれ任意の数値を受け付けますが、実際にキャラクタが移動する範囲はウィンドウ座標の範囲内に留まります。

    例えば、xの値を-1000のように指定しても、実際の表示位置は x == 0 の座標までしか移動しません。

  • マウスポインターへ行く

    キャラクタのx,y座標値を、その時点におけるマウスポインターの座標へ変更します。

    繰り返しの中で本ブロックを実行すると、毎フレーム座標値が書き換わるので、キャラクタがマウスポインターの動きに合わせて移動するように見えます。

  • cへ行く

    その時点のキャラクタリストから、x,y座標を同じ値に合わせたいキャラクタを選択します。

    本ブロックが実行されると、当該キャラクタはcで指定したキャラクタが存在する座標へ即時移動します。

    cのキャラクタの座標と当該キャラクタの座標は完全に一致するため、重なって表示される結果になります。

  • x座標をnずつ変える

    キャラクタのx座標値を、現在の値 + n した値に変更します。

    このブロックの動作は、キャラクタの向き情報には依存しません。

    仮に45度向きが傾いているキャラクタに対して適用したとしても、x方向にnピクセル水平移動する結果となります。

  • x座標をnにする

    現在のx座標値に関わり無く、絶対値としてキャラクタのx座標をnに変更するブロックです。

  • y座標をnずつ変える

    キャラクタのy座標値を、現在の値 + n した値に変更します。

    このブロックの動作は、キャラクタの向き情報には依存しません。

    仮に45度向きが傾いているキャラクタに対して適用したとしても、y方向にnピクセル水直移動する結果となります。

  • y座標をnにする

    現在のy座標値に関わり無く、絶対値としてキャラクタのy座標をnに変更するブロックです。

  • もし端に着いたら、跳ね返る

    本ブロックを実行すると、最初に当たり判定が実行され、当該キャラクタの座標がウィンドウの端(上下左右いずれか)に接触しているかどうかが判定されます。

    もし接触していなければ、本ブロックは何も実行しません。

    接触していた場合、キャラクタの向き情報を、壁に当たって跳ね返ったように修正します。

    例えば、45度の向きで進行するキャラクタがウィンドウの右端に接触した場合、そのキャラクタの向き情報は135度(右の壁に当たって跳ね返った角度)に変化します。

  • 跳ね返る

    当たり判定を行わず、ブロック実行時点で即時キャラクタの向きを反転させます。

    「もし端に着いたら、跳ね返る」ブロックと異なり、本ブロックの跳ね返りは進行方向を180度反転させたものになります。

  • direction方向に跳ね返る

    directionは「水平(x)」「垂直(y)」のいずれかを選択します。

    選択した方向に、キャラクタが跳ね返るように向きを変化させます。

  • 回転方法をtypeにする

    キャラクタの回転方法を変更します。

    typeには「左右のみ」「回転しない」「自由回転」の3種類から選べます。

    「左右のみ」にすると、キャラクタの向きを変える際、180度単位でしか反応しなくなります。

    ※0度で右向き、180度で左向きになり、以降180度毎に左右が反転します。本モードではキャラクタが上下に反転することはありません。

    「回転しない」は、キャラクタの向きが0度で固定され、回転できなくなります。キャラクターリストで設定した初期設定値(向き)も無視され、0度に戻ります。

    「自由回転」は、デフォルトの設定です。任意の角度に向きを変更できるようになります。

  • x座標

    当該キャラクタのx座標値を返す式ブロックです。

  • y座標

    当該キャラクタのy座標値を返す式ブロックです。

  • 向き

    当該キャラクタの向きを角度(数値)で返す式ブロックです。

見た目

キャラクタの実行ウィンドウ上での表示状態に関する制御を行うジャンルです。

  • strと言う

    式strで指定した文字列を、キャラクタの現在の座標に吹き出しとして重ねて表示します。

  • 表示する

    キャラクタをウィンドウ上に表示します。

    デフォルトの挙動です。後述の「隠す」ブロックで非表示にしたキャラクタを再表示する際に利用します。

  • 隠す

    キャラクタをウィンドウ上から非表示にします。

    隠されたキャラクタは、ウィンドウ上から消えたように見えますが、プログラム内部では保持されたままになっているので、「表示する」ブロックでいつでも再表示可能です。

  • 消滅する

    キャラクタを削除するブロックです。

    「隠す」ブロックと違い、プログラム内部からも完全に消去されます。

    一度消滅させたキャラクタは、「表示する」ブロックで再表示することはできません。

音を鳴らすブロックを集めたジャンルです。

  • mの音を鳴らす

    mで指定された音階の音を鳴らします。

ペン

キャラクタの軌跡に沿って線を描画するためのブロックを集めたジャンルです。

  • ペンを下ろす

    キャラクタの移動の軌跡を線で描画するモードに切り替えます。

    あるフレームでペンを下ろしたキャラクタは、その時存在している座標を始点として、移動した軌跡を線で繋いで表示するようになります。

  • ペンを上げる

    「ペンを下ろす」で移動の軌跡を描画するモードになったキャラクタに対し、線を描画しないモードに切り替えます。

    こちらの動作がデフォルトになります。

  • ペンの色をcolorにする

    軌跡描画を行う際の線の色をcolorで指定した色に変更します。

データ

Rubyプログラムの中で利用する変数に値をセットしたり参照したりするためのブロックを集めたジャンルです。

  • セット v 宛先 t

    vは、その時点でプログラムが認識している変数の一覧がリストされます。

    既存の変数が無い場合は、リストから「新しい変数」を選ぶことで、新規の変数を定義できます。

    tは、任意の式ブロックが入る式スロットです。

    本ブロックは、変数vに式tの戻り値を代入する動作をします。

  • v

    変数vの値を返す式ブロックです。

イベント

スモウルビーのプログラム実行中に発生したイベントを補足して、任意のブロックを実行させるためのブロックを集めたジャンルです。

  • 実行ボタンがクリックされたとき

    スモウルビーエディタの「実行」ボタンがクリックされたイベントに反応して、内側に定義されたブロック群の実行を開始します。

    キャラクターリストからキャラクタをプログラミングエリアに表示すると、デフォルトで本ブロックが付与されて表示されます。

  • キーボードのkがmのとき

    kはキーボード上のキーのリストです。

    mは、キーkが「押された」「押され続けている」のどちらかの状態を検出します。

    「押された」は一回だけの押下判定であり、「押され続けている」はキーの押下状態が継続されている状態を検知します。

  • キャラクタがクリックされたとき

    キャラクタの画像の一部にマウスカーソルを合わせてクリックすると、本ブロックの内側に定義されたブロック群の実行が開始されます。

    マウスクリックで何らかの行動を開始するような表現を実現する際に利用すると便利です。

  • cにぶつかったとき

    キャラクタの当たり判定用ブロックです。

    cで指定したキャラクタと当該キャラクタの画像が一部でも接触した際に、本ブロックの内側に定義されたブロック群の実行が開始されます。

制御

繰り返しや条件判断など、プログラムの実行をコントロールするための制御構文を実現するブロックを集めたジャンルです。

  • n秒待つ

    プログラムの実行を式nの戻り値(整数)分だけ待ちます。

  • ほんの少し待つ

    プログラムの実行をごく短時間停止させます。

    連続的に実行すると早すぎてウィンドウ上の表示が一瞬で切り替わってしまうようなケースで、わずかなウェイトを入れて動きを見やすくする場合などに活用できます。

  • n回繰り返す

    繰り返し文

    式nで返される回数(整数)回だけ、本ブロックの内側のブロック群を実行します。

  • ずっと~を繰り返す

    繰り返し文

    回数指定の無い無限ループを表現します。

    本ブロックが実行されると、その内側のブロック群を永遠に繰り返し実行し続けます。

    繰り返しを止めるには、後述の「繰り返しから脱出する」ブロックを利用します。

  • もしmならば~

    条件判定文

    if文に相当する挙動をとるブロックです。

    式mが真の値を返す場合に、内側のブロック群を実行します。

  • もしmならば~でなければ~

    条件判定文

    if~else文に相当する挙動をとるブロックです。

    式mが真の値を返す場合に、内側上段のブロック群を実行し、偽の場合は内側下段のブロック群を実行します。

  • mまで待つ

    条件判定・繰り返し文

    式mが真の値を返すまでの間、当該キャラクタに関するプログラムの実行を停止して待機します。

    何らかのイベントが発動するまで、処理を開始したくないケースなどに応用ができます。

  • mまで~を繰り返す

    条件判定・繰り返し文

    式mが真の値を返すまでの間、内側のブロック群を実行し続けます。

    何らかのイベントが発動するまでの間、一定の動作を繰り返したい場合などに応用ができます。

  • 繰り返しから脱出する

    繰り返し制御文

    Rubyのbreakに相当するブロックです。

    繰り返しブロックの内側に組み込むことが前提となります。

    最も内側の繰り返し文を脱出し、それ以降のブロックに制御を移します。

    仮に繰り返し文の終了条件が成立していなくても、本ブロックが実行されると強制的に繰り返しから脱出します。

    通常は、条件判定文と組み合わせて利用します。

  • 以降の処理を飛ばして、次の回の処理を開始する

    繰り返し制御文

    Rubyのnextに相当するブロックです。

    繰り返しブロックの内側に組み込むことが前提となります。

    本ブロックが実行されると、それ以降の繰り返しブロック内部の処理がキャンセルされ、次の回の繰り返しに処理が移動します。

  • 以降の処理を飛ばして、もう一度同じ処理をやり直す

    繰り返し制御文

    Rubyのredoに相当するブロックです。

    繰り返しブロックの内側に組み込むことが前提となります。

    本ブロックが実行されると、それ以降の繰り返しブロック内部の処理がキャンセルされ、その回の繰り返しに処理が再実行されます。

調べる

キーボード・マウスやキャラクタ画像、ウィンドウの状態などを調べるブロックを集めたジャンルです。

  • cに触れた

    キャラクタがcで指定される別キャラクタを接触したか否かを判定するための式ブロックです。

    条件判定文に組み込むなどして利用します。

  • 端に触れた

    キャラクタが上下左右いずれかの壁(ウィンドウの端)に接触したか否かを判定するための式ブロックです。

    条件判定文に組み込むなどして利用します。

  • キーボードのkがm

    kはキーボード上のキー名のリストです。

    mは、キーkが「押された」「押され続けている」のどちらかの状態を検出します。

    「押された」は一回だけの押下判定であり、「押され続けている」はキーの押下状態が継続されている状態を検知します。

    指定したキーの状態mを調べ、真偽値で返します。

  • マウスのbがm

    bはマウスのボタン名のリストです。

    mは、ボタンbが「押された」「押され続けている」のどちらかの状態を検出します。

    「押された」は一回だけの押下判定であり、「押され続けている」はボタンの押下状態が継続されている状態を検知します。

    指定したボタンの状態mを調べ、真偽値で返します。

  • マウスのx座標

    マウスポインターのウィンドウ上のx座標を返す式ブロックです。

    あくまでもスモウルビーの実行ウィンドウ上の座標であり、デスクトップ上の絶対座標ではない点にご注意ください。

  • マウスのy座標

    マウスポインターのウィンドウ上のy座標を返す式ブロックです。

    あくまでもスモウルビーの実行ウィンドウ上の座標であり、デスクトップ上の絶対座標ではない点にご注意ください。

  • cのattr

    任意のキャラクタcに関する属性値attrを返す式ブロックです。

  • 現在のymd

    システム時計から、現時点における「年」「月」「日」「曜日」「時」「分」「秒」のいずれかの値を返します。

  • 2000年からの日数

    現時点の日付が、西暦2000年を0日目として、何日経過した日であるかを整数で返します。

演算

四則演算や論理演算など、演算に関するブロックを集めたジャンルです。 いずれも式ブロックであり、条件判定や繰り返しなど、様々なケースの条件に適用することができます。

  • n

    整数nを返します。

  • str

    文字列strを返します。

  • m + n

    四則演算式ブロック

    オブジェクト同士の加算(足し算)の結果を返します。

    ほとんどのケースでは、m,nは数値オブジェクトになります。

  • m - n

    四則演算式ブロック

    オブジェクト同士の減算(引き算)の結果を返します。

  • m * n

    四則演算式ブロック

    オブジェクト同士の乗算(掛け算)の結果を返します。

  • m / n

    四則演算式ブロック

    オブジェクト同士の除算(割り算)の結果を返します。

  • m から n までの乱数

    乱数発生ブロック

    左辺mの値を最小値、右辺nの値を最大値とし、その範囲内の数値からランダムに1つの数値を選んで返します。

  • m < n

    比較演算式ブロック

    左辺mと右辺nを比較し、右辺が左辺より大きい場合に真を返します。

  • m <= n

    比較演算式ブロック

    左辺mと右辺nを比較し、右辺が左辺より大きいか等しい場合に真を返します。

  • m = n

    比較演算式ブロック

    左辺mと右辺nを比較し、右辺と左辺の値が等しい場合に真を返します。

    Rubyの比較演算子「==」と同じ挙動を取ります。

  • m >= n

    比較演算式ブロック

    左辺mと右辺nを比較し、右辺が左辺より小さいか等しい場合に真を返します。

  • m > n

    比較演算式ブロック

    左辺mと右辺nを比較し、右辺が左辺より小さい場合に真を返します。

  • m かつ n

    論理演算式ブロック

    左辺mと右辺nの論理積を取り、両辺の式が共に真である場合にのみ真を返します。

  • m または n

    論理演算式ブロック

    左辺mと右辺nの論理和を取り、両辺の式が共に偽である場合にのみ偽を返しそれ以外のケースでは真を返します。

  • m ではない

    論理演算式ブロック

    式mの値を論理否定した結果を返します。

    式mが真の値を返す場合は偽、偽の値を返す場合は真を返します。

  • str の n 番目

    文字列の中のn番目の文字を1文字返します。

    文字列strの先頭を0文字目としてカウントします。

  • str の長さ

    文字列strの文字数を返します。

  • m を n で割った余り

    算術演算式ブロック

    左辺mの値を右辺nの値で割った余り(剰余)の数値を返します。

    m,nは共に数値(整数)で指定します。

  • fを四捨五入

    算術演算式ブロック

    式fの戻り値(浮動小数点数を前提)を四捨五入した値を返します。

  • n の fnc

    算術演算式ブロック

    式nの戻り値に対して、fncで選択した数学関数を適用した結果を返します。

  • 真の値を返します。

  • 偽の値を返します。

その他

任意のRubyコード(文または式)を実行したり、コメントやデバッグ文字列を出力するブロックを集めたジャンルです。

  • 文 str

    ブロックでは表現できないRubyの文を実行する際に利用するブロックです。

    文字列strには、任意のRubyの文が記述できます。

  • 式 str

    ブロックでは表現できないRubyの式を実行する際に利用するブロックです。

    文字列strには、任意のRubyの式が記述できます。

    文ブロックと異なり式ブロックでは、Rubyのプログラムとして実行した文字列strの戻り値を返すので、条件判定文の条件式などにも適用可能です。

  • コメント str

    文字列strをコメントブロックとして挿入します。

    本ブロックは実行されず、プログラムにおけるコメントと同じように扱われます。

  • p str

    文字列strをコンソールに出力します。

    デバッグ時に役立つブロックです。

甲子園

スモウルビー甲子園のAIプログラム作成に使用するブロックを集めたジャンルです。

それぞれの内容、使い方はSTEP4でご説明します。

クリエイティブ・コモンズ・ライセンス

このドキュメント は クリエイティブ・コモンズ 表示 4.0 国際 ライセンス の下に提供されています。