怎么数据挖掘实现游戏分类数据本地存储

匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。博客分类:
正在做项目中有很多游戏数据要保存,常见的玩家数据这些比较简单的可以用CCUserDefault。它是cocos2d-x用来存取基本数据类型用的。保存为XML文件格式。
主要方法:(和java的map很像,键值对,应该很容易懂的)
setBoolForKey(const char* pKey, bool value);
setIntegerForKey(const char* pKey, int value);
setFloatForKey(const char* pKey, float value);
setDoubleForKey(const char* pKey, double value);
setStringForKey(const char* pKey, const std::string & value);
通过键读取数据,如果键不存在,可以设置一个defaultValue返回自己想要的值。
getBoolForKey(const char* pKey, bool defaultValue = false);
getIntegerForKey(const char* pKey, int defaultValue = 0);
getFloatForKey(const char* pKey, float defaultValue=0.0f);
getDoubleForKey(const char* pKey, double defaultValue=0.0);
std::string
getStringForKey(const char* pKey, const std::string & defaultValue = "");
首次运行程序时可以去生成xml文件CCUserDefault::sharedUserDefault()-&setIntegerForKey("MyGold", 0);
这样就可以生成一个xml文件。不过这种硬代码我不是很喜欢。
每次调用的时候要写很长的代码。可以建议搞几个宏,毕竟CCUserDefault的get,set实在太长了。
#define SaveStringToXML CCUserDefault::sharedUserDefault()-&setStringForKey
#define SaveIntegerToXML CCUserDefault::sharedUserDefault()-&setIntegerForKey
#define SaveBooleanToXML CCUserDefault::sharedUserDefault()-&setBoolForKey
#define LoadStringFromXML CCUserDefault::sharedUserDefault()-&getStringForKey
#define LoadIntegerFromXML CCUserDefault::sharedUserDefault()-&getIntegerForKey
#define LoadBooleanFromXML CCUserDefault::sharedUserDefault()-&getBoolForKey
如何首次生成判断文件是否存在呢
其实可以利用get方法去获取。
if ( !LoadBooleanFromXML("_IS_EXISTED"))
initUserData();
SaveBooleanToXML("_IS_EXISTED", true);
对了,ccUserDefault在0.9.1版本会在安卓平台下crash掉,更新源代码就OK了
CCUserDefault 游戏数据保存和加载
CCUSerDefault是在cocos2d-X框架之中用于存储轻量级的用户数据而准备的,存放在本地的文件之中,是一个xml文件类型。
开发环境为Mac,编译环境为XCode,游戏引擎为Cocos2d-X。
因为刚刚从object-c转过来,真实感受到苹果的封装远远比C++好用多了。单单从#import和 #include去区分就可以看的出来,习惯了#import,看到这个#include
就好纠结啊。再者就是C++的命名空间啊,一开始忘了使用
usingnamespacecocos2d;
结果导致我使用ccuserDefault半天出不来提示,纠结我半天。
首先,先把所需的头文件引入,并且添加命名空间。
#include "MainScene.h"
#include "SimpleAudioEngine.h"
#include &CCData.h&
#include &CCUserDefault.h&
#include &curl.h&
using namespace cocos2d;
using namespace CocosD
using namespace
这个CCUSerDefault可以操作的数据类型有int,double,float,string,bool。有一对set和get方法。这里只是演示string,其他的自己去测试。
bool MainScene::init()
if (!CCLayer::init()) {
return false;
CCUserDefault::sharedUserDefault()-&setStringForKey("userName","西门吹雪");
string userName = CCUserDefault::sharedUserDefault()-&getStringForKey("userName");
CCLOG("*****userName %s",userName.c_str());
CCUserDefault::sharedUserDefault()-&setStringForKey("userName","火云邪神");
CCUserDefault::sharedUserDefault()-&flush();
userName = CCUserDefault::sharedUserDefault()-&getStringForKey("userName");
CCLOG("*****userName %s",userName.c_str());
这里贴出输出结果:
当我现在把set方法注释掉后,依然可以直接从本地的xml文件取出数据,但是只能取出火云邪神的,不能取出西门吹雪。因为火云邪神调用 flush()方法将数据从内存中的栈区取出,写到了本地磁盘。把结果贴图加上:
这里通过 CCUserdefault:: getXMLFilePath()方法取出xml文件的默认地址:
std::string fileName = CCUserDefault::getXMLFilePath();
输出地址:
Cocos2d: fileName
/Users/liyongjian/Library/Application Support/iPhone Simulator/6.1/Applications/A8E-4B34-9CA1-4C/Library/Caches/UserDefault.xml
然后我去这个地址下看了看,发现找不到 UserDefault.xml
这个文件,但是看到了这个
我的存储内容在这个plist文件里面。
浏览: 243854 次
来自: 苏州
可以参考最新的文档:如何在eclipse jee中检出项目并转 ...
谢谢,刚好用上
0.9.1版本 太低了点吧。。。
缺少代码啊key.isAcceptable()时怎么处理的啊
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'请问游戏数据怎么存在内存卡里?_百度知道
请问游戏数据怎么存在内存卡里?
我有更好的答案
游戏数据存储的位置一般不允许改动,允许改动的一般都会在游戏设置里提供修改的。另外目前很多手游其实是网游的形式,不在本地保留存档,也就谈不上存在哪里的问题了。
采纳率:57%
来自团队:
或许你可以设置一下自己系统的主储存位置 爱吾游戏宝盒可以设置数据储存路径 你打开设置就能看见了 望采纳 谢谢
本回答被网友采纳
就这样存啊
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。Flash&MX本地保存数据的方法
Flash程序很多时候也会用到数据操作,比如说载入外部文件就是读取数据。然而Flash保存数据的能力是很有限的。在这里作者给大家介绍了用Flash
MX本地保存外部数据的三种方法。
&&&&谈到计算机操作,往往就不了数据操作,最基本的数据操作就是读取和保存数据。Flash程序很多时候也会用到数据操作,比如说载入外部文件就是读取数据。然而Flash保存数据的能力是很有限的。Flash
5时我们还可以用fscommond来本地保存外部文本文件,到了FlashMX时代,出于对安全因素的考虑,Micromedia取消了这个功能。
  那是不是我们就无法用Flash
MX保存数据了呢?回答是否定的,这里我就系统给大家介绍用Flash
MX本地保存外部数据的三种方法。
方法一:使用MMsave函数
  说明:这是FlashMX专门用来专门用来存盘的函数,出于对安全因素的考虑,Micromedia隐藏了它。这个函数还有另一种用法:
MMSave(loadedMCName,
saveMCName),其作用就是将载入的动画另存到一个新文件中,这个功能可以用来将压缩格式的swf转化成未压缩格式的swf,大家不防试一试。对于Windows98(me)用户来说,默认的存储路径是:Application
Data\Macromedia\Flash
MX\Configuration;对于Windows2000(xp)用户来说,默认的存储路径是:Documents
and Settings\[User]\Application Data\Macromedia\Flash
MX\Configuration。
  用法:MMSave(textString, txtFileName)
  参数:textString  字符串,用来记录要保存的数据内容
     txtFileName 要保存的文本文件名
  示例:在场景中建立一个动态文本(变量名为name)并设置一个按钮(实例名为send_btn)。然后在第一帧加入下面的代码。
send_btn.onRelease = function() {
MMSave(name, "../../../../../../data.txt");
  按“Ctrl+Enter”测试一下,看是否能将输入的用户名保存在C盘的data.txt中。
  点评:这个函数只能用在编辑器的调试播放下,在IE或者播放器中就不能用了。
  方法二:使用SharedObject对象
  对象说明:SharedObject(共享对象)可以看作是小型的数据库,我们可以用它来存储任何Flash支持的数据类型,比如数字、字符串、数组和对象等等。SharedObject按存放位置可分为本地型(存在客户端)和远程型(存在服务器端)。本地型共享对象的扩展名为.sol。对于Windows98(me)用户来说,默认的存储路径是:Application
Data\Macromedia\Flash
Player\服务器域名路径\Flash电影文件名.swf;对于Windows2000(xp)用户来说,默认的存储路径是:Documents
and Settings\[User]\Application Data\Macromedia\Flash
Player\服务器域名路径\Flash电影文件名.swf。
  用法:下面是关于本地型共享对象的部分最主要的方法、属性的介绍。
  1)getLocal(name) 方法
 “name”参数共享对象名,返回共享对象的参照
  2)flush      方法  立即将数据写入共享对象
  3)data      属性  存取共享对象数据的通道
  你只需要掌握以上这些知识就可以用共享对象来存取外部数据了。
  示例:按方法一设置场景,然后输入下面的代码。
