2015-10-27 91 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]); 
} 

不過說真的,我就不需要擔心太多的代碼越短越好。只要你理解你的代碼並且它能工作,你就會很好。您將學習如何隨着代碼自然而然地縮短代碼。最重要的是你可以閱讀你自己的代碼,所以別太擔心別的。