2016-09-02 3 views
0

Так что я довольно новичок в кодировании на Java, у меня есть большой опыт работы с C#, и я знаю, что они очень похожи. Я в настоящее время возился с java, создавая текстовую приключенческую игру, в игре используются случаи (случай 1, случай 2, по умолчанию и т. Д.), И в настоящее время я работаю над функцией сохранения и загрузки, но я точно не знаю как я хотел бы сохранить ветвящуюся игру, которая использует случаи для дальнейшего кодирования, есть ли у кого-нибудь идеи, как это сделать?Java - Сохранение текстовой приключенческой игры

+0

Вопрос не ясен для меня. – c0der

+0

@ c0der, почему вы ответили на вопрос –

+0

В надежде, что вы это проясните. Возможно, огромное количество ответов говорит о том, что я не единственный. – c0der

ответ

0

Сохраняя объект данных, хеш-карта с сочетаниями значений ключа должна быть хорошей для этого, которая отслеживает все соответствующие состояния. Каждый раз, когда случается случай, связанное значение для этого ключа обновляется. Когда они выбирают сохранение, вы экспортируете хэш-карту в текстовый файл в любом формате, который вам нужен, если это ключевое значение, например, xml. Вы просто загружаете тот же файл в свой хэш-файл, и это приведет к инициализации вашей игры до состояния, в котором оно было остановлено.

+0

Im не 100% знакомы с hashmaps, особенно используя его с футлярами, не могли бы вы дать мне быстрый пример того, как это будет работать с одним случаем –

0

Чтобы объединить то, что я Gt из вашего объяснения и @JodanGS ответ, вот основной, прокомментировал демонстрацию хранения различных «пользовательских зависимых» переменные в HashMap:

import java.util.HashMap; 
import java.util.Map; 
import java.util.Scanner; 

public class StoreCase { 

    private static Map<String, String> casesMap = new HashMap<>(); 
    private static final String CASE1 = "case1"; 
    private static final String CASE2 = "case2"; 

    public static void main(String[] args) { 

     Scanner input = new Scanner(System.in); 
     System.out.println("Which case ? (1 or 2)"); 

     //initialize map 
     casesMap.put(CASE1, null); 
     casesMap.put(CASE2, null); 

     //select case : get user input 
     String s = null; boolean loop = true; 
     int case1State = 0; 

     while (loop) { 

      s= input.nextLine(); 

      try { 

       case1State = Integer.parseInt(s); 

      }catch (NumberFormatException ex) {} 

      switch (case1State) { 

       case 1: 
        //store case in map 
        casesMap.put(CASE1, String.valueOf(case1State)); 
        //stop loop flag 
        loop = false; 
        //do something 
        break; 

       case 2: 
        //store case in map 
        casesMap.put(CASE2, String.valueOf(case1State)); 
        //stop loop flag 
        loop = false; 
        //do something 
        break; 
       default: 
        System.out.println("Not valid. Try again."); 
      } 
     } 

     //print map 
     for(String key : casesMap.keySet()) { 

      System.out.println(" case "+ key +" state "+ casesMap.get(key)); 
     } 
    } 
} 

Я надеюсь, что вы найдете ее полезной.

Смежные вопросы