var user_so = sharedobject.getlocal("user"); // 建立共享对象的参照
send_btn.onRelease = function() {
with (user_so) {
data.name = //用data属性和flush方法保存用户输入的用户名
  动作说明:在这里我们首先一个,然后。
  点评:本地型共享对象只能将数据保存在默认路径下,而且扩展名只能是.sol。这种方法的作用与设置cookies的作用类似。
  方法三:结合javascript
  还是在Flash
5时,ActionScript就可以与javascript相互通信了。那又该怎样使用javascript本地保存Flash
MX的数据呢?首先我们得用fscommond命令将Flash
MX获得的数据传递到javascript中。
  步骤1:按方法一设置场景,然后在按钮上加入下面代码。
on (release) {
fscommand("send_var", name); //fscommand参数为name变量
  步骤2:以Flash5的格式发布Flash电影和html文件,然后打开html文件,在与之间加入如下代码:
&SCRIPT language=javascript&
var InternetExplorer = navigator.appName.indexOf("Microsoft") != -1;
function myFlash_DoFSCommand(command, args) {
var myFlashObj = InternetExplorer ? myFlash : document.myF
fso = new ActiveXObject("Scripting.FileSystemObject");
tf = fso.CreateTextFile("c:\\testfile.txt", true);
tf.WriteLine(args);&BR&tf.Close();
if (navigator.appName && navigator.appName.indexOf("Microsoft")!= -1 &&
navigator.userAgent.indexOf("Windows") != -1 && navigator.userAgent.indexOf("Windows
3.1") == -1) {
document.write('&SCRIPT LANGUAGE=VBScript\& \n');
document.write('on error resume next \n');
document.write('Sub myFlash_FSCommand(ByVal command, ByVal args)\n');
document.write(' call myFlash_DoFSCommand(command, args)\n');
document.write('end sub\n');&BR&document.write('&/SCRIPT\& \n');
[Ctrl+A 全部选择 然后拷贝]
  你不必知道这些javascript和VbScript语句的具体含义,只要明白我们已经将name变量的值传递给了args就行了。接下来我们还得将args的值写入文本文件,最简单的办法就是使用FileSystemObject(文件系统对象)。添加如上红色部分的代码。关于FileSystemObject的用法,请参考《JScript
语言参考》。
  步骤3:运行html文件,输入一个用户名,点击按钮,用户名就保存在C盘的testfile.txt中了。
  严格来说, 这应该算是FlashMX借用Flash
5语句来实现本地保存数据的方法。
  至于选择哪种方法,视具体情况而定。如果你是开发游戏,适宜用第一、二种方法;如果你不使用FlashMX的新增动作角本,可以试一试最后一种方法。不明之处请参看源文件。
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。他的最新文章
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)

我要回帖

更多关于 游戏数据存储 的文章

 

随机推荐