Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/153.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在游戏中存储高分_C++_Cocos2d X - Fatal编程技术网

C++ 如何在游戏中存储高分

C++ 如何在游戏中存储高分,c++,cocos2d-x,C++,Cocos2d X,我正在用cocos2d-x用xcode开发一个游戏。我想在游戏场景中显示highscore。当我运行游戏时,在游戏场景中显示的是分数,而不是highscore,即使分数小于highscore。我认为highscore没有存储。我正在使用以下代码。请帮我解决这个问题 CCUserDefault *def=CCUserDefault::sharedUserDefault(); long int high_score=0; if(score>high_score) { def->

我正在用cocos2d-x用xcode开发一个游戏。我想在游戏场景中显示highscore。当我运行游戏时,在游戏场景中显示的是分数,而不是highscore,即使分数小于highscore。我认为highscore没有存储。我正在使用以下代码。请帮我解决这个问题

CCUserDefault *def=CCUserDefault::sharedUserDefault();
long int high_score=0; 
if(score>high_score)
{
    def->setIntegerForKey(HIGH_SCORE, score);
    //def->flush();
    //high_score=def->getIntegerForKey(HIGH_SCORE);
}
else if(score<high_score)
{
    def->setIntegerForKey(HIGH_SCORE, high_score);
    //def->flush();
    //high_score=def->getIntegerForKey(HIGH_SCORE);
}
high_score=def->getIntegerForKey(HIGH_SCORE);

char s[7];
sprintf(s,"%ld", high_score);
CCLabelTTF *high_label=CCLabelTTF::create(s, "Arial.fnt", 20);
high_label->setPosition(ccp(winwsize - 800, winhsize - 50));
this->addChild(high_label,2);
CCUserDefault*def=CCUserDefault::sharedUserDefault();
长整数高分=0;
如果(分数>高分)
{
def->SETINTEGERWORKEY(高分,分数);
//def->flush();
//高分=定义->获取整数工作(高分);
}
else if(分数集整数工作(高分,高分);
//def->flush();
//高分=定义->获取整数工作(高分);
}
高分=定义->获取整数工作(高分);
chars[7];
sprintf(s,“%ld”,高分);
CCLabelTTF*high_label=CCLabelTTF::create(s,“Arial.fnt”,20);
高_标签->设置位置(ccp(winwsize-800,winhsize-50));
此->添加子项(高_标签,2);

高\u核心
变量设置为全局变量


请注意,如果
scoresetintegerworkey(HIHG_分数,hig_分数);
语句。

那么
hig_分数
总是用0初始化?可以将其设为静态或使用成员而不是局部变量。;)您好,谢谢您的评论,我将high_score变量声明为类成员,并删除仅与变量间接相关的score。您必须将值保存在文件或数据库中。可能创建一个txt文件,保存分数并在启动程序时读取,然后在退出程序时将值保存在文件中。不要将其设置为全局!让它成为班级成员。但不是全局的,这是不好的风格。事实上,如果这里有OOP设计,最好让它成为类成员。。。这就是我定义“全球”的意思。。。意思是,不是本地的stackHello,谢谢你的评论,我声明high_score变量为类成员,并删除score@user3616535:如果要在程序会话之间保存高分,则必须在一个会话结束时将其存储到某个缓冲区(文件或注册表),然后,您需要在第二个会话中将其重新加载回内存。现在它正在工作,我在def声明旁边添加了“high_score=def->getintegerworkey(high_score);”,它工作正常。