首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >highscore仅在启动sqlite时刷新

highscore仅在启动sqlite时刷新
EN

Stack Overflow用户
提问于 2014-04-28 08:51:12
回答 1查看 53关注 0票数 0

我有一个用SQLite实现的c++射手的高分系统,但它只有在我重新启动游戏时才会刷新,我想这是因为它只在游戏发布时从最大到最小重新排序。我不知道这是为什么,它似乎确实像它应该记录的所有游戏分数,但我认为它只在发布时订购。我如何才能让它在打印到屏幕之前重新排序。以下是代码

在main.cpp中

case eHIGH_SCORES:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    DrawString( "HIGHSCORES", iScreenWidth * 0.38, iScreenHeight * 0.95);
    DrawString( "PRESS C TO CLOSE", iScreenWidth * 0.32, iScreenHeight * 0.1);

    DatabaseMaker DatabaseMaker("MyDatabase.db");
    DatabaseMaker.CreateDatabase();
    DatabaseMaker.CreateTable("HIGHSCOREST");
    if (scorer<1)
    {
    DatabaseMaker.InsertRecordIntoTable("HIGHSCOREST",scoreArray);
    scorer++;
    for (int i=0; i<10; i++)
    {
        scoreArray[i]=0;
    }
    }
    DatabaseMaker.RetrieveRecordsFromTable("HIGHSCOREST");
    DatabaseMaker.databaseprinter();

然后在Database maker类中,我有

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    DatabaseMaker::DatabaseMaker(std::string HighScoresT)
    {
        this->HighScores = HighScoresT;
        myDatabase = NULL;  
     }


    int DatabaseMaker::Callback(void* notUsed, int numRows, char **data, char **columnName)
    {
        for(int i = 0; i < numRows; i++)
        {
            std::cout << columnName[i] << ": " << data[i] << std::endl;
            holder.push_back(atoi(data[i]));

         } 

    return 0;
}



void DatabaseMaker::databaseprinter()
{

        for (int i = 0; i < 10; i++)
    {
        itoa(holder[i], displayHolder, 10);
        DrawString(displayHolder,   780/2,  700-(50*i));
    }

}

void DatabaseMaker::CreateDatabase()
{
    int errorCode = sqlite3_open(HighScores.c_str(), &myDatabase); 

    if(errorCode == SQLITE_OK)
    {
        std::cout << "Database opened successfully." << std::endl;
    }
    else
    {
        std::cout << "An error has occured." << std::endl;
    }
}

void DatabaseMaker::CreateTable(std::string  HIGHSCOREST)
{

    char* errorMsg = NULL;
    std::string sqlStatement;  

    sqlStatement =  "CREATE TABLE HIGHSCOREST(" \
        "ID  INT," \
        "SCORE    INT);";

    sqlite3_exec(myDatabase, sqlStatement.c_str(), Callback, 0, &errorMsg);

    if(errorMsg != NULL)
    {
        std::cout << "Error message: " << errorMsg << std::endl;
    }
}



void DatabaseMaker::InsertRecordIntoTable(std::string HIGHSCOREST,int (&scoreArray)[10] )
{
    char*errorMsg = NULL;
    std::string sqlStatement;
    int x=5;


    for(int i=0;i<10;i++)
    {
        std::string scorestring;

        scorestring = std::to_string(scoreArray[i]);

        sqlStatement =  "INSERT INTO HIGHSCOREST (ID,SCORE)" \
            "VALUES (1,"+scorestring+");";

        sqlite3_exec(myDatabase, sqlStatement.c_str(), Callback, 0, &errorMsg);

        if(errorMsg != NULL)
        {
            std::cout << "Error message: " << errorMsg << std::endl;
        }
    }

}

void DatabaseMaker::RetrieveRecordsFromTable(std::string HIGHSCOREST)
{

    char* errorMsg = NULL;
    std::string sqlStatement;

    sqlStatement =  "SELECT SCORE from HIGHSCOREST order by SCORE desc;";

    sqlite3_exec(myDatabase, sqlStatement.c_str(), Callback, 0, &errorMsg);

    if(errorMsg != NULL)
    {
        std::cout << "Error message: " << errorMsg << std::endl;
    }

    sqlite3_close(myDatabase); 


}


DatabaseMaker::~DatabaseMaker()
{
}
EN

回答 1

Stack Overflow用户

发布于 2014-04-28 10:07:18

那么,也许可以尝试将sqlite3_close语句从RetrieveRecordsFromTable成员函数中移出,也许是析构函数或分离函数?

因为您在第一次调用数据库后关闭了它的连接(这可能是通过重新运行您的应用程序来修复该问题的原因)。

另外,请考虑将此DatabaseMaker DatabaseMaker("MyDatabase.db");更改为:DatabaseMaker databaseMaker("MyDatabase.db");,否则在相同作用域中定义另一个DatabaseMaker可能会出现问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23336564

