我有 4 个方向,ID 为1, 2, 3, 4。(北东南西)如果我想左转,我会得到电流Id和负 1。我想我已经找到了这个算法。int currentDirection = 1;
currentDirection = (currentDirection - 1) % 4 + 4;如果当前方向为 1(北)并且我想向左(负)移动,我会得到以下结果:Result: 4所以它正在发挥作用。适用于所有方向。但当我想向右(加)时,我不知道如何获得正确的结果。我已经尝试过这段代码。如果当前方向是1、2或 ,则有效4。3但当当前方向为(南)时,它不起作用int currentDirection = 3;
currentDirection = (currentDirection + 1) % 4;会出现这样的结果。Result: 0
2 回答
繁华开满天机
TA贡献1816条经验 获得超4个赞
右转:currentDirection = currentDirection % 4 + 1
左转:currentDirection = (currentDirection+2) % 4 + 1
拉丁的传说
TA贡献1789条经验 获得超8个赞
简单来说就是这样:currentDirection = (currentDirection % 4) + 1;
更新:
我会按如下方式实现它,因为我个人发现它更具可读性:
右转:
nextDirection = (currentDirection == 4) ? 1 : (currentDirection + 1);
左转:
nextDirection = (currentDirection == 1) ? 4 : (currentDirection - 1);
添加回答
举报
0/150
提交
取消