为什么每次游戏结束界面输出的当前得分与历史最高分总是一样的,好像并没有与记录的历史最高分进行比较

为什么每次游戏结束界面输出的当前得分与历史最高分总是一样的,好像并没有与记录的历史最高分进行比较。

img

img

img

代码功能归根结底不是别人帮自己看或讲解或注释出来的;而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。
提醒:再牛×的老师也无法代替学生自己领悟和上厕所!
单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7466317
  • 这篇博客也不错, 你可以看下用编程给正处于高考考场的小伙伴们加油
  • 除此之外, 这篇博客: C语言习题:输入10个学生5门课的成绩,分别用函数求:①每个学生平均分;②每门课的平均分;③找出所有分数中最高分中的 ①自定函数:每个学生平均分 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:
    int xpj(int a[10][5]){//每个学生平均分;
    	int i,j;
    	for(i=0;i<10;i++){//第i+1个同学
    	double c;	
    	int b=0;
    		for(j=0;j<5;j++){//第i+1个同学的成绩平均分
    	b+=a[i][j];
    	c=b/5.00;}
    	printf("第%d个同学的成绩平均分%0.2f\n",i+1,c);}
    		
    }
    

    举个例子,例如,3X5的成绩矩阵

    –科目成绩ABCDE
    学生112345
    学生223456
    学生334567
    /以上代碼的运算原理:先计算学生1 所有成绩的平均值为:3,然后用相同的
    方法 循环2次求出 另外两个学生 所有成绩成绩平均值。
    
  • 您还可以看一下 徐传林老师的 从无到有构建亿级高性能高并发高可用的亿级微服务秒杀系统课程中的 23、秒杀系统之商家管理员审核以及下架商家功能实现以及效果演示小节, 巩固相关知识点
  • 以下回答来自chatgpt:

    答案:

    这个问题可能涉及到两个方面:一是前端部分的逻辑问题,二是后端部分对于历史最高分的记录问题。

    1. 前端逻辑问题 在前端部分,可能存在一个判断历史最高分与当前得分是否相等的逻辑错误。代码示例如下:
    if (currentScore == highestScore) {
      displayHighestScore(highestScore);
    } else {
      displayCurrentScore(currentScore);
    }
    

    这段代码错误地将历史最高分与当前得分相等的情况与历史最高分大于当前得分的情况混为一谈,导致在两种情况下均输出历史最高分。应该将判断分成两步,分别判断是否存在历史最高分,以及历史最高分是否大于当前得分。修正后的代码示例如下:

    if (highestScore) {
      if (highestScore > currentScore) {
        displayHighestScore(highestScore);
      } else {
        displayCurrentScore(currentScore);
        updateHighestScore(currentScore);
      }
    } else {
      displayCurrentScore(currentScore);
      updateHighestScore(currentScore);
    }
    
    1. 后端历史最高分记录问题

    在后端部分,可能存在历史最高分记录的问题。如果历史最高分是通过一个本地变量来保存,那么在游戏结束后或者浏览器关闭后,这个变量就会被清空,导致历史最高分无法记录。应该将历史最高分保存在数据库或者服务器端,这样才能保证历史最高分记录的准确性和持久性。

    代码示例:

    首先,在服务器端设置一个 API,用于获取历史最高分和更新最高分:

    // GET /api/score
    app.get('/api/score', (req, res) => {
      res.json({ highestScore: highestScore });
    });
    
    // POST /api/score
    app.post('/api/score', (req, res) => {
      const newScore = req.body.score;
      if (newScore > highestScore) {
        highestScore = newScore;
        res.json({ success: true });
      } else {
        res.json({ success: false });
      }
    });
    

    然后,前端通过 AJAX 请求来获取最高分和更新最高分,示例代码如下:

    // 获取历史最高分
    function fetchHighestScore() {
      $.ajax({
        url: '/api/score',
        type: 'GET',
        dataType: 'json',
        success: function(response) {
          displayHighestScore(response.highestScore);
        }
      });
    }
    
    // 更新历史最高分
    function updateHighestScore(newScore) {
      $.ajax({
        url: '/api/score',
        type: 'POST',
        dataType: 'json',
        data: { score: newScore },
        success: function(response) {
          if (response.success) {
            console.log('历史最高分已更新');
          } else {
            console.log('历史最高分未更新');
          }
        }
      });
    }
    

    通过这样的方式,就可以把历史最高分保存在服务器端,从而避免出现本地变量被清空的问题。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^