できるかな?できるかな?

ちょっと難しそうだなと思うことに挑戦します。

Raspberry Pi 2 でScratch「キャラクターを動かす」

この記事の概要

  1. キャラクターをどう動かしたいのか?
  2. キーを押してからキャラクターが動くまで
  3. 自由に動かすには?


キャラクターをどう動かしたいのか?

最初にどんな目標(ゴール)にするか決めておくと、作業がスムーズに進みます。これはプログラミングに限ったことではなく、何かを作る行為なら大体当てはまると思います。

ここでは難しく考えず、「キーボードの矢印キーを押したら、その方向にキャラクターが動く」としておきます。細かいことも合わせて決めることができるなら、それもここで宣言してしまいます。例えば、「ボタンを押しっぱなしでもOK」です。


キーを押してからキャラクターが動くまで

ここからはScratchでプログラミングです。その方法ですが、ぼくの場合は次の様にしています。

  1. 目標として決めたことを単純な動作に分解する
  2. 分解した単純な動作を行うプレートを探す
  3. 見つけたプレートを繋げる
  4. 繋げたプレートを実行し、思った通りになっていること確かめる
  5. もし思った通りでなければプレート探しからやり直す

このような手順で「キーボードの矢印キーを押したら、その方向にキャラクターが動く」を単純な動作に分解すると、次のような結果となりました。

  1. キーボードの矢印キーが押されたことをプログラムに伝える
  2. 矢印の方向へ移動する距離を決める
  3. キャラクターの位置を2で決めた方向へ移動させる

まだまだ単純な動作ではないかもしれませんが、これらの動作を行うプレートを探してみます。すると、次のプレートが見つかりました。

f:id:dekirukana_dekirukana:20160207154108j:plain


これらのプレートは「動き」、「制御」にありました。これらを繋げ、移動する距離を変えてみます。

f:id:dekirukana_dekirukana:20160207154123j:plain


簡単ですがとりあえず完成です。思った通りに動くか確かめてみましょう。今回は変化が分かりやすいように移動する距離を大きくしています。上向き矢印キーを一回押すと、キャラクターが画面の上方向へ移動してくれます。成功ですね。

また、キーを押しっぱなしにすると、キャラクターがどんどん上方向へ移動していきます。ついでに決めた「ボタンを押しっぱなしでもOK」もできてしまいました。こんなのでいいのかなと不安になるほど簡単な作業です。

座標ですが、Scratchは画面の上下方向をY座標、左右方向をX座標と決まっています。Y座標は中心より上側がプラス値、下側がマイナス値となり、X座標は中心より右側がプラス値、左側がマイナス値となっています。

Y座標を10ずつ変えるとキャラクターを上方向へ移動させることができますが、この値を-10に変えると、キャラクターは下方向へ移動していくようになります。


自由に動かすには?

上向き矢印キーを押したときのキャラクターの動きをプログラミングすることができました。他の方向も同じ様に作ってしまいましょう。

f:id:dekirukana_dekirukana:20160207154134j:plain


プレートを散らかしただけに見えますが、これでキャラクターを上下左右方向へ自由に移動させることができるようになっています。しかし、このままではキャラクターがワープしたように見えてしまいますので、座標の変化を小さい値に変更します。するとキャラクターがワープしたように見えなくなります。

上下左右の移動だけなら次の様にプレートを繋げても実現できます。こちらの方はプログラミング経験者が考えたような形ですね。なんとなくですがソースコードがイメージできてしまいます。

f:id:dekirukana_dekirukana:20160207154154j:plain