welcome: please sign in

2012-06-07 04:20:37時点のリビジョン48

メッセージを消す
location: クレーンゲーム

クレーンゲーム

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

ゲーム内容

画面例


オブジェクト指向

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

このプロジェクトでは

  1. クレーンの動き
  2. Aボタンを押したときの動作
  3. Bボタンを押したときの動作
  4. ぬいぐるみの動き

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


クレーンの動きを考える

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

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

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

  1. クレーンが右に動く
  2. 右端についた
  3. クレーンが下に動く
  4. 下端についた
  5. クレーンが上に動く
  6. 上端についた
  7. クレーンが左に動く
  8. 左端についた
  9. 停止

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

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

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

スクリプト1

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

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

書き方1

書き方2

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

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

スクリプト2、3、4

同様に書けます。

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


Aボタンが押されたとき

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

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

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

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

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

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

を行ってから

すればよい。

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


Bボタンが押されたとき

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

応用問題

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

ヒント


全体の動作

通常、Aボタンが押されるのは停止状態のときである。

クレーンが動き始める前に、 初期位置に移動するなどの処理が必要なら スクリプト1をスタートするまえに行う。

したがって状態図はこのようになる。


動作詳細

上の状態図で考えられていない場面を考える。(別のシナリオ)

例えば、次の場合の処理が記述されていません。

スクリプト1が動作しているときにBボタンが押されないままだと、 クレーンが右端を通り過ぎて画面から消えてしまいます。

停止状態でないときにAボタンが押された場合、 次の処理を行えば最初から行われるようにできる。

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

使うとよい。


ぬいぐるみの動作

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

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

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

クレーンでつかまれているときを考えます。

クレーンから落ちるときを考えます。

3つの状態をまとめると

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


完成まで

ぬいぐるみを適当な場所に配置し、 ぬいぐるみのスクリプトをチクタクにする処理を Aボタンが押されたときのスクリプトに追加します。

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

いろいろ考えて試みてください。


補足

次のようなことを行いたいと思っていることでしょう。

ある機能を使うと簡単にできます。 近々解説します。