6−2 モグラたたきゲームの作成
| ここでは、お待ちかねのモグラたたきゲームを作成しましょう。 スレッドを活用することで、モグラが出たり引っ込んだりする動きを実現することができます。 |
| 練習問題 | ||||||||||||||||||||
|
まず、3つの穴のどれか1つからモグラが出てくるという、プログラムを作りましょう。動作内容は次の通りです。 プログラムを起動し、
[ゲーム開始] ボタンをクリックすると、どれか一つの穴からランダムにモグラが出てきます。
このように、どれか1つの穴からモグラが出てくるという動作が [ゲーム終了] ボタンをクリックするまで続きます。 ![]() それでは、プログラミングに入りましょう。
さて、前節と同様、[ゲーム開始] および [ゲーム終了] ボタンのイベントハンドラにおいて、 スレッドの作動開始と停止を記述します。
今、スレッドにおいて、(3つの内の) どこかの穴からモグラを出現させます。
ここに、ボタンの表示/非表示は visible プロパティの値で指定できますから、
ここで、Math.abs( rand.nextInt() % 3 ) というのが出てきましたね。 これ(rand.nextInt())は、0〜1の値が乱数で出ます。そして3で割った余りを・・・0・1・2に当てているのです。 以前(4章の分岐処理)に勉強しているので、わかりますよね? これで完成です。早速実行してみてください。モグラが現れては消える、という動作が再現されると思います。 |
| 基礎課題6−2 | |||
| 上の【練習問題】のままではゲームになりません。そこで、モグラが現れている時にそれをたたくと ((モグラが表示されている時にクリックすると)、得点が加えられるようにしましょう。
なお続けて、ゲームを行うときに以前のゲーム得点が残っていてはダメですね。 まず、フレームを作成しましょう。【練習問題】のフレームに上のように得点欄を付け加え、 次に、得点を加える部分をプログラミングします。
クリックした時に、現在の得点に1(点) を加えれば良いのですね。 jTextField の Text プロパティが String (文字列) 型であることに注意してください。 残りの2つのモグラ (ボタン) についても同様にプログラミングできます。 最後に、[開始] ボタンをクリックしたときのイベントハンドラに得点を0に戻す部分を付け加えてください。
このように得点をつけることで、ようやくゲームらしくなりました。 |
|||
| 基礎課題6−2の解答 |
| 基礎課題6−3 | |
|
【基礎課題6-2】のプログラムでは、[ゲーム終了] ボタンをクリックし終了させた後も、 そこで、[ゲーム終了] ボタンをクリックすると、下のように [モグラ] ボタンが選択不可になるようにしてください。
同時に、[ゲーム開始] ボタンをクリックした後に、[モグラ] ボタンを選択可とすることも忘れないでください。 これで、ゲーム終了後にも得点が加算される、という"不正"を防ぐことができるようになりました。 |
|
| 基礎課題6−3の解答 |
| 応用課題6−3 | ||
| 実際のゲームでは、自分で [終了] ボタンをクリックするのではなく、予め制限時間が決められているのが普通です。 そこで、制限時間を30秒として、この制限時間内で得点を競うというゲームにしてください。 作成するプログラムの動作内容は次の通りです。 プログラムを起動すると下の画面が現れます。ここで、[ゲーム開始] ボタンをクリックするとゲームが始まります。
30秒経過すると、ゲーム終了と表示され、ゲームは終わります。
ここで、[ゲーム開始] ボタンをクリックすると、初期画面に戻り、再びゲームが開始されます。 ヒント:残り時間をカウントするために、新たに スレッド を加えます。 したがってこのプログラムでは、2つのスレッドを用います。 |
||
| 応用課題6−3の解答 |