例えば以下のような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で位置を判定して実行、がよいかと思います。