You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++修改变量不生效 玩家位置更新后屏幕无变化求助

问题根源

你的代码存在C++基础语法错误:所有需要执行赋值操作的位置,都错把赋值运算符=写成了相等判断运算符==。
==的作用是比较左右两个值是否相等,返回true/false的判断结果,不会修改左侧变量的存储值,所以不管你怎么输入a/d,玩家位置的边界修正、地图格子的内容更新逻辑从来没有实际生效,所有变量一直保持初始化的状态,屏幕输出自然不会变化。

具体需要修改的位置
  • 边界判断部分的赋值错误
    原错误代码:
    // checking if the number is too large
    if(pp < -2){
      pp == -2;
    }
    
    if(pp > 2){
      pp == 2;
    }
    
    把两处==改成=即可,修正后:
    // checking if the number is too large
    if(pp < -2){
      pp = -2;
    }
    
    if(pp > 2){
      pp = 2;
    }
    
  • 玩家位置更新部分的赋值错误
    你写的所有格子更新逻辑里,p51 == plr、p51 == scr这类语句全是相等判断,没有赋值效果,需要把这部分所有的==都替换成=。以pp=-2的判断分支为例,修正后写法:
    if(pp == -2){
      p51 = plr;
    }else{
      p51 = scr;
    }
    
    剩下p52到p55的四个判断分支,都按同样规则把==改成=即可。
额外优化建议

你现在单独定义p11到p55共25个独立变量的写法非常冗余,后续熟悉C++语法后可以用二维数组存储地图格子,比如定义string grid[5][5],通过行列下标访问对应格子,不用重复写大量相似代码。

内容的提问来源于stack exchange,提问作者Toby Walter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.02 22:16:01