質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
JavaFX

JavaFXとは、Java仮想マシン上で動作するリッチインターネットアプリケーション (RIA) のGUIライブラリです。Swingとは異なり、FXMLと呼ばれる XMLとCSSを併用してデザインを記述します。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

2回答

1989閲覧

Javaのマップゲームで立ち位置をセーブできるようにしたい

yamaaa

総合スコア8

JavaFX

JavaFXとは、Java仮想マシン上で動作するリッチインターネットアプリケーション (RIA) のGUIライブラリです。Swingとは異なり、FXMLと呼ばれる XMLとCSSを併用してデザインを記述します。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2018/01/29 17:06

編集2018/01/30 04:30

ubuntuでJavaを使用して簡易的なRPGゲームを制作しています。

そこで、特定の位置に来たら(具体的に言うと添付した画像の位置に来たら)セーブをできるようにしたいです。

イメージ説明

セーブ機能の実装のやり方としては、別のテキストファイルに必要な変数たち(まだ未実装ですが、主人公のレベル、アイテムなど)

を保存して、ロードするときにはそこに保存した変数を呼び出すという形をとることはなんとなく理解しています。

初心者なので"FileWriter"クラスと"FileReader"クラスをつかって実装できればいいのかなと思っております。

最後に、使用しているソースコードらをダウンロードするリンクを添付するので

お力添えをしていただけたら幸いと思います。

リンク内容

passwordはyamaaaです。

よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/01/29 22:16

ファイルを参照してもらう場合、アップローダーを使うのはやめましょう。 github などWEB上でソースもみれるサービスがおすすめです。
masaya_ohashi

2018/01/30 04:31

「特定の位置に来たら(具体的に言うと添付した画像の位置に来たら)セーブをできるようにしたいです。」とありますが、現在「調べる」ボタン的なものが無いように見受けられます。話しかけて選択肢を選んで、等の仕組み自体が無いようなので、「その位置に立った瞬間セーブされる」ことしか出来ないと思いますが、それでもいいのでしょうか?
yamaaa

2018/01/30 04:34

その立ち位置に来たら、セーブしますか?はいorいいえ とウインドウでだせるようにしたいと思っておりますので、それで大丈夫です。 説明が足りず申し訳ございません。
masaya_ohashi

2018/01/30 04:38 編集

「したいと思っております」は自分でやるということですか?それともあなたでない誰かの担当ですか?以前の質問であなたは「セーブ機能」を担当と聞いていましたが、そういったメッセージの処理も担当なのですか?コードをちらっと見た限り、そういったメッセージを出す処理等は一切ないようなので、「選択肢でセーブ」ということ自体いまのところ不可能だと私は判断します。
yamaaa

2018/01/30 04:44

段階では、その立ち位置に来た瞬間にセーブで問題ありません。文面が不十分でした。
masaya_ohashi

2018/01/30 04:47

ロードはいつやるんですか?
yamaaa

2018/01/30 04:50

ロードについては、ゲームを終了し、再びゲームを起動する時にロードをしたいです。
guest

回答2

0

ベストアンサー

例えば以下のようなSaveDataクラスを作ります。中身自体はhttps://teratail.com/questions/110668で回答した内容を参考にご自分で作成してください。

Java

1public class SaveData { 2 public int charaPosX; 3 public int charaPosY; 4 public void save() { 5 // Propertiesを使った保存処理で、charaPosX、charaPosYを保存 6 } 7 public void load() { 8 // Propertiesを使った読込処理で、charaPosX、charaPosYを読込 9 } 10}

あとは使いたいタイミングでSaveDataクラスをnewしてloadやsaveを行うだけです。

Java

1SaveData sd = new SaveData(); 2sd.load(); // 読込処理を行う 3chara = new MoveChara(sd.charaPosX, sd.charaPosX, mapData); // SaveDataからキャラのXYを取り出して使う

Java

1SaveData sd = new SaveData(); 2sd.charaPosX = chara.getPosX(); // SaveDataにキャラのXYを設定する 3sd.charaPosY = chara.getPosY(); 4sd.save(); // 保存処理を行う

あなたのコードでいうならloadはRpgGameControllerのinitializeの中に、saveはいまの処理ではRpgGameControllerのnextで位置を判定して実行、がよいかと思います。

投稿2018/01/30 05:04

masaya_ohashi

総合スコア9206

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yamaaa

2018/01/30 05:55

細かなところまでありがとうございます???? ひとまず、自力で頑張ってみます! また、分からない事があれば質問させて頂くと思うので、よろしくお願いします!
yamaaa

2018/01/31 02:19

java.util.PropertiesはString,Stringで保存されるので、セーブする時はキャラの座標をint型らSting型に変更。ロードする時には、String型からint型に戻す必要があると思うんですが、この一連の作業が上手く行きません.... String s = String.valueOf(i); int i = Integer.parseInt(s); (s,iは例) これらを使ってみたのですが....
masaya_ohashi

2018/01/31 02:36

やりかたは合っているように見えますよ。なにがうまく行っていないのかその文章からは読み取れません。
guest

0

多分、衝突判定を作ってあると思いますが、
その衝突判定時に座標によってイベントを発生させればいいのです。

保存はオブジェクトのシリアライズですね。

投稿2018/01/29 22:21

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問