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

プログラム

本日の課題

完成したものはこちら
loadSaveData メソッドでセーブデータを読み込みます。
ファイルから行を読み込む。
不要な文字を削除して数字だけを抽出する。
数字を saveIndex に格納する。
saveIndex が 999 の場合は 0 に変更してファイルに保存する。

saveData メソッドでセーブデータを書き込みます。
指定されたインデックスをファイルに書き込む。

ソースコード


// セーブデータの読み込み
private static void loadSaveData() {
try (BufferedReader br = new BufferedReader(new FileReader(“images/save.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/save.csv”)) {
fw.write(String.valueOf(index));
} catch (IOException e) {
e.printStackTrace();
}
}

解説

1. loadSaveData メソッド
このメソッドは、セーブデータを読み込んで saveIndex に格納する役割を持っています。

// セーブデータの読み込み
private static void loadSaveData() {
try (BufferedReader br = new BufferedReader(new FileReader(“images/save.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();
}
}

ファイルを開く
try (BufferedReader br = new BufferedReader(new FileReader(“images/save.csv”))) {
try-with-resources 構文を使用して、ファイルを安全に開きます。これにより、ファイルが自動的に閉じられます。
BufferedReader と FileReader を使って、”images/save.csv” ファイルを読み込みます。

ファイルの内容を読み込む
String line = br.readLine().trim();
br.readLine() はファイルの最初の行を読み込みます。
trim() メソッドを使って、行の前後の空白を取り除きます。

不要な文字を削除する
line = line.replaceAll(“[^\\d]”, “”);
replaceAll(“[^\\d]”, “”) を使って、数字以外のすべての文字を削除します。正規表現 [^\\d] は数字以外の文字を表します。

文字列を整数に変換
saveIndex = Integer.parseInt(line);
Integer.parseInt(line) を使って、文字列を整数に変換し、saveIndex に格納します。

セーブデータが999の場合の処理
if (saveIndex == 999) {
saveIndex = 0;
saveData(0); // セーブデータを0に更新
}
saveIndex が 999 の場合、これを 0 に変更し、saveData メソッドを呼び出してセーブデータを0に更新します。

例外処理
} catch (IOException e) {
e.printStackTrace();
}
ファイルの読み込み中にエラーが発生した場合、IOException をキャッチし、エラーメッセージを出力します。

2.saveData メソッド
このメソッドは、指定されたインデックスをセーブデータとしてファイルに書き込む役割を持っています。

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

詳細解説
ファイルを開く
try (FileWriter fw = new FileWriter(“images/save.csv”)) {
try-with-resources 構文を使用して、ファイルを安全に開きます。これにより、ファイルが自動的に閉じられます。
FileWriter を使って、”images/save.csv” ファイルに書き込みます。

インデックスを書き込む
fw.write(String.valueOf(index));
String.valueOf(index) を使って、インデックスを文字列に変換し、ファイルに書き込みます。

例外処理
} catch (IOException e) {
e.printStackTrace();
}
ファイルの書き込み中にエラーが発生した場合、IOException をキャッチし、エラーメッセージを出力します。

目次に戻る

スポンサーリンク

コメント

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