复制
相关文章
选项卡
HTML代码 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>选项卡</title> <link rel="stylesheet" href="css/tab.css" /> </head> <body> <div id="tab"> <ul> <li class="select">视频</li
河湾欢儿
2018/09/05
1.5K0
选项卡TabHost
1.布局 1 <TabHost xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 android:id="@+id/tabHost" 4 android:layout_width="match_parent" 5 android:layout_height="match_parent" > 6
欢醉
2018/01/22
1.6K0
选项卡TabHost
Tab选项卡
实现步骤: 实现静态UI效果 用传统的方式实现标签结构和样式 基于数据重构UI效果 将静态的结构和样式重构为基于Vue模板语法的形式 处理事件绑定和js控制逻辑 声明式编程 模板的结构和最终显示的效果基本一致 1.html结构 <div id="app"> <div class="tab"> <!-- tab栏 --> <ul> <li class="acti
梨涡浅笑
2020/12/02
2.2K0
案例选项卡
案例:实现步骤 1. 实现静态UI效果 用传统的方式实现标签结构和样式 2. 基于数据重构UI效果 将静态的结构和样式重构为基于Vue模板语法的形式 处理事件绑定和js控制逻辑 3. 声明式编程
清出于兰
2020/12/01
1.5K0
案例选项卡
js实现选项卡
选项卡就是点击按钮切换到相应内容,其实就是点击按钮把内容通过display(block none)来实现切换的。
wfaceboss
2019/04/08
2.8K0
选项卡(TabHost)使用
使用方式: 从TabActivity中用getTabHost()方法获取TabHost,然后设置标签内容
李小白是一只喵
2020/04/24
1.8K0
Jq实现简单的选项卡功能
下面我们使用Jquery实现简单的选项卡效果,以下为示例代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <style> ul,li{ padding: 0; margin: 0; } .content{ width: 380px; } .content #div0,#div1,#div2{ border:solid 2px pink;
申霖
2019/12/27
7750
Layui Tab 选项卡
layui-tab layui-tab-title layui-tab-content layui-tab-item
用户5760343
2019/10/24
3.3K0
Labview选项卡之实现被选择选项卡工作
有些时候,我们做界面,需要好多个界面切换。如果是同一个 VI 里界面切换,一般都是选项卡了。切换不同选项卡就切换界面了。
Gnep@97
2023/08/16
7701
Labview选项卡之实现被选择选项卡工作
WPF实现选项卡效果(3)——自定义动态添加的AvalonDock选项卡内容
  在前面一篇文章里面,我们实现了AvalonDock选项卡的动态添加,但是对于选项卡里面的内容,我们并没有实现任何有用的功能。   这篇文章里面,我们将实现对选项卡里面的内容和功能实现自定义。 完整系列   ● 第一部分   ● 第二部分   ● 第三部分 在Git中下载工程源码
全栈程序员站长
2022/09/13
1.6K0
WPF实现选项卡效果(3)——自定义动态添加的AvalonDock选项卡内容
小程序 — 选项卡
(2)将用户点击传过来的index值赋给data中改变当前的索引值activeIndex
Ewall
2018/09/30
1.6K0
小程序 — 选项卡
微信小程序----导航栏选项卡(MUI顶部选项卡)
效果图 WXML <import src="../../template/list.wxml"/> <view class="tui-tabbar-content"> <view class="
Rattenking
2021/02/01
1.6K0
微信小程序----导航栏选项卡(MUI顶部选项卡)
Android开发(9) 选项卡的切换
我们想实现的效果是点击切换的选项卡卡部分,主显示区的内容随之改变。那么我们看下页面布局代码
张云飞Vir
2020/03/13
1.6K0
前端|不用JS就能实现的选项卡
在平时浏览网页时,大家经常会使用选项卡来切换页面,在设计网页的过程中,也常用选项卡来整合内容,美化页面效果。简而言之,选项卡就是设置选项的模块,每个选项卡代表一个活动的区域,点击不同的区域,即可展示不同的内容。
算法与编程之美
2020/05/29
1.9K0
前端|不用JS就能实现的选项卡
Tab选项卡切换效果
好了,今天要推荐给大家的这个js动画效果,基本上每个网站都会出现,就是tab选项卡的切换效果。
大M
2021/08/24
3.3K0
Tab选项卡切换效果
如何将来自 Chrome 网络选项卡的请求复制到 Postman?
你有没有想过是否有一种快速的方法将端点调用从你的DevTools 网络选项卡复制到Postman中?
点火三周
2022/04/22
3.6K0
实用tab选项卡切换
itclanCoder
2023/09/14
2610
实用tab选项卡切换
安卓底部选项卡
腾讯QQ有了更新,在自己的手机上更新了一下,试运行了一段时间,被底部的选项卡给深深的迷住了。于是,有了去做做它的原始冲动与欲望,在历经一个早上的琢磨,终于实现了,贴上来,作为给大家的春节祝福吧,在此,小编给大家拜年了,祝大家在新的一年马上有车,马上有房,马上有钱,马上有对象,同时也对浏览我文章的看客表示深深的谢意!
牛老师讲GIS
2018/10/23
1K0
安卓底部选项卡
关于安卓开发选项卡的实现
选项卡(TabHost)方便的在窗口上设置多个标签页,每个标签页相当于获得一个与外部容器相同大小的组件摆放区域 通过这种方式,可以在一个容器中放置多组件。 创建4个java文件并对应layout 创建主java ,代码 1 package lianxi; 2 3 import com.example.jichu_lianxi.R; 4 5 import android.app.TabActivity; 6 import android.content.Intent; 7 import an
听着music睡
2018/05/18
1.1K0
点击加载更多

相似问题

VBA-从工作簿中将特定列复制并过滤到工作表中。

21

在选项卡中显示具有范围的类别?

11

我想在gsheet的特定选项卡中写入数据。

120

将来自Gsheet的两个不同选项卡的数据组合到主Gsheet中

28

jQuery选项卡脚本中的选定选项卡

21
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文