#acl All: == クレーンゲーム == ゲーム作りを通してプログラム作成の考え方を学びます。(オブジェクト指向) ゲーム内容 {{{ Aボタンを押すとクレーンが動き始め、Bボタンを押すとクレーンが下がり、うまくぬいぐるみをつかんだら運ぶことができます。 }}} ---- === クレーンの動きを考える === うまく操作したときのクレーンの動きを考えます。 . {{attachment:crane21.png}} 順に箇条書きにするとこのようになります。(シナリオ) 1. Aボタンを押す 1. クレーンが右に動く 1. Bボタンを押す 1. クレーンが下に動く 1. 下端についた 1. クレーンが上に動く 1. 上端についた 1. クレーンが左に動く 1. 左端についた 1. 停止 図に書くとこのようになります。(状態図) . {{attachment:crane01.png}} 個々の状態に対応するスクリプトに分け、 一度に1つのスクリプトがチクタクで動作するように考えると分かりやすい。 . {{attachment:crane02.png}} 青の点線で囲んだ範囲を1つのスクリプトとして作成します。 . スクリプト1~4はどれか1つが'''チクタク'''で動作すると考えます。 . ボタンが押されたときは、対応するスクリプトを'''1回'''実行します。 スクリプト1はこのように書けます。 クレーンの絵の向きを変えずに動かす方法は2つあります。 . 座標を設定する方法で書いた場合 . {{attachment:crane07.png}} . 進行方向を設定する方法を用いる場合 . {{attachment:crane08.png}} スクリプト2は下方向の移動で、下端についたときの処理を テストタイルを使って書きます。 . {{attachment:crane09.png}} スクリプト3、スクリプト4も同様に書けます。 Aボタンが押されたときは、スクリプト1をスタートすればよい。 Bボタンが押されたときは、スクリプト1を停止し、スクリプト2をスタートすればよい。 . {{attachment:crane10.png}} ---- === 全体の動作 === Aボタンが押されたときの処理を加えれば、とりあえず動作する。 . {{attachment:crane03.png}} Aボタンが押されたときに必要な処理 . クレーンを初期位置に移動する . スクリプト1をスタートする ---- === 動作詳細 === 上の状態図で考えられていない動作。(別のシナリオ) 次の場合の処理が記述されていません。 * スクリプト1が動作しているときにBボタンが押されなかった。 * 停止状態でないときにAボタンが押された。 * スクリプト2,3,4が動いているときにBボタンが押された。 . {{attachment:crane04.png}} ---- === ぬいぐるみの動作 === . {{attachment:crane05.png}} . {{attachment:crane11.png}}