使多个任务更加优化

时间:2017-10-04 07:52:13

标签: c

我有一个简单的函数可以记住几个以前的值。有人可以帮助我使这个功能更紧凑。更确切地说,我希望以更优化的方式完成所有任务。如果有人帮助我,我将非常感激。

 xy snake_body(int x,int y)
    {
     xy body;

       body.x = x_loop_16;
       body.y = y_loop_16;

       x_loop_16 = x_loop_15;
       y_loop_16 = y_loop_15;

       x_loop_15 = x_loop_14;
       y_loop_15 = y_loop_14;

       x_loop_14 = x_loop_13;
       y_loop_14 = y_loop_13;

       x_loop_13 = x_loop_12;
       y_loop_13 = y_loop_12;

       x_loop_12 = x_loop_11;
       y_loop_12 = y_loop_11;

       x_loop_11 = x_loop_10;
       y_loop_11 = y_loop_10;

       x_loop_10 = x_loop_9;
       y_loop_10 = y_loop_9;

       x_loop_9 = x_loop_8;
       y_loop_9 = y_loop_8;

       x_loop_8 = x_loop_7;
       y_loop_8 = y_loop_7;

       x_loop_7 = x_loop_6;
       y_loop_7 = y_loop_6;

       x_loop_6 = x_loop_5;
       y_loop_6 = y_loop_5;

       x_loop_5 = x_loop_4;
       y_loop_5 = y_loop_4;

       x_loop_4 = x_loop_3;
       y_loop_4 = y_loop_3;

       x_loop_3 = x_loop_2;
       y_loop_3 = y_loop_2;

       x_loop_2 = x_loop_1;
       y_loop_2 = y_loop_1;

       x_loop_1 = x;
       y_loop_1 = y;

        return body;

    }

" XY"是一个结构变量。我用它来存储来自" x"的数据。和" y",还有来自" snake_body"的多次回复功能。我希望我足够具体,如果有任何问题,我会尽快回复。谢谢。

1 个答案:

答案 0 :(得分:0)

不使用2x16变量,只需使用两个数组并循环遍历它。

你大概想要这个:

int x_loop[16];
int y_loop[16];

xy snake_body(int x, int y)
{
  xy body;

  body.x = x_loop]15];
  body.y = y_loop[15];

  for (int i = 15; i > 0; i--)
  {
    x_loop[i] = x_loop[i - 1];
    y_loop[i] = y_loop[i - 1];
  }

  x_loop[0] = x;
  y_loop[0] = y;

  return body;
}

但是有更优雅的方法来解决这个问题,特别是使用循环缓冲区。