2017-04-11 37 views
1

大家好我正在爲我的Android編程課程製作文本遊戲。在android文本遊戲中保存技巧

我想做一個生存遊戲。

所以我將這個遊戲轉換爲角色類,帶有這個角色類。

這是生存遊戲,所以如果玩家按下第二天按鈕,我要救

的DATAS。

我想我能解決這個問題,挽救我的數據與FILEIO做一個txt

文件。

然後,當應用程序啓動時,我讀這個txt文件來加載播放器的數據。

但我認爲這種情況有問題。

我認爲用戶可以手動修改這些數據。但我不想要這種情況。

那麼我該如何解決這個問題?

另外,我還沒有這樣做。我需要改變方式來保存我的遊戲數據?

我使用Google搜索並找到2種保存方式。

  1. 共享偏好
  2. sqlite的
  3. TXT文件保存

什麼方法比較好?

如果我可以保存txt文件保存,請告訴我如何保護數據不被手動修改。

請用這個問題回答!

============================================== ======================

對不起使用流利的英語..因爲我不是母語的人。

回答

0

有幾個選項可以這樣做:

  1. 實現一個數據庫,並使用SQLCipher固定。我從來沒有嘗試過,但你可以通過使用this
  2. 使用安全的SharedPreference而不是android-股票SharedPreferences。你可以找到安全的SharedPreferences here的用法。如圖所示,例如:

這是SharedPreferences如何正常保存

<map> 
    <int name="timeout" value="500" /> 
    <boolean name="is_logged_in" value="true" /> 
</map> 

這是SharedPreferecens如何安全的保存:

<map> 
    <string name="TuwbBU0IrAyL9znGBJ87uEi7pW0FwYwX8SZiiKnD2VZ7"> 
     pD2UhS2K2MNjWm8KzpFrag==:MWm7NgaEhvaxAvA9wASUl0HUHCVBWkn3c2T1WoSAE/g=rroijgeWEGRDFSS/hg 
    </string> 
    <string name="8lqCQqn73Uo84Rj">k73tlfVNYsPshll19ztma7U"> 
     pD2UhS2K2MNjWm8KzpFrag==:MWm7NgaEhvaxAvA9wASUl0HUHCVBWkn3c2T1WoSAE/g=:jWm8KzUl0HUHCVBWkn3c2T1WoSAE/g= 
    </string> 
</map> 
+0

哦...... 。謝謝:) – InhoLee

+0

你可以看看我編輯的例子。它聲稱不是防彈的,但它已經很難解碼字符串。 @InhoLee –

0

什麼編碼的數據,以便它是人類-unreadable?

我想你現在只是將文件流直接寫入文件,將播放器的數據(健康,飢餓或其他)寫入文件。該文件可能是這樣的:

100 50 78 89 6 

然後你讀每個數字後面,並將它們分配給Character對象。

而且您擔心用戶可能能夠確定哪個值對應於哪個字段並編輯該文件以作弊。我對嗎?

您可以嘗試的是使用ObjectOutputStreamObjectInputStreamCharacter對象序列化爲二進制。當對象處於二進制時,用戶將無法讀取它。另外,將文件擴展名更改爲.dat或類似的東西。

使其不可讀的另一種方法是對base64進行編碼。

0

使用SQLite - 如果你的遊戲是依賴於設備,那麼你可以創建SQliteDataBase,它是處理遊戲數據最佳的方法和用戶信息和遊戲的狀態。

使用API​​ - 如果你不想只在設備,如果用戶切換其手機依賴然後他的比賽狀態是同步從去年的狀態,那麼你必須在服務器上創建數據庫,MySqlOracle創造並在Android中使用APIS

0

1.如果你需要卸載應用程序後的用戶數據,並再次安裝,那麼你應該使用文本文件選項,你可以隱藏文件通過使用點(。文件名)它將被隱藏。 2.otherwise,如果你想存儲大數據,然後使用sqlite和使用表來存儲數據 3.爲了只存儲小數據使用sharedpreference和聲明allowBackup = true在清單中的應用程序標籤