Javaでゲームを作ろう<アドベンチャーゲーム>3回目

プログラム

本日の課題

Javaでゲームを作ろう<アドベンチャーゲーム>3回目
メインメソッドを作ろう

アドベンチャーゲーム(画像表示機能付き)
1回目:構成を考えよう
2回目:メインメソッドの解説
3回目:ストーリーデータ、セーブデータの読み込みとセーブデータの書き込み
4回目:スタート画面を作ろう(テキストアドベンチャーと同じソースコードです)
5回目:ゲーム画面の表示部分を作成する
6回目:「story」配列からゲーム進行の情報を取り出し実行する。
完成品:説明が不要の方は、こちらからコードをコピーしてください。

ソースコード


// ストーリーデータの読み込み
private static void loadStory() {
try (BufferedReader br = new BufferedReader(new FileReader(“images/story2.csv”))) {
String line;
story = br.lines().map(l -> l.split(“,”)).toArray(String[][]::new);
} catch (IOException e) {
e.printStackTrace();
}
}

// セーブデータの読み込み
private static void loadSaveData() {
try (BufferedReader br = new BufferedReader(new FileReader(“images/save2.csv”))) {
String line = br.readLine().trim();
// 不要な空白や非表示文字を削除
line = line.replaceAll(“[^\\d]”, “”);
saveIndex = Integer.parseInt(line);
// セーブデータが999の場合は0に変更
if (saveIndex == 999) {
saveIndex = 0;
saveData(0); // セーブデータを0に更新
}
} catch (IOException e) {
e.printStackTrace();
}
}

// セーブデータの書き込み
private static void saveData(int index) {
try (FileWriter fw = new FileWriter(“images/save2.csv”)) {
fw.write(String.valueOf(index));
} catch (IOException e) {
e.printStackTrace();
}
}

解説

loadStory メソッドの詳細な説明
private static void loadStory() {
try (BufferedReader br = new BufferedReader(new FileReader(“images/story2.csv”))) {
String line;
story = br.lines().map(l -> l.split(“,”)).toArray(String[][]::new);
} catch (IOException e) {
e.printStackTrace();
}
}
各部分の説明
1
private static void loadStory()
・private: このメソッドは、このクラスの外部からはアクセスできません。
・static: このメソッドはクラスに属し、インスタンス化せずに呼び出せます。
・void: このメソッドは何も値を返しません。
・loadStory(): メソッドの名前です。ストーリーデータを読み込む役割があります。

