課題1
教科書の実行例(p.134 図3.18, p.147 例3.2)を変更して実行し,正しくない動作をする例を見つけよ.正しくない動作の原因箇所をプログラム中から探し,どのように修正すれば良いかを考え,修正せよ.
ヒント
- initGoalListメソッドとinitInitialStateメソッドでゴールと初期状態を決めているので,これを変更する.
- 実行例を見て,怪しい部分があったらプログラム中にSystem.out.println文等を挿入して変数の値を確認しながら,動作の詳細を理解するとよい.
- プログラムの意味がわかってきたら,その説明をコメント(// で始まる行)として追加していくと良い.
- たとえば,remove ?x from on top ?y オペレータを,?x がテーブルの上にあるときに実行すると...?
課題2
教科書のプログラムでは,オペレータ間の競合解消戦略としてランダムなオペレータ選択を採用している.これを,あらかじめオペレータに優先度を付けておき,優先度が高いものから適用するような競合解消戦略に変更せよ.
ヒント
- 単純な方法としては,例えばOperatorクラスにint priorityという変数を追加する等があるが,なるべく効果的な競合解消を考案して実装することが望ましい.
課題3
教科書のプログラムでは,最初にinitGoalListメソッドで"B on C", "A on B" というゴール文字列を与えている.これを,ユーザが何らかの方法で入力して指定できるように変更せよ.
ヒント
- 標準入力から文字列を入力する場合は,System.inやBufferedReaderを組み合わせて用いる.GUIを用いる場合は,SwingならJTextFieldやJTextArea等を用いると良い.
課題4
教科書のプログラムでは,ブロックの色や形を考えていないので、色と形を扱えるようにせよ。具体的には,Aが赤で三角形,Bが青で四角形,Cが黄で四角形とし,色と形を使ってゴールを指定できるようにせよ. 例えば,"red on blue" や"square on blue"のように.
課題5
グループでスムーズに開発を進めるためには,役割分担,進捗状況の管理,情報共有などが必要になる.このとき,何に気をつけるべきか,必要なことは何かを,グループ作成書類Grep6で考察せよ.
最終更新:2010年12月05日 19:54