【初めてのスクラッチ】別々の動作を同時に行うための並行処理と「終わるまで~の音を鳴らす」ブロックの使い方

プログラミング

 

今回考えるのはこのスクリプトです。

 

馬が

 

いななきながら右から左に行ったり来たりするスクリプト

 

ちなみに「いななく」というのは鳴くと同じ意味です。「ヒヒーン!」ってやつですね。念のため。

 

 

スポンサーリンク




1.馬を左右に動かすスクリプト

 

これは簡単ですね。

スクラッチ 10歩動かす

 

 

旗がクリックされたとき

◆大きさを80%にする(そのままじゃ大きかったので)

◆X座標を-180、Y座標を-50にする(左端へ持っていく)

◆10歩動かす

◆もし端についたら跳ね返る

を◆ずっと繰り返す

 

するとこの動きになります。

 

 

左右にスーッと動きますね。

 

 

2.馬をいななかせるスクリプト

 

次はこの馬を左右に動かしながらいななかせたい。ヒヒーン!と鳴きながら動かしたい。

 

まず馬の「ヒヒーン!」の音を手に入れましょう。

 

新しい音の鳴らし方

 

簡単ですが念のためご説明しておきます。

 

真ん中にある「音」タブをクリック

懐中電灯?みたいなマークがあるのでそこをクリック

するとたくさんの「音」が並んでいます。「▶」マークをクリックすると聴けます。選んでから下にある「OK」を押す。

スクラッチ 音

 

これで「ヒヒーン!」といななく音ができます。

 

動く馬を鳴かせるには

 

当然「音」から探しますよね。

音ブロック

 

まず使うのはこれじゃないでしょうか?

~の音を鳴らす

 

「horseの音を鳴らす」

horseというのが馬のことですね。ひょっとしたら小学生の子供も見てくれてるかもしれないから書いときますww

 

これで問題ないように感じますが、実際に動きを見てみると、

 

 

 

なんじゃこりゃ?

 

「ヒヒーン!」がなぜか宇宙人からのメッセージみたいになってる!?

 

なぜちゃんと鳴いてくれないのでしょう・・・?

 

 

これは本来、馬が10歩動くとともに「ヒヒーン!」と鳴くスクリプトなのですが、パソコンの動きが速いため、「ヒヒーン!」と鳴き終わらないうちに次の「ヒヒーン!」が繰り返されることによります。

 

 

小学校のころ、「輪唱(りんしょう)」ってやりませんでしたか?

ひとつの歌を少しずつずらして歌う歌い方です。

せいぜい3グループくらいに分かれて歌うのが普通だと思いますが、この「ヒヒーン!」はとんでもない回数が重なっているわけです。

だからこんな音になるのですね。

 

 

これを防ぐには

 

1回目の「ヒヒーン!」がちゃんと終わるまでは次の「ヒヒーン!」を鳴らさない

 

言いかえると、

 

「ヒヒーン!」を毎回終わるまでちゃんと鳴らす

 

という方法をとります。

 

それがこのブロックです。

終わるまで~の音を鳴らすブロック

 

これを使うことによって、前の「ヒヒーン!」が終わるまでは次の「ヒヒーン!」になりません。

だから毎回ちゃんと「ヒヒーン!」と鳴いてくれるようになります。

 

 

でもお分かりのとおり、今度は新しい問題が。

 

「ヒヒーン!」が終わるまで次の「10歩動かす」が作動しないので馬の進みがのろすぎる!!

 

馬なのに牛歩(ぎゅうほ)になっている!!

 

うぬぬぬ・・・

 

なかなか手ごわいスクラッチ・・・

 

解決する方法はあるのでしょうか・・・?!

 

 

別々の動きを同時に行う並行処理

 

「10歩動かす」と「終わるまで~の音を鳴らす」をちゃんと作動させるためにはどうしたらいいか?

どのようなスクリプトをつくればいいのか?

 

 

答えはこれです。

スクラッチ 並行処理

 

2つのスクリプトをつくる

 

こんなことが可能なんですね。

 

たしかにちゃんと作動します。

 

 

  • 「ずっと」「10歩動かす」
  • 「終わるまでhorseの音を鳴らす」

この2つがそれぞれ独立して作動しているので、滑らかな動きのまま、ちゃんとそれと分かるように鳴いています。

 

このように複数のスクリプトを使っていくつかの動きを同時に行うのが「並行処理」です。

 

 

「終わるまで~の音を鳴らす」を使いこなしたい

 

個人的になるほどと思ったのは「終わるまで~の音を鳴らす」ブロックの使い方です。

 

スクラッチってもとは英語のものを日本語に訳しているので文章がいまいち分かりにくいんですよね。

 

このブロックも最初、意味がよくわかりませんでした。「~の音を最後まで鳴らす」なら分かりやすいんですが。

 

でも今回、使い方が分かったのでちょっと試してみました。

 

次のコスチュームというのはこれ。

 

「ヒヒーン!」と鳴くごとに次のコスチュームになるスクリプトです。

 

 

ちょっと見にくいですが鳴き終わるごとにコスチュームが変わっているのが分かるでしょうか?

 

ちなみにこの「次のコスチュームにする」を左のスクリプトにつけるとうまくいきません。

 

これだと「10歩動く」たびに「次のコスチュームになる」から・・・なんとなく分かりますよね?

 

どんな動きになるか、ぜひ試してみてください。

 

 

コメント