【问题标题】:reverse an array in javascript in a game在游戏中反转 javascript 中的数组
【发布时间】:2013-03-18 14:00:04
【问题描述】:
else if(po==true){
        snake_array.reverse();
        var i=0;
        var c=snake_array[i];
        //paints head
        paint_head(c.x,c.y);
        for(i=1;i<snake_array.length;i++){
            //paints body
            var c=snake_array[i];
            paint_body(c.x,c.y);
            if(snake_array[i].x<snake_array[i-1].x){
                d="right";
            }
            else if(snake_array[i].x>snake_array[i-1].x){
                d="left";
            }
            else if(snake_array[i].y>snake_array[i-1].y){
                d="up";
            }
            else if(snake_array[i].y<snake_array[i-1].y){
                d="down";
            }
        }
        //poison status false
        po=false;
    }

po 是中毒状态的变量.. 每当蛇吃这种食物时。它应该被反转,回到它之前的轨迹..是的,蛇会恢复,但问题是蛇没有回到它之前的轨迹。但是在它吃毒之前与之前的方向相反......

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

【问题讨论】:

  • 画身体,然后做一个反转
  • 没有解决它塞尔吉奥..

标签: javascript jquery arrays inverse


【解决方案1】:

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

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

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

if(snake_array[0].x<snake_array[1].x){
    d="left";  // left or right depending on how your coordinate system works
} ...

这只会查看头部的正面。您可能需要检查一下蛇的长度是否只有 1,然后反转您当前的方向。

【讨论】:

  • 我试过你说的,但没有解决。也许你能告诉我你真正的意思,先生。
  • @vaizaren 我已经向您展示了我的真正意思。如果没有完整的代码,这是我能为你做的最好的事情。
  • 同样的结果先生...对不起
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2017-09-15
    • 1970-01-01
    • 1970-01-01
    • 2022-06-10
    • 1970-01-01
    • 1970-01-01
    • 2018-05-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多