2015-10-27 90 views
0

我写了这个程序,对于这种事情我是新手,我只能写很潦草的程序,有没有办法让这段代码更有效率/更短,我知道它大部分是多余的,但即使在取出所有不必要的代码,它仍然感觉我做错了什么。我被要求真正解释代码的作用和增量和减量的逻辑,每个整数数组提供一个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

你可以使用'loops'的东西 – Haris

+3

请更新你的问题以描述哪些指数应该在draw()函数中增加或减少的逻辑,并解释代码的实际功能。 – tripleee

回答

1

为了缩短数组的初始化,您可以使用数组初始化:

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

为了缩短递增和递减的逻辑,你需要为正在增加什么有一个模式,递减。也许阵列的前半部分增加,后半部分减少。然后,只需使用循环:

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

为了缩短线路逻辑,建立一个类似的模式,只使用一个循环:

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

不过说真的,我就不需要担心太多的代码越短越好。只要你理解你的代码并且它能工作,你就会很好。您将学习如何随着代码自然而然地缩短代码。最重要的是你可以阅读你自己的代码,所以别太担心别的。