Scratchプログラミング(20)

矢印キーによるSpriteのステージ移動

スプライトをステージの任意の場所へ移動させたくなることがある.今回はキーボードの左向き矢印(→),キーボードの右向き矢印(←),キーボードの上向き矢印(↑),キーボードの下向き矢印(↓)を使ったスプライト移動プログラムを考える.

最初は「緑の旗」がクリックされた時,以下を実行するイベントブロック

「ずっと」の繰り返しブロックは縦方向最下段の「⤴」と繋がっていて「ずっと処理」を繰り返す.その中に「もし〜なら,でなければ」の条件判断を行うブロックが入っている.

もし「→ キー」が押されたら.x 座標を2ずつ変える(右移動).でなければ,次段へ行く.もし 「← キー」が押されたら x 座標を −2ずつ変える(左移動).

これで x 軸方向の移動に関する判断,処理は終了する.

「→キー」および「←キー」が押されなければ,次段の「もし」に移り,y軸方向の移動の有無を判断する.ブロック構成(構文)は x 軸方向のそれと同じである.y 軸方向の移動は「↑あるいは↓キー」の押し下げの有無で判断する.x 軸の構文をコピーして x を y に変えればよい.

← →

「魔法使い」のスプライトを移動させてみた結果を画面収録した動画を以下に示す.x, y 各方向の矢印を組合せると斜めに移動させることができる.例えば,↑と→を同時に押せば↗方向に移動する.

Wizard-B.mp4

この構文を使えば,スプライトを画面の任意の場所に移動させ,その後の処理を実行させることができる.ゲームプログラムの場合,弾丸や砲弾を発射する際に使うことができる.そのためには,上記プログラムに数枚のブロックを追加する.例えば,「スペースキー」を押すと「砲弾」を発射させるようにするには, "Shot" 命令を発し,別のスプライトが命令を受け取り移動するようにプログラミングする.

左図の赤矢印のとおりに,下から上へ順次ブロック群を入れ込むと右図のプログラムが出来あがる.

上下左右の移動ブロックに,「もしスペースキーが押されたなら」,「shot命令を送る」,「でなければ」の判断部分が追加されただけである.

「ずっと」ブロックの中に入っている「もし」ブロック群はプログラムを停止するまでエンドレスでバックグラウンドで実行される.


「もし」のブロック群は,従来の各種プログラミング言語では, if ~ then ~ else if ~ end if 等を用いてプログラミングしていた構文である.言語によって異なるが基本は同じである.

次回は,本スクリプトのメッセージを受け取って動くスクリプトを紹介したい.