在游戏中用javascript反转数组 else如果(po==true){ snake_数组。reverse(); var i=0; var c=snake_数组[i]; //油漆头 油漆头(c.x,c.y); 对于(i=1;isnake_数组[i-1].y){ d=“向上”; } 否则,如果(snake_array[i].y..|.|.

在游戏中用javascript反转数组 else如果(po==true){ snake_数组。reverse(); var i=0; var c=snake_数组[i]; //油漆头 油漆头(c.x,c.y); 对于(i=1;isnake_数组[i-1].y){ d=“向上”; } 否则,如果(snake_array[i].y..|.|.,javascript,jquery,arrays,inverse,Javascript,Jquery,Arrays,Inverse,你的新方向是基于尾部而不是头部。d是在循环的每次迭代中设置的,这意味着唯一重要的是最后一次。因此,由于在示例中你的尾部朝下,d被设置为向下 您需要在反转之前检查尾部,然后反转d,或者检查头部而不是尾部 假设蛇的长度至少为2,在循环之外执行以下操作: x <-food ^ <-head v <-tail v <-tail | |

你的新方向是基于尾部而不是头部。
d
是在循环的每次迭代中设置的,这意味着唯一重要的是最后一次。因此,由于在示例中你的尾部朝下,
d
被设置为向下

您需要在反转之前检查尾部,然后反转
d
,或者检查头部而不是尾部

假设蛇的长度至少为2,在循环之外执行以下操作:

      x  <-food
      ^  <-head            v  <-tail                v <-tail
      |                    |                        | 
      |   >-becomes->      |    >-instead of->      |
>.....|             .......|                  <.....|
^                   |                         ^ 
|_tail              V  <-head                 |_head  

if(snake_array[0].x这里的问题是,你如何确定头部的方向?尾巴画在哪里?根据你的答案,这可能是由于不同的问题。在我看来,知道正确的方向(d)对于尾部,您不仅需要存储蛇的当前段的所有坐标,还需要存储最后一个被占用和现在被释放的位置。您是否也将其保存在数组中?如果是这样,则.reverse()函数会给你一个错误的结果,因为它不会把头放在尾巴的位置,而是放在尾巴前面的点,也就是尾巴在前一回合占据的点


另一件可能会失败的事情是你的更新机制。可能在反转之后,会有一个更新,使头部自动前进一个空间(但方向错误)?同样,我们需要更多地了解您的代码。

绘制主体,在做一个反向操作后,不要解决它sergio.我尝试了您所说的,但没有解决。也许您可以告诉我您真正的意思,先生。@vaizaren我已经告诉您我真正的意思。没有完整的代码,这是我能为您做的最好的事情。相同的结果,先生……对不起
      x  <-food
      ^  <-head            v  <-tail                v <-tail
      |                    |                        | 
      |   >-becomes->      |    >-instead of->      |
>.....|             .......|                  <.....|
^                   |                         ^ 
|_tail              V  <-head                 |_head  
if(snake_array[0].x<snake_array[1].x){
    d="left";  // left or right depending on how your coordinate system works
} ...