有没有办法让这段代码更短?

时间:2015-10-27 05:00:12

标签: processing

我写了这个程序,并且对这类事情不熟悉,我只能编写非常草率的程序,是否有办法使这个代码更有效/更短,我知道大部分都是多余的,但即使在服用之后在所有不必要的代码中,我仍然觉得我做错了什么。我被要求实际解释代码的作用以及增量和减量的逻辑,每个整数数组提供X值或Y值,这些用于绘制线条,所有这些都是相同的然后,在绘图函数中选择X和Y值,选择特定的X / Y值(如果不是全部),每次屏幕刷新时,增量/减量从这些特定的整数数组中加1 /减1,这扩展了在某些方向上的线条,创造一个可以无限期地重复出现的形状。

int[] myintegerarray = new int[66];

void setup()
{
  background(0,100,0);
  myintegerarray[0] = 0;
  myintegerarray[1] = 0;
  myintegerarray[2] = 0;
  myintegerarray[3] = 0;
  myintegerarray[4] = 900;
  myintegerarray[5] = 0;
  myintegerarray[6] = 900;
  myintegerarray[7] = 0;
  myintegerarray[8] = 450;
  myintegerarray[9] = 450;
  myintegerarray[10] = 450;
  myintegerarray[11] = 450;
  myintegerarray[12] = 450;
  myintegerarray[13] = 450;
  myintegerarray[14] = 450;
  myintegerarray[15] = 450;
myintegerarray[16] = 0;
myintegerarray[17] = 900;
myintegerarray[18] = 0;
myintegerarray[19] = 900;
myintegerarray[20] = 900;
myintegerarray[21] = 900;
myintegerarray[22] = 900;
myintegerarray[23] = 900;
myintegerarray[24] = 450;
myintegerarray[25] = 0;
myintegerarray[26] = 450;
myintegerarray[27] = 0;
myintegerarray[28] = 450;
myintegerarray[29] = 900;
myintegerarray[30] = 450;
myintegerarray[31] = 900;
myintegerarray[32] = 0;
myintegerarray[33] = 450;
myintegerarray[34] = 0;
myintegerarray[35] = 450;
myintegerarray[36] = 900;
myintegerarray[37] = 450;
myintegerarray[38] = 900;
myintegerarray[39] = 450;
myintegerarray[40] = 450;
myintegerarray[41] = 450;
myintegerarray[42] = 450;
myintegerarray[43] = 450;
myintegerarray[44] = 450;
myintegerarray[45] = 225;
myintegerarray[46] = 450;
myintegerarray[47] = 225;
myintegerarray[48] = 450;
myintegerarray[49] = 675;
myintegerarray[50] = 450;
myintegerarray[51] = 675;
myintegerarray[52] = 675;
myintegerarray[53] = 450;
myintegerarray[54] = 675;
myintegerarray[55] = 450;
myintegerarray[56] = 225;
myintegerarray[57] = 225;
myintegerarray[58] = 675;
myintegerarray[59] = 675;
myintegerarray[60] = 675;
myintegerarray[61] = 675;
myintegerarray[62] = 225;
myintegerarray[63] = 225;
myintegerarray[64] = 225;
myintegerarray[65] = 225;

  size (900, 900);
}

void draw() {
  myintegerarray[2] ++;
  myintegerarray[3] ++;
  myintegerarray[6] --;
  myintegerarray[7] ++;
  myintegerarray[9] --;
  myintegerarray[11] ++;
  myintegerarray[12] --;
  myintegerarray[14] ++;
  myintegerarray[18] ++;
  myintegerarray[19] --;
  myintegerarray[22] --;
  myintegerarray[23] --;
  myintegerarray[27] ++;
  myintegerarray[31] --;
  myintegerarray[34] ++;
  myintegerarray[38] --;
  myintegerarray[42] ++;
  myintegerarray[43] ++;
  myintegerarray[40] --;
  myintegerarray[41] --;
  myintegerarray[44] ++;
  myintegerarray[46] --;
  myintegerarray[50] ++;
  myintegerarray[48] --;
  myintegerarray[53] --;
  myintegerarray[55] ++;
  myintegerarray[58] --;
  myintegerarray[59] ++;
  myintegerarray[60] ++;
  myintegerarray[61] --;
  myintegerarray[62] --;
  myintegerarray[63] ++;
 myintegerarray[64] ++;
 myintegerarray[65] --;
  line(myintegerarray[0],myintegerarray[1],myintegerarray[2],myintegerarray[3]);
  line(myintegerarray[4],myintegerarray[5],myintegerarray[6],myintegerarray[7]);
line(myintegerarray[8],myintegerarray[9],myintegerarray[10],myintegerarray[11]);
line(myintegerarray[12],myintegerarray[13],myintegerarray[14],myintegerarray[15]);
line(myintegerarray[16],myintegerarray[17],myintegerarray[18],myintegerarray[19]);
line (myintegerarray[20],myintegerarray[21],myintegerarray[22],myintegerarray[23]);
line(myintegerarray[24],myintegerarray[25],myintegerarray[26],myintegerarray[27]);
line(myintegerarray[28],myintegerarray[29],myintegerarray[30],myintegerarray[31]);
line(myintegerarray[32],myintegerarray[33],myintegerarray[34],myintegerarray[35]);
line(myintegerarray[36],myintegerarray[37],myintegerarray[38],myintegerarray[39]);
line(myintegerarray[40],myintegerarray[41],myintegerarray[42],myintegerarray[43]);
line(myintegerarray[40],myintegerarray[42],myintegerarray[43],myintegerarray[41]);
line(myintegerarray[44],myintegerarray[45],myintegerarray[46],myintegerarray[47]);
line(myintegerarray[48],myintegerarray[49],myintegerarray[50],myintegerarray[51]);
line(myintegerarray[52],myintegerarray[53],myintegerarray[54],myintegerarray[55]);
line(myintegerarray[56],myintegerarray[53],myintegerarray[57],myintegerarray[55]);
line(myintegerarray[58],myintegerarray[59],myintegerarray[60],myintegerarray[61]);
line(myintegerarray[62],myintegerarray[63],myintegerarray[64],myintegerarray[65]);
line(myintegerarray[60],myintegerarray[63],myintegerarray[58],myintegerarray[65]);
line(myintegerarray[63],myintegerarray[60],myintegerarray[65],myintegerarray[58]);
}

1 个答案:

答案 0 :(得分:1)

要缩短数组的初始化,可以使用数组初始值设定项:

 myintegerarray = {0, 0, 0, 0, 900, 0, 900, ...};

要缩短递增和递减逻辑,您需要有一个关于递增和递减的模式。也许数组的前半部分递增,后半部分递减。然后只使用for循环:

for(int i = 0; i < 33; i++){
   myintegerarray[i]++;
}
for(int i = 33; i < 66; i++){
   myintegerarray[i]--;
}

要缩短线逻辑,请设置类似的模式并使用for循环:

for(int i = 0; i < 66; i+=4){
   line(myintegerarray[i],myintegerarray[i+1],myintegerarray[i+2],myintegerarray[i+3]);
}

但实际上,我并不担心让你的代码尽可能短。只要您了解您的代码并且它有效,您就可以了。随着您的进展,您将学习如何自然地缩短代码。最重要的是你可以阅读自己的代码,所以不必过于担心其他任何事情。