見出し画像

【Robo Blocksの使い方】ループ処理を使ってイベントを待つ

ソフトバンクロボティクスでPepperを使ったプログラミング教育を担当してる佐藤です!
今回はループ処理を使ってイベントを待ち、タイミングを調整する方法をご紹介します!


ループ処理

ループ処理とは同じ処理を何度も繰り返す処理のことです。
Robo Blocksでは以下の2つのブロックを使うと簡単に作ることができます。

決められた回数繰り返すブロック
条件が真になるまで繰り返すブロック

うまくループ処理を使うと、処理をそこで止めるという使い方をすることもできます。

ループ処理を使って、変数が変わるまで待つ

ループ処理はループが完了してから次のブロックが動きます。例えば以下のように組むと
1.「こんにちは」を喋る
2. 1<0になるまで繰り返す
の順でブロックが動きます。

1<0になるまで繰り返すで止まる例

この例ですと1と0は数字を入力していますので永遠に変わることはなく、1<0が満たされることは絶対にありません。この場合、ループが無限に実行されるため次のブロックである「最近寒いですね」を喋ることはありません。

これをうまく使うと、変数が変わるのを待つことができます。
条件を変数に変えてみましょう。ここでは以下のように右手を触ると変数"右手触った"が1になるようにします。(開始時に変数を初期化するのを忘れないようにします)

右手を触ると変数"右手触った"が1になる

そして先ほどの条件の部分を"右手触った"=1に変更して組み合わせます。

条件を変数にしてループを抜ける例

こうすると、変数”右手触った”が1になるまでループが繰り返され、1になったらループが終わり次のブロックである「最近寒いですね」を喋ります。
このような組み方で、変数が変わるまで待つことができます。

これは右手を触ったら喋る単純な例ですので右手を触られたの次に「最近寒いですね」を入れたら同じことができますが、複数のイベントを待ちたいような時にはこの方法が便利です。

例として右手と左手が両方触られるまで待ってみます。
右手と同じように左手の処理を追加します。

左手の処理を追加

条件も組み合わせ以下のようになりました。

右手と左手両方を触ると「最近寒いですね」を喋る

こうすると右手と左手、両方を触ってから「最近寒いですね」を発話します。
”右手をさわられたとき”を使うとすぐに反応しますが、このように変数でイベントを管理すると複数タッチされるまで待つようなことも可能です。

まとめ

ループ処理を使ってイベントを待つ方法を紹介しました。
これを使うと処理を2つ同時に行った際に片方が終わるまで待つなど、少し複雑なプログラムも作ることができます。
ループ処理を使うときは条件に注意しましょう。条件が間違っていると永遠に抜け出せずそこで止まってしまうなどバグの原因になりますので、きちんと抜けられるか確認しながら作ってみてください!