
Scratchで初めて迷路探索ゲームを作った。もちろん簡単な設定のゲームだが、これまでが基礎的なものばかりだったので、私としてはゲームらしいものを初めて作るような心境だ。
簡単な迷路の背景を自分で描いて作り、その迷路の中で一匹のネズミが、邪魔をする虫や幽霊たちを避けながらチーズを探し求めるというゲームだ。
主人公のネズミのコントロール
ネズミはゲームの主人公で、プレイヤーがキーボードの4方向の矢印キーを使って動きをコントロールする。
プログラムは、forever(ずっと繰り返す)ブロックの中に、4つのif~then(もし~なら○○を実行する)で、もしup,down,right,lftのキーが押されたら、押されたキーの方向にネズミを動かすようにしている。

(写真:ネズミを4つの方向キーでコントロール)
ここで感じたのは、スプライト(このブロックの場合はネズミ)を動かすには、move~step(~歩動かす)の前に必ずpoint in derection~(向きを~にする)でスプライトの向きを指定する必要があることだ。
プログラミングが出来る人なら当然なのだろうが、私のような万年初心者には、こういった、あるものの行動を分割して命令することに慣れていない。move~stepだけで動かせてしまえるのではないかと思ってしまう。
ものを動かすには、その前に方向を指定するように、人形を手取り足取り動かすような感覚が必要なのだ。人間なら一連の動作を無意識に出来るが、プログラムで動かすには動作を分割して考えなければならない。
cheezeのスプライトを描く
Scratchには元からスプライトやステージ(背景)用の画像が結構揃っているが、欲しい画像が無い時は自分で描いて作ることができる。
Scratchの作画用のエディターは簡単なものしか描けないが、私のレベルでは不足はない。
私はWindowsではなくLinuxのオンライン上でScratchを動かしているのだが、テキストにあるよりも簡易なエディターになっていて、曲線が描けない。仕方がないので、cheeseの欠けた部分は点描のようにドットを繋げて曲線のように描いてみた。
cheeseの大きさは気にしてなくて構わない。後でスプライトのサイズは自由に設定できるからだ。

(写真:ネズミが探し求めるチーズ)
cheeseのスプライトの中に作るプログラムは、ネズミがcheeseに触れたらscoreに10ポイント追加して、またランダムな場所に移動するというものだ。
そのためには先ずscoreという変数を作ってステージに表示しておく。
forever(ずっと繰り返す)ブロックの中に、cheeseのX,Y座標をランダムに設定して、touching~?(触れたか?)というセンサーでネズミが触れたか調べて、wait until~(○○まで待つ)でcheeseに触れるまで待たせる。
ネズミがcheeseに触れたら、score変数に10ポイント加えて、更に音を鳴らす命令を入れる。

(写真:cheeseのスプライトのプログラム)
ここでも新しい気づきがあった。wait until~(○○まで待つ)という命令は、if ~ then ~(もし○○なら○○を実行する)と同じような働きを簡単に出来る命令のように思った。
if (ネズミがcheeseに触れたら) then { cheeseのX,Y座標をランダムに指定し scoreに10ポイントを加え 音を鳴らす }
参考文献:
コメント