C#二维猜坐标游戏未满足while循环条件就提前退出问题求助
问题根因
while循环的条件逻辑错误,只要猜对X或Y任意一个坐标,循环就会直接终止:
原条件为while (x != ranX && y != ranY)
- 该逻辑代表只有X没猜对 且 Y也没猜对的时候,才继续循环
- 只要某次输入猜对了X或者Y任意一个值,
&&两侧的判断就会有一个不成立,整个循环条件失效,程序直接退出循环。
修复方案
修改循环条件为「两个坐标没有同时猜对就继续循环」即可,有两种等价写法可选:
第一种(可读性更高):
while (!(x == ranX && y == ranY))
第二种(逻辑等价简写):
while (x != ranX || y != ranY)
额外优化提示
当前代码生成随机坐标的逻辑random.Next(1, 4)是左闭右开区间,实际只会生成1、2、3三个值,但输入校验允许用户输入1-4,用户输入4时永远不可能猜对,建议要么把随机数范围改成random.Next(1,5),要么把输入校验的上限改成3。
内容的提问来源于stack exchange,提问作者Evenyon
相关产品推荐
相关产品推荐

