【Scratch入門】Scratchでキーバインド〜キーボードからの操作を覚える


※ 当ページには【広告/PR】を含む場合があります。
2020/06/22
【Scratch入門】リストの使い方〜ストップウォッチの記録を読み出す
【Scratch入門】繰り返しのテクニックを覚える〜最適なループブロックを選択しよう



今回はScratchアプリでキーボードからスプライトを操作するための基礎を解説します。

キーバインド とは、キーボードで何かしらキーを押したとき、それに割り当てられた機能があった場合、それをプログラムが実行することを意味しています。
なにかプログラムを作る場合は、ユーザーからのキー入力を適切に受け取りを行い、キーのリクエストに応じた機能を割り当てます。
例として今回は
の十字キーへのキーバインドを解説していきます。


合同会社タコスキングダム|蛸壺の技術ブログ【Pschool厳選】Scratchを学べるオンライン・駅前プログラミングスクール5選

条件文の中でキー判定を行う場合



まずはキーバインドにはあまり適さない方法ですが、条件分岐の中でキーを判定して、処理を行うやり方をやってみます。
プログラミングキャンバスの
調べる のブロックエリアから、 スペースキーが押された 条件ブロックを選んで配置します。 このブロックはキーの種類を選択して利用します。

合同会社タコスキングダム|蛸壺の技術ブログ


今回は、上下左右のキーのどれかを押すたびに、スプライトが移動するようなプログラムに仕立てます。
とりあえず、ずっとループの中に条件分岐させるブロックに、上下左右のキーが押されたときにスプライトが移動するプログラムが以下のようになります。

合同会社タコスキングダム|蛸壺の技術ブログ


このプログラムを動かすと以下のようになります。
早速、
🚩 ボタンを押してスタートしてみてください。 止める際には赤い ボタンで停まります。



このプログラムはまだ未完成です。 たとえば、連続してキーを入力した時に、移動の動作が遅延してしまったり、ごくたまにですがキー入力が無視される場合があります。
というのは、キーバインドのような外部から
イベント を与えるようなプログラムを作りたい場合に、無限ループ処理を使って常にイベントが来るタイミングを見張っているようなプログラミングのやり方は、とても非効率です。
またこのやり方では、プログラムがキーが押されたタイミングを見逃してしまうと、動作が遅れてしまったり、なんにも処理が起こらないままにされてしまったり、予期せぬ不具合が起こるかもしれません。


合同会社タコスキングダム|蛸壺の技術ブログ【Pschool厳選】Scratchをしっかり学ぶためのオススメ書籍まとめ

イベントで処理させる



キーバインドをするには、先程のようにループ処理のなかでキー判定させるより、キーが押された時に発生するイベントとしてプログラム処理をさせるほうがベターです。
今後はプログラミングキャンパスの
イベント の項目から スペースが押されたとき イベントブロックを使います。

合同会社タコスキングダム|蛸壺の技術ブログ


こちらは先程のやり方と違って、イベント(キーが押された)起こったときに、スクリプトブロックが実行されるようになります。
上のプログラムをイベントで処理するプログラミングに仕立て直します。 プログラミングは以下のようになります。

合同会社タコスキングダム|蛸壺の技術ブログ


それでは以下のプログラム画面の上で、十字キーを押してみてください。 イベントが起こればスクリプトが始まりますので、
🚩 ボタンを押したり、赤 で停止する必要はありません。



こちらは遅延を感じずに、スムーズにキー操作を受け付けていると思います。
が、たとえば上キーと右キーの両方のボタンを長押ししてみると、どちらか(上か右か)にしか動かないはずです。 イベントで処理を開始する特性として、2つ以上のイベントがほぼ同時に起こった場合には、早く入力されたどちらかが優先されて、遅く入力されたほうがキャンセルされてしまうようです。
2つ以上のキーを同時に操作したい場合には、次の項目で述べるように、「なにかのキーが押された」イベントを利用すると良いです。


合同会社タコスキングダム|蛸壺の技術ブログ【Pschool厳選】Scratchを学べるオンライン・駅前プログラミングスクール5選

「なにかのキーが押されたとき...」イベントを利用する



機能を割り当てたいキーの数が多くなっていった場合、プログラミングのキャンバスに配置するブロックの数も多くなって、かなり見辛いプログラミングになってしまいます。

「あのキーに割り当てたブロックはどこに置いたっけ...?」 と探し回るのも面倒です。
そんなときは、キーボードから沢山のキーを利用する予定ならば、
なにかのキーが押されたとき... の条件付きイベントから処理を開始し、その後でキーの判定を行う方法もオススメです。
再度、プログラミングを変更してみましょう。

合同会社タコスキングダム|蛸壺の技術ブログ


修正したプログラムは以下になります。



先程一つ前で説明した、キーごとにイベント処理のブロックを作るやり方と違って、こちらは
同期的 なイベントになります。
つまりは、同時に2つのキー入力があった場合にも、ひとまとめのイベントとして処理されるため、斜めに動かすことも可能になります。



合同会社タコスキングダム|蛸壺の技術ブログ【Pschool厳選】Scratchを学べるオンライン・駅前プログラミングスクール5選

まとめ



Scratchプログラミングのキーバインドのやり方を解説しました。
十字キーの他にもいろいろなキーが存在しています。
スプライトの移動以外の動作や状態に機能を追加したいときなどにも応用してみてください。