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的判断分支为例,修正后写法:
剩下p52到p55的四个判断分支,都按同样规则把if(pp == -2){ p51 = plr; }else{ p51 = scr; }==改成=即可。
额外优化建议
你现在单独定义p11到p55共25个独立变量的写法非常冗余,后续熟悉C++语法后可以用二维数组存储地图格子,比如定义string grid[5][5],通过行列下标访问对应格子,不用重复写大量相似代码。
内容的提问来源于stack exchange,提问作者Toby Walter
相关产品推荐
相关产品推荐

