lixiaoc 2022-12-10 23:24 采纳率: 40%
浏览 51
已结题

基于c语言用easyx做的小游戏

基于c语言利用easyx库做一个简单小游戏,在游戏界面中想显示游戏时间
通过函数计算函数运行时间,再用outtextxy函数输出到界面但是时间时钟为0
clock_t start = clock();
clock_t end = clock();
int T = (int)((end-start)/ CLOCKS_PER_SEC);
void interface1() {
    //setbkmode(OPAQUE);
    setcolor(WHITE);
    char str1[10], str2[10], str3[10], str4[10];
    sprintf_s(str1, " %d", player.life);
    sprintf_s(str2, " %d", player.intagla);
    sprintf_s(str3, " %d", enemy->speed);
    settextstyle(30, 0, "宋体");
    outtextxy(444, 100, str1);
    outtextxy(429, 70, "生命");
    outtextxy(429, 140, "积分");
    outtextxy(444, 170, str2);
    outtextxy(390, 210, "小车速度");
    outtextxy(444, 240, str3);
    //clock_t start = clock();
    //clock_t end = (clock() - start) / CLOCKS_PER_SEC;
    //int time = (int)(end);
    sprintf_s(str4, " %d", T);
    outtextxy(390, 280, "游戏时间");
    outtextxy(390, 310, str4);
}
void ends() {    //结束界面
    mciSendString("stop /images/racing.mp3", NULL, 0, NULL);
    cleardevice();//清除窗口
    settextstyle(128, 0, "宋体");
    outtextxy(0, 256, "游戏结束");
    settextstyle(40, 0, "宋体");
    outtextxy(128, 385, "最终得分:");
    outtextxy(128, 450, "游戏时间:");
    char str3[10];
    char str4[10];
    sprintf_s(str3, " %d", player.intagla);
    outtextxy(300, 385, str3);
    sprintf_s(str4, " %d", T);
    outtextxy(300, 450, str4);
}
运行结果及详细报错内容

img

img

想过是sprintf_s函数的问题,和定义的时间T类型问题但是不太明白
麻烦各位有时间能帮我看看,就是想在游戏过程中能看到时间,并且游戏结束页面看到游戏时长
  • 写回答

3条回答 默认 最新

  • 浪客 2022-12-10 23:32
    关注

    T和end的计算放到interface1中的sprintf_s(str4, " %d", T);前面

    clock_t start;//  start = clock(); 放到游戏开始的地方。
    clock_t end;// = clock();
    int T;// = (int)((end-start)/ CLOCKS_PER_SEC);  上面3个需要全局变量。
    void interface1() {
        //setbkmode(OPAQUE);
        setcolor(WHITE);
        char str1[10], str2[10], str3[10], str4[10];
        sprintf_s(str1, " %d", player.life);
        sprintf_s(str2, " %d", player.intagla);
        sprintf_s(str3, " %d", enemy->speed);
        settextstyle(30, 0, "宋体");
        outtextxy(444, 100, str1);
        outtextxy(429, 70, "生命");
        outtextxy(429, 140, "积分");
        outtextxy(444, 170, str2);
        outtextxy(390, 210, "小车速度");
        outtextxy(444, 240, str3);
        //clock_t start = clock();
        //clock_t end = (clock() - start) / CLOCKS_PER_SEC;
        //int time = (int)(end);
        end = clock();//
        T = (int)((end-start)/ CLOCKS_PER_SEC);//
        sprintf_s(str4, " %d", T);
        outtextxy(390, 280, "游戏时间");
        outtextxy(390, 310, str4);
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 12月19日
  • 已采纳回答 12月11日
  • 创建了问题 12月10日

悬赏问题

  • ¥20 找辅导 初学者 想实现一个项目 没有方向
  • ¥15 关于渗漏场的电场分布模拟
  • ¥24 matlab怎么修改仿真初始时间
  • ¥15 两分段线性回归模型分析阈值效应
  • ¥15 前端和后端代码都没报错,但是点登录没反应的?
  • ¥100 需要远程解决QSQLITE问题!
  • ¥15 利用光场表达式画出初始光场强度分布图像等几个问题在这两个图片里
  • ¥15 gozero求手把手教学,400一天
  • ¥15 泥浆冲清水的泥浆分布
  • ¥15 LASSO回归分析筛选关键基因,适合多大样本量?