テキストファイルを読み込む
GUI版ダンジョン
探索プログラム改
ダンジョン探索プログラムのマップをファイルから読み込みます。
目次
1. ダンジョン探索プログラム改
それでは早速「GUI版ダンジョン探索プログラム」のマップをファイルから読み込むバージョンを作成してみましょう。
マップをテキストファイルから読み込む新しいソースコードは、
DangeonWalker2.zip にまとめたので、こちらをダウンロードしてください。
ダウンロード→
DangeonWalker2.zip
DangeonWalker2.zipを展開すると、以下の様なファイルの構成になっています。
ファイル構成
DangeonWalker2
├ floors 追加
│ ├ floor01.txt 追加
│ └ floor02.txt 追加
│
└ src
└ awt
└ ExchangeImageAWT.java
img
├ Argb.java
└ PixImage.java
map
├ Cell.java
├ Drive.java 変更あり(ファイル読み込み)
├ ReadFile_04.java 追加(package map;)
└ Sample24_02.java
point
├ Compass.java
├ Point_dou.java
├ Point_int.java
└ Rect_int.java
screen
├ Point_3D.java
├ ScreenImage.java
├ ScreenImage01.java
└ WallVertex.java
swing
├ DialogBlackYN.java
├ FullScreenFrame.java
├ FullScreenKeyFrame.java
├ FullScreenKeyPimgFrame.java
└ ImagePanel.java
生成された「DangeonWalker2」フォルダを、wsディレクトリに移動してください。
(「DangeonWalker2」フォルダが2重になっていたら内側のフォルダだけでOKです。)
続いて、コマンドラインから、以下のように実行します。
DangeonWalkerと同様にウインドウが開いて動作すれば読込成功です。
コマンドライン
>cd ws/DangeonWalker2
>mkdir bin
>javac -encoding UTF-8 -d bin -sourcepath src src/map/Drive.java
>java -cp bin map.Drive
2. 変更点
DangeonWalker2 は、DangeonWalkerから以下の点を変更しています。
- 読み込むテキストファイルは、DangeonWalker2フォルダの直下に floorsディレクトリを作成して保存しました。
ソースコードではないので srcディレクトリには入れていません。
- ReadFile_04.java は、mapディレクトリに配置しました。
これに伴い、「package map;」の一行を追加しています。
- 以前はマップを Drive.java に直接リテラルで書き込んでいましたが、
これを ReadFile_04.java で読み込むように修正しています。
これに伴い、Drive.java に、「import java.io.File;」の一行を追加しています。
Drive.java
//Drive.java
package map;
import java.io.File; //変更箇所
import swing.FullScreenKeyPimgFrame;
public class Drive {
public static FullScreenKeyPimgFrame frame;
public static Sample24_02 mapper;
public static void main(String[] args) {
//変更箇所
String[] mapPaths = {
"floors/floor01.txt",
"floors/floor02.txt"
};
int[][][] map3D = new int[mapPaths.length][][];
for(int i=0; i<mapPaths.length; i++){
map3D[i]
= ReadFile_04.toIntArray2D(new File(mapPaths[i]), "UTF-8", ",", 16);
}
mapper = new Sample24_02(map3D, 0, 1, 0);
String[] msgs = {
null,
"ゴールはこの裏です。",
"準備中。",//2
"よくぞお越しくださいました。",//3
"またのお越しをお待ちしております。",//4
"非常階段",//5
"大安吉日にございます。",//6
"どうぞお気遣いなく。",//7
"警備は万全にございます。",//8
"眠ってはなりませぬ。",//9
"階段",//a
"EXIT",//b
"おめでとうございます。",//c
null,
null,
null
};
mapper.setMsgArray(msgs);
frame = new FullScreenKeyPimgFrame("DangeonWalker");
frame.iniEvent();
frame.setVisible(true);
}
}
上手く動いたっスか?
最後はムリに付き合わせた
みたいになってすまん。
ごめんね。
許してあげて。
おわり