- 次のクラスを作成しなさい(プロジェクト、パッケージは任意)
名前: Run3
□ public static void main(String[] args) にチェックを入れる事
- 次の仕様をみたすクラスを作成しなさい。
名前: FieldMap
□ public static void main(String[] args) にチェックを入れない
属性:
private String[][] field
→ String型で7*7の2次元配列
操作:
public void showMap()
→fieldに格納された文字列をコンソールに表示するメソッド
public void setField(int x, int y, String obj)
→fieldの任意の要素に決まった文字を代入する
-
Run3のmainメソッド内で FieldMapをインスタンス化し、setFieldを使用してすべての要素に「*」を 代入した後、showmapを使用してコンソールに表示しなさい。
-
setFieldの使用方法を工夫し、showmapを使用した後に表示されるマップが一番外側の要素だけ「■」、ほかすべての内側の要素が「*」となるようにしなさい。
-
次の仕様をみたすクラスを作成しなさい。
名前: FieldObject
□ public static void main(String[] args) にチェックを入れない
属性:
private String name
→ このオブジェクトの名前を示す文字列
private String shape
→ このオブジェクトの姿を示す文字列
※上記の属性にまんべんなく値が代入されるようコンストラクタを用意する事 操作:
public void setShape(String s)
→shapeにsで指定した文字列を代入する
public String getShape ()
→shapeに格納された文字列を取得する
public void setName(String n)
→nameにnで指定した文字列を代入する
public String getName ()
→nameに格納された文字列を取得する
- 次の仕様をみたすクラスを作成しなさい
名前: Player
□ public static void main(String[] args) にチェックを入れない
Playerは FieldObjectを継承
属性:
int hp
→ このプレーヤーのヒットポイントを示す整数
inr atk
→ このプレーヤーの攻撃力を示す整数
※上記の属性、および継承した属性にまんべんなく値が代入されるようコンストラクタを用意する事
(継承したものに関しては記載を省略している) 操作:
public void command()
→キーボードから入力を求め、
「A」ならattackメソッドを、
「E」ならescapeメソッドを、
「S」なら specialメソッドを、
それ以外の場合 nothing()メソッドを実行する
public void attack() public void escape()
public void special() public void nothing()
→それぞれのメソッド名に合った文字列が表示される
- 次の仕様をみたすクラスを作成しなさい
名前: Building
□ public static void main(String[] args) にチェックを入れない
Buildingは FieldObjectを継承
属性:
String intro
→ この建物の説明文
※上記の属性、および継承した属性にまんべんなく値が代入されるようコンストラクタを用意する事
(継承したものに関しては記載を省略している) 操作:
public void introduce()
→ introに格納された文字列をコンソールに表示する
- 次の仕様をみたすクラスを作成しなさい
名前: FieldMap2
□ public static void main(String[] args) にチェックを入れない
属性:
private FieldObject [][] field
→ FieldObject型で7*7の2次元配列
操作:
public void showMap()
→fieldの各要素に格納されたフィールドオブジェクトを元にコンソールにフィールドマップを表示するメソッド
public void setField(int x, int y, FieldObject obj)
→fieldの任意の要素に決まったフィールドオブジェクトを代入する
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
以下はRun3のメインメソッド内で実現しなさい。
- 次に示すインスタンスを作成しなさい。
・nameが「壁」、shapeは「■」のFieldObject
・nameが「草原」、shapeは「*」のFieldObject
・nameが「勇者」、shapeは「☆」、hpとatkはお好みに設定したPlayer
・nameが「城」、shapeは「◇」、立派なお城である旨のintroをもったBuilding
・nameが「町」、shapeは「△」、さびれた町である旨の introをもった Building
11. FieldMap2をインスタンス化し、setFieldを使って、次のようなマップを作成し、showMapで表示しなさい
・壁に囲まれた領域の中に城1、町1、勇者1がある。あまったマスはすべて草原
・城、町、勇者の位置はランダム、ただし壁と重ならない。
12. 次のことを実現しなさい
・キーボードから入力を求め
「W」なら勇者をFieldMap2のひとつ上へ、 「A」なら勇者をFieldMap2のひとつ左へ移動させる
「S」なら勇者をFieldMap2のひとつ右へ、「D」なら勇者をFieldMap2のひとつ下へ移動させる
・それ以外の入力が求められたら、再度キーボードから入力を求めさせる
・「E」が入力された場合、プログラムを終了する
・移動先が壁の場合は進ませない
・また、町もしくは城であった場合も同様に進ませないが、その施設の説明文を表示する
※移動が成功した場合は、移動後の状態のFieldMap2のshowMapを毎回表示する
13. 次のことを実現しなさい
・勇者の移動先が草原の場合、一定の確率で「敵が現れた!」とコンソールに表示し、commandメソッドを実行しなさい。
※いずれの行動をとった後でも戦闘を強制的に終了させ、次の移動が行えるようにすること