Scratchで猫がチーズを探し回る簡単な迷路ゲームを作る1

Scratch
Scratchで猫がチーズを探し回る簡単な迷路ゲームを作る1

今回から何回かに分けて、scratchで簡単な迷路の中にランダムに場所を変えて現れるチーズを、虫や幽霊が邪魔するのを避けながら猫が探し回るというゲームを作る。教科書は『10才からはじめるゲームプログラミング図鑑』だ。

なお、今回からScratchの1.4というかなり古いバージョンのオフライン版を使用していくことにする。WEB上で3.0バージョンを使えるが、古いバージョンを使う理由の一つには1.4バージョンでも支障なく作成できるのか確かめたかった。

もう一つは、私が普段使いしている古いノートパソコン上のLinuxでは、WEB版は他のエディターなど他のアプリと併用すると動作が重くて使いづらいからだ。まだLinuxのオフライン版は1.4バージョンまでしか対応していない(工夫しだいでは2.0版をインストールできるみたいで、色々試してみたが上手くいかずに断念した)

主人公猫のネコチンをコントロールする

キーボードの上下左右の4つの方向キーを使って、主人公猫のネコチンの動きをコントロールする。
教科書では、「forever」と「if」の制御ブロックをを使い、もし方向キーが押されたらネコチンの向きを変えて5歩進むというプログラムを教えてくれた。

でも私が最初に頭に浮かべたのは、「when~key pressed」制御ブロックを使う方法だった。このプログラムの方が単純だと思うのだが、結果に何か違いがあるのだろうか?

ネコチンの動きをコントロールするプログラム1

(写真:ネコチンの動きをコントロールするプログラム1)

両方のプログラムの動作を確認したが、どちらも同じ動きをした。4方向を作ると、教科書のプログラムの方が1つの「forever」のブロックの中に収まってわかりやすい感じはある。敬意を表して教科書通りにすることにした。

ネコチンの動きをコントロールするプログラム2

(写真:ネコチンの動きをコントロールするプログラム2)

ライブラリーにないチーズのスプライトを描く

Scratchのスプライト(画像)ライブラリーにはチーズの画像がないので自分で作る。Windowsに付属の画像エディターより簡易なペイントエディターでチーズの絵を描く。

教科書みたいに上手く描けるか心配だったが、初めてでもそれに近い絵は描けると感じた。

まず、直線の線だけを直線のアイコンを選択して描く。線の太さは初期値のままにして、教科書の絵を見ながら曲線の部分は残して直線だけをを引いた。

チーズの直線の部分だけを先に引く

(写真:チーズの直線の部分だけを先に引く)

次に曲線の部分だが、拡大して円弧を描きやすくしたら、とてもやりやすかった。微妙な曲線を引きたいときは点描のようにして描けば更に滑らかな曲線が描けると思った。

チーズの曲線の部分を描く

(写真:チーズの曲線の部分を描く)

今度はチーズに空いている穴を描く。輪郭と塗りつぶしの選択アイコンがあるので、輪郭の方を選んでから楕円のアイコンを選んでチーズの中に円を描く。マウスのドラッグの下限で、真円に近い円から横長の楕円まで描くことができる。

チーズの穴を描く

(写真:チーズの穴を描く)

輪郭だけのチーズが完成したら、次にチーズ本体を黄色、穴をオレンジ色に塗りつぶす。バケツをこぼすようなアイコンを選択して塗りつぶしたい色を選ぶ。それからチーズ本体と穴をそれぞれの色で塗りつぶす。輪郭の線に途切れがあると、塗りつぶした色があるので注意が必要だ。

チーズ本体と穴を塗りつぶす

(写真:チーズ本体と穴を塗りつぶす)

最後に描いたチーズの中心に新たに中心点を設定する。エディターのキャンバスの中心点のままにしておくと、スプライトを移動したりする時に正しく位置していできないからだ。

チーズ本体の中心に中心点を設定する

(写真:チーズ本体の中心に中心点を設定する)

幽霊のプログラミング

幽霊のスプライトはライブラリーにある画像を使用する。

ここでは2つの動作を設定する。1つは幽霊が一歩ずつネコチンに近づいていき、ネコチンに触れたらすべてが止まってゲームオーバー。

2つ目は幽霊がアトランダムに位置を変えて消えたり現れたりする。X座標のプラスマイナス220と、Y座標のプラスマイナス160の設定で、背景(ステージ)のほとんど全領域を使っている。

隠れたり現れたりした後、数秒間ウエイティングさせて状態を維持させないと消えたり現れたりが速すぎてしまう。この辺りの秒数の加減が私のような初心者には気が付きにくい。

この2つの動作の組み合わせによって、幽霊はアトランダムに位置を変えて消えたり現れたりしながら、少しずつネコチンに接近していくことになるらしい。

Scrachは動作を分けて設定できるからアイデアを形にしやすいと感じた。2つの動作を1つのブロックでまとめようとしたら、複雑になってわかりにくくなってしまうと思う。

複雑な動作を分解して別々に作れば、一つ一つの動作を検討しやすくなるし、不具合の原因も特定しやすくなる。

幽霊が近づきながら位置を変えて消えたり現れたりする

(写真:幽霊が近づきながら位置を変えて消えたり現れたりする)

参考文献:

コメント

タイトルとURLをコピーしました