<<
Squeakで学ぶプログラミング(初版)
/
状態とシミュレーション
/
クレーンゲームを作ってみよう
/変数と状態
>>
7.1 変数と状態
練習問題7.1 #exercise#
M先生
今回からは,カーレースゲームを卒業して,クレーンゲームのプロジェクトを始めるよ.
Aさん
クレーンゲームって何ですか?
M先生
UFOキャッチャーっていえば分かる?ゲームセンターにある,クレーンが人形を掴むゲーム.
Aさん
あ,わかりました.
M先生
では,まずクレーンを描いてみてくれる?
Aさん
こんな感じですかね.
M先生
できたら,これは復習だけど,クレーンを左に動かすにはどうしたらよいかわかる?
Aさん
えっと,X座標を減らしていけばよいのではないでしょうか..
M先生
その通り.それでは,まずボタンを一つ作って,ボタンが押されたら下に動くプログラムを目指していこう.
Aさん
はい.
M先生
ではまず,もうすこし簡単な練習から始めようか.クレーンの左側に四角形を置いて,クレーンが四角形にぶつかったら今度はクレーンが下に進むプログラムを作ってみよう.できる?
Aさん
えっと,ぶつかった判定は色の判定でできましたよね?で,下に進むためにはY座標を減らしていけば良いのではないでしょうか.
M先生
それじゃあ,ちょっとやってみてください.
Aさん
ん,ちょっと待てよ・・・.触れている間しか下に行かない・・・.
M先生
そうだよね.じゃあどうしたらいいかな?
Aさん
えっと・・・「左に動く」と「下に動く」2つのスクリプトを作って,当たったときに切り替わるようにすれば良いのではないでしょうか.
M先生
そうですね,スクリプティングを巧みに使えば,これまでやった方法でも出来るね.
Aさん
でもめんどくさそう.
M先生
じゃあ,今回はこのプログラムを変数を使って作ってみようか.
Aさん
お,新しい技の登場ですね.
M先生
でもその前に,問題をもう少し分析してみよう.まずこのプログラムは,本質的に「 状態 」という概念を扱う必要があるプログラムに分類される.
Aさん
状態?
M先生
例えば,最初は左に動くという状態で,ぶつかったら下に動くという状態という具合にね.
Aさん
状態が切り替わるってことですか?
M先生
その通り.「状態」を伴うプログラムでは,異なる状態に応じて,異なる仕事をするスクリプトを作る必要がある.そして,そのようなスクリプトを作るには,コンピュータにどのような状態なのかを記憶させておく必要がある.
Aさん
記憶しておいた状態に応じて動く方向を変えるプログラムを作るわけですね.
M先生
その通り.じゃあやってみようか.
Aさん
はい.(ここからはちょっと難しそうな予感...)
M先生
まず, 変数 を作ってみよう.クレーンのビューアーを開いて,一番上に「v」というボタンを探してみてくれる?
Aさん
ありました.
M先生
この「v」をクリックすると,新しい変数の名前を聞かれるので,変数の名前を入力しよう.
Aさん
どんな名前がいいでしょうか?
M先生
今回は,方向を記憶しておく変数なので「方向」にしようか
Aさん
できました.
M先生
自分で作った変数(方向)は,X座標やY座標と同じように計算したり,代入したりすることができる.
Aさん
つまり,数字を記憶しておくことができるわけですね.
M先生
その通り.ここで,数字が1の場合左に動く,数字が2の場合下に進むというルールを決めることが重要.
Aさん
なるほど.そうすると,方向が1の場合はX座標から以下を引く,方向が2のときクレーンのY座標から以下を引く・・・こんなプログラムが組めます.
M先生
すばらしい.ではテストしてみよう.そのスクリプトを繰り返し実行にしておいて,方向の変数を(ビューアーを使って)手動で変更すればテストできるから.
Aさん
分かりました.まず,方向を0にしておきます.この段階では,1でも2でもないので動きませんね.方向を1に変えると左に動き,2に変えると下に動きます.3にするとまた止まりますね.
M先生
すばらしい.では次に,四角形のに当たったら状態が2(下へ動く)へ変わるようなプログラムを作ろう.
Aさん
いま手動でやったことを,自動でやればよいのですね...できました.
M先生
変数を使って状態を制御する方法の感覚はつかめた?
Aさん
なんとなく分かりました.ところで,変数名は後から変更できないのですか? 変数名の変更
M先生
できるよ.変数の左側をクリックしてごらん.
Aさん
オーケーです.
M先生
では次のステップへ進もう.実際のクレーンゲームでは障害物に当たったら下に行く,というわけではなくて,ボタンを押したら下に行くよね.
Aさん
クレーンの方向を変えるボタンを作ればよいのですね.
M先生
ついでにリセットボタンとスタートボタンも作ってくれる?
Aさん
できました.らしくなってきましたね.
M先生
あと,普通のクレーンゲームだったら,一回下方向へ状態が変わったらもう左には行けないはずなんだけど,いまのままだと出来ちゃうよね.できないようにできる?
Aさん
条件分岐を一つ加えるとできます.
M先生
すばらしい.あとは,本当は下に動くと同時に,クレーンの柄の部分が延びるようにすると完璧なんだけどね...これは宿題にしよう.
Aさん
はい.
練習問題7.1
上記クレーンゲームを,下に動くと同時に,柄の部分が延びるように改良しなさい.
<<
Squeakで学ぶプログラミング(初版)
/
状態とシミュレーション
/
クレーンゲームを作ってみよう
/変数と状態
>>