我使用android cocos2d計算遊戲項目中的分數,在完成第一級後進入下一級,所以我想存儲第一級分數並添加下一級別的分數。我怎麼能在android-cocos2d中存儲這個分數。如何在android中存儲遊戲分數cocos2d
回答
聽起來像你實際要求的是如何存儲應用程序的數據,這在技術上與cocos2d無關,因爲這只是一個2D渲染/圖形引擎。
您可以爲您的應用程序創建一個customer content provider這將爲您提供一個數據庫來存儲您的數據,但是這種方法通常最適合於當您希望其他應用程序能夠訪問您的應用程序數據時。你也可以使用一種更加快速和骯髒的方法,採用SharedPreferences方法。
Android的持久性有很好的描述here
使用的NSKeyedArchiver類來存儲,在這裏你有一個例子:
-------------寫
// get allowed save paths
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
// string for the default path
NSString *documentsDirectory = [paths objectAtIndex:0];
// full path plus filename for save game
NSString *gameStatePath = [documentsDirectory stringByAppendingPathComponent:@"gameState.dat"];
// storage for game state data
NSMutableData *gameData = [NSMutableData data];
// keyed archiver
NSKeyedArchiver *encoder = [[NSKeyedArchiver alloc] initForWritingWithMutableData:gameData];
// encode all variables we want to track
[encoder encodeObject:[player inventoryDict] forKey:@"playerInventoryDict"];
[encoder encodeObject:[player equippedDict] forKey:@"playerEquippedDict"];
[encoder encodeInt:[player initialActionPoints] forKey:@"playerInitialActionPoints"];
[encoder encodeInt:[player actionPoints] forKey:@"playerActionPoints"];
[encoder encodeInt:[player experiencePoints] forKey:@"playerExperiencePoints"];
[encoder encodeInt:[player xpNextLevel] forKey:@"playerXPNextLevel"];
[encoder encodeBool:[player isThinking] forKey:@"playerIsThinking"];
// finish, write and release the encoder
[encoder finishEncoding];
[gameData writeToFile:gameStatePath atomically:YES];
[encoder release];
-----------------從閱讀
// get allowed save paths
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
// string for the default path
NSString *documentsDirectory = [paths objectAtIndex:0];
// full path plus filename for save game
NSString *gameStatePath = [documentsDirectory stringByAppendingPathComponent:@"gameState.dat"];
// storage for game state data
NSMutableData *gameData = [NSMutableData data];
// start the decoder
NSKeyedUnarchiver *decoder = [[NSKeyedUnarchiver alloc] initForReadingWithData:gameData];
// start with player data
PlayerEntity *player = [PlayerEntity player];
// variables from the PlayerEntity Class
player.inventoryDict = (NSDictionary *)[decoder decodeObjectForKey:@"playerInventoryDict"];
player.equippedDict = (NSDictionary *)[decoder decodeObjectForKey:@"playerEquippedDict"];
player.initialActionPoints = [decoder decodeIntForKey:@"playerInitialActionPoints"];
player.actionPoints = [decoder decodeIntForKey:@"playerActionPoints"];
player.experiencePoints = [decoder decodeIntForKey:@"playerExperiencePoints"];
player.xpNextLevel = [decoder decodeIntForKey:@"playerXPNextLevel"];
player.isThinking = [decoder decodeBoolForKey:@"playerIsThinking"];
// release the decoder
[decoder release];
原始代碼
對於簡單處理得分:可以使用靜態變量,如「static int myscore;」並在其上應用一些邏輯,否則使用sqlite來處理分數事件.... !!!!
「http://developer.android.com/training/basics/data-storage/shared-preferences.html」 –
我猜如果你在java中使用cocos2d作爲android端口,那麼在C中的這個答案可能不會立即對你有用。這裏有一些想法。 首先,簡單的方法是創建一個數據庫,您可以讀取和寫入分數數據。這將是任何Android應用程序相同。 有一個cocos2d的Android應用程序,多數民衆贊成了開放源代碼和實現這個..
一個具體的例子可以在這裏找到... https://github.com/chuvidi2003/GidiGames/blob/master/src/com/denvycom/gidigames/PuzzleLayer.java
mDbHelper = new DbAdapter(appcontext);
\t \t mDbHelper.open();
\t \t String labelmoves;
\t \t Cursor ScoreCursor = mDbHelper.fetchPuzzleBest("puzzlemania", GidiGamesActivity.currentpuzzletype,String.valueOf(NUM_ROWS)); // mDbHelper.fetchBestScore("puzzlemania", "");
\t \t if(ScoreCursor.getCount() > 0){
\t \t \t ScoreCursor.moveToFirst();
\t \t \t labelmoves = ScoreCursor.getString(ScoreCursor.getColumnIndex(
\t \t \t \t \t DbAdapter.KEY_GAME_MOVES)) ;
\t \t }
以上簡單提取數據庫中的一些「移動」數據。 也可以使用類似的方法將數據保存到數據庫。 查看下面的鏈接瞭解更多關於android中的數據庫交互的信息 http://developer.android.com/training/basics/data-storage/databases.html
最好。
- 1. 如何保存遊戲數據爲我的iOS的Cocos2D遊戲?
- 2. 使用cocos2d-android的遊戲
- 3. Cocos2d。數字遊戲杆(遊戲手柄)?
- 4. 如何在cocos2d中記錄遊戲iPhone
- 5. 如何在cocos2d中暫停遊戲?
- 6. 如何記錄cocos2d遊戲?
- 7. nextpeer在cocos2d遊戲
- 8. 如何在cocos2d iphone遊戲中保存高分和加載高分
- 9. 在TurnBasedMatch中儲存遊戲數據bytearray
- 10. Flash遊戲數據存儲
- 11. 遊戲數據存儲
- 12. 如何在Android遊戲中存儲關卡?
- 13. 如何在android中存儲Hangman遊戲的字符串?
- 14. 如何整合cocos2d遊戲和遊戲中心
- 15. 如何在cocos2d環境之外爲cocos2d遊戲實現虛擬遊戲杆?
- 16. 在cocos2d保存遊戲狀態
- 17. 如何在Cocos2d遊戲中有效地保存用戶設置
- 18. 如何重置遊戲在cocos2d
- 19. 如何存儲猜謎遊戲的分數?
- 20. 如何在android遊戲中實現高分保存?
- 21. 如何在遊戲中顯示分數?
- 22. cocos2d遊戲開發
- 23. Cocos2d遊戲崩潰
- 24. 在鑰匙串中存儲遊戲狀態和分數
- 25. Cocos2D遊戲教程/遊戲建議
- 26. iPhone Cocos2d遊戲更改爲iPad遊戲
- 27. Cocos2D-X遊戲中的Chartboost
- 28. 如何在android遊戲中添加分數計數器?
- 29. 數據存儲在遊戲對象
- 30. Android存儲益智遊戲的圖像
您是否在談論節省設備中的分數負載? [保存在文件中?] – Jimmar