2
try (BufferedReader br = new BufferedReader(new FileReader(“images/story2.csv”))) {
・try: リソースを開いて使う場合に使います。ファイルを開いて読み込むときにエラーが発生する可能性があるため、tryブロック内で処理します。
・BufferedReader br = new BufferedReader(new FileReader(“images/story2.csv”)): ファイルを読み込むためのオブジェクトを作成します。”images/story2.csv” は読み込むファイルのパスです。BufferedReader は効率的にファイルを読み込むために使います。

3
story = br.lines().map(l -> l.split(“,”)).toArray(String[][]::new);
・br.lines(): ファイルの各行を順に読み込みます。
・.map(l -> l.split(“,”)): 各行をカンマ(,)で区切り、文字列の配列に変換します。例えば、”text1,text2,text3″ が [“text1”, “text2”, “text3″] になります。
.toArray(String[][]::new): 変換された文字列の配列を二次元配列 String[][] に変換して、story に格納します。

4
catch (IOException e) {
・catch: try ブロック内でエラー(例: ファイルが見つからない)が発生した場合、このブロックでエラー処理を行います。
・IOException e: 入出力処理中のエラーをキャッチします。

5
e.printStackTrace();
・エラーが発生した場合、エラーメッセージを表示します。これにより、何が原因でエラーが発生したかを知ることができます。

全体の流れ
1
ファイルの読み込み準備
・BufferedReader と FileReader を使って、”images/story2.csv” ファイルを開きます。

2
ファイルの各行を処理
・ファイルの各行を読み込み、カンマで区切って文字列の配列に変換します。
・すべての行を二次元配列 String[][] に変換し、story 変数に格納します。

3
エラーハンドリング
・ファイルの読み込み中にエラーが発生した場合、エラーメッセージを表示します。
このメソッドにより、ゲームのストーリーデータがプログラム内に読み込まれ、使用できるようになります。

loadSaveData メソッドの詳細な説明
// セーブデータの読み込み
private static void loadSaveData() {
try (BufferedReader br = new BufferedReader(new FileReader(“images/save2.csv”))) {
String line = br.readLine().trim();
// 不要な空白や非表示文字を削除
line = line.replaceAll(“[^\\d]”, “”);
saveIndex = Integer.parseInt(line);
// セーブデータが999の場合は0に変更
if (saveIndex == 999) {
saveIndex = 0;
saveData(0); // セーブデータを0に更新
}
} catch (IOException e) {
e.printStackTrace();
}
}
各部分の説明
1
private static void loadSaveData()
private: このメソッドは、このクラスの外部からはアクセスできません。
static: このメソッドはクラスに属し、インスタンス化せずに呼び出せます。
void: このメソッドは何も値を返しません。
loadSaveData(): メソッドの名前です。セーブデータを読み込む役割があります。

2
try (BufferedReader br = new BufferedReader(new FileReader(“images/save2.csv”))) {
・try: リソース(ここではファイル)を開いて使う場合に使います。ファイルを開いて読み込むときにエラーが発生する可能性があるため、tryブロック内で処理します。
・BufferedReader br = new BufferedReader(new FileReader(“images/save2.csv”)): ファイルを読み込むためのオブジェクトを作成します。”images/save2.csv” は読み込むファイルのパスです。BufferedReader は効率的にファイルを読み込むために使います。

3
String line = br.readLine().trim();
・br.readLine(): ファイルの最初の行を読み込みます。
・.trim(): 読み込んだ行の前後の空白文字を削除します。

4
line = line.replaceAll(“[^\\d]”, “”);
・replaceAll(“[^\\d]”, “”): 行の中から数字以外の文字をすべて削除します。これにより、セーブデータが純粋な数字だけになります。

5
saveIndex = Integer.parseInt(line);
・Integer.parseInt(line): 文字列として読み込んだ数字を整数に変換し、saveIndex に格納します。

6
if (saveIndex == 999) {
・セーブデータが特定の値(ここでは999)であれば、ゲームをリセットして新しいゲームとして扱います。

7
saveIndex = 0;
・saveIndex を0にリセットします。これにより、ゲームが最初から始まります。

8
saveData(0);
・saveData メソッドを呼び出して、セーブデータを0に更新します。

9
catch (IOException e) {
・try ブロック内でエラー(例: ファイルが見つからない)が発生した場合、このブロックでエラー処理を行います。
・IOException e: 入出力処理中のエラーをキャッチします。

10
e.printStackTrace();
・エラーが発生した場合、エラーメッセージを表示します。これにより、何が原因でエラーが発生したかを知ることができます。

全体の流れ
1
ファイルの読み込み準備
・BufferedReader と FileReader を使って、”images/save2.csv” ファイルを開きます。

2
ファイルの行を読み込む
・ファイルの最初の行を読み込み、前後の空白を削除します。

3
不要な文字の削除
・読み込んだ行から数字以外の文字をすべて削除します。

4
数値に変換
・残った文字列を整数に変換し、saveIndex に格納します。

5
特定の値の処理
・もしセーブデータが999の場合、saveIndex を0にリセットし、セーブデータを更新します。

エラーハンドリング
・ファイルの読み込み中にエラーが発生した場合、エラーメッセージを表示します。

このメソッドにより、前回のゲームセッションの進行状況が復元され、プレイヤーが前回の続きからゲームを再開できるようになります。

saveData メソッドの詳細な説明
// セーブデータの書き込み
private static void saveData(int index) {
try (FileWriter fw = new FileWriter(“images/save2.csv”)) {
fw.write(String.valueOf(index));
} catch (IOException e) {
e.printStackTrace();
}
}

各部の説明
1
private static void saveData(int index)
・private: このメソッドは、このクラスの外部からはアクセスできません。
・static: このメソッドはクラスに属し、インスタンス化せずに呼び出せます。
・void: このメソッドは何も値を返しません。
・saveData(int index): メソッドの名前とパラメータです。ここでは、index という整数を受け取り、それをセーブデータとして保存します。

2
try (FileWriter fw = new FileWriter(“images/save2.csv”)) {
・try: リソース(ここではファイル)を開いて使う場合に使います。ファイルに書き込むときにエラーが発生する可能性があるため、try ブロック内で処理します。
・FileWriter fw = new FileWriter(“images/save2.csv”): ファイルに書き込むためのオブジェクトを作成します。”images/save2.csv” は書き込むファイルのパスです。FileWriter を使ってファイルに文字を書き込みます。

3
fw.write(String.valueOf(index));
・fw.write(): FileWriter を使ってファイルに文字を書き込みます。
・String.valueOf(index): 受け取った index を文字列に変換します。整数をそのままファイルに書き込むことはできないので、文字列に変換してから書き込みます。

4
catch (IOException e) {
・catch: try ブロック内でエラー(例: ファイルが見つからない、書き込めない)が発生した場合、このブロックでエラー処理を行います。
・IOException e: 入出力処理中のエラーをキャッチします。

5
e.printStackTrace();
・エラーが発生した場合、エラーメッセージを表示します。これにより、何が原因でエラーが発生したかを知ることができます。

全体の流れ
1
ファイルの書き込み準備
・FileWriter を使って、”images/save2.csv” ファイルを開きます。ファイルが存在しない場合は、新しいファイルが作成されます。

2
データの書き込み
・index の値を文字列に変換し、ファイルに書き込みます。これにより、現在のゲームの進行状況が保存されます。

3
エラーハンドリング
・ファイルの書き込み中にエラーが発生した場合、エラーメッセージを表示します。

このメソッドの役割
このメソッドの役割は、ゲームの進行状況をファイルに保存することです。これにより、プレイヤーがゲームを終了しても、次回再開する際に前回の進行状況から続けてプレイできるようになります。

目次に戻る

スポンサーリンク

コメント

タイトルとURLをコピーしました