クレーンゲーム

ゲーム作りを通してプログラム作成の考え方を学びます。

ゲーム内容

Aボタンを押すとクレーンが動き始め、Bボタンを押すとクレーンが下がり、うまくぬいぐるみをつかんだら運ぶことができます。

画面例

オブジェクト指向

それぞれのもの(オブジェクト)の状態や動作を考えることで プログラムの構成を決定します。

このプロジェクトでは

クレーンの動き

Aボタンを押したときの動作

Bボタンを押したときの動作

ぬいぐるみの動き

に分け、この順にスクリプトを作成していきます。

クレーンの動きを考える

クレーンの動きは上下左右の４つです。

開始時には左上にあり、 動き始めてから止まるまでなにも操作をしなかったら つぎのような動きになります。

箇条書きにするとこのようになります。(シナリオ)

クレーンが右に動く

右端についた

クレーンが下に動く

下端についた

クレーンが上に動く

上端についた

クレーンが左に動く

左端についた

停止

図に書くとこのようになります。(状態図)

個々の状態に対応するスクリプトに分け、 一度に１つのスクリプトがチクタクで動作するように考えると分かりやすい。

青の点線で囲んだ範囲を１つのスクリプトとして作成します。

スクリプト１～４はどれか１つがチクタク で動作すると考えます。

スクリプト１

クレーンの絵の向きを変えずに動かす方法はいくつかありますが、 座標を増減する方法で書くことにします。

チクタクごとに右に５動かすにはつぎのように書きます。 動きの速さは調整してください。

書き方１

書き方２

右端についたときの処理を テストタイルを使って書き加えます。

判定に用いるの数値(座標)はクレーンの形や画面全体のデザインによって調整が必要です。

スクリプト２、３、４

同様に書けます。

クレーンが下がるときに開くようにすると おもしろいでしょう。

Aボタンが押されたとき

Aボタンが押されたときはクレーンが右に動き始め、 Bボタンが押されたときはクレーンが下に動くようにしたい。

状態図を見ながら考えます。

Aボタンが押されたとき、

スクリプト１をスタート

すれば右に動き始めますが、 これではうまく動作しない場合があります。

クレーンが左上で停止しているときはこれだけでよいのですが、 次のような可能性もあるからです。

クレーンが動作中である

クレーンが別の位置にある

こんな場合にAボタンが押されたときも、同様に動作させるには

クレーンを動かしているスクリプトを停止する

クレーンを左上に配置する

を行ってから

スクリプト１をスタート

すればよい。

クレーンが左上で止まっているときしかAボタンが押せない ようにすることも可能ですが、 その場合は初期化のためのボタンがもう１つ必要です。

Bボタンが押されたとき

Bボタンが押されたときは、スクリプト１を停止し、スクリプト２をスタートすればよい。

応用問題

クレーンが右に移動中でないときにBボタンが押されたときには、 反応しないようにしてください。

ヒント

クレーンの位置を使って判定する

クレーンの動作

クレーンの状態図はこのように書ける。

他に動作がおかしな点があるかもしれません。

発見するにはシナリオを

動作を検討するには状態図を

使うとよい。

ぬいぐるみの動作

ぬいぐるみの状態は次の３つが考えられます。

止まっている。

クレーンでつかまれている。

クレーンから開放されて落ちている。

状態図にするとこのようになります。

状態の数が少なく、状態の変わり方も単純なので、 １つのスクリプトで書けそうです。

このように場合分けできます。

テストタイル２つを組み合わせて記述できます。

１つめのテストタイルの「いいえ」のところに２つめのテストタイルを入れる

クレーンと一緒に動く

ぬいぐるみの座標をクレーンの座標と同じにすれば、クレーンの動きと一緒にぬいぐるみを動かすことができます。

クレーンでつかまれているかどうかの判定はタートルへの距離 を用いて行えます。

タートルへの距離 は２つのオブジェクトの中心位置の距離を求めるものです。

このように記述すると、距離が３０より小さいときぬいぐるみがクレーンと一緒に動きます。

クレーンの中心位置と距離の数値をうまく調整して、赤丸の範囲にぬいぐるみの中心位置が入っているかどうか判定できるようにします。

クレーンから落ちるとき

下方向に動かすにはｙ座標を使うのが簡単です。

ある色に触れるまで落ちるようにするにはこのように書きます。

下の方に何かを描いておき、その色を判定に使う例です。

y座標で判定してもよい。

３つの状態をまとめると

クレーンにつかまれている時は

クレーンと一緒に動く

そうではなくて

指定の色に触れている時は

止まっている

そうでない時は

下に動く

となり、次のように記述できます。

完成まで

Aボタンが押されたときのスクリプトに

ぬいぐるみを適当な場所に配置し、

ぬいぐるみのスクリプトをチクタクにする処理を

追加します。

クレーンが元の位置までもどったとき、 つかんでいたぬいぐるみが落ちるようにする方法を考えてください。

本物のように動作させるには細かな調整が必要かもしれません。

いろいろ工夫して楽しい作品にしましょう。 例えば

景品をたくさん置いてみたり

取りやすいものと取りにくいものを作り分ける

取り出し口の動きを考える

など