2017-05-21 119 views
0

我正在嘗試爲處理二維數組的炸彈人制作遊戲板。 (最終版本將有顏色或位圖和每個塊類型的屬性,並且將確定的行走空間,該播放器具有。)處理:如何爲我的2D陣列以不同顏色繪製正方形?

我想這個遊戲板,其由11行和11列的有遊戲中每種塊類型的不同顏色的正方形。 (Ĵ是固體塊,是步行空間和ķ是一個易碎的塊,因爲你會在陣列中看到)

我已經成功地繪製陣列/板,但現在我需要着色它的權利。

我試圖顏色在一個特定的方式一個塊類型,但它只是顏色的整個董事會。

這是我的代碼現在:

//Amnt of Columns & Rows 
int cols = 11; 
int rows = 11; 

//Block types 
int i; 
int j; 
int k; 


void setup() { 
    size(440, 440); 


//Game Board 
    int [][] field = { 
    {j, j, j, j, j, j, j, j, j, j, j}, 
    {j, i, i, i, i, k, i, i, i, i, j}, 
    {j, i, j, i, j, i, j, i, j, k, j}, 
    {j, k, k, i, i, i, i, i, i, i, j}, 
    {j, i, j, i, j, k, j, i, j, i, j}, 
    {j, i, i, i, i, k, i, i, i, i, j}, 
    {j, k, j, k, j, i, j, k, j, i, j}, 
    {j, i, k, i, i, i, i, i, i, i, j}, 
    {j, i, j, i, j, k, j, i, j, i, j}, 
    {j, i, i, i, i, k, i, i, i, k, j}, 
    {j, j, j, j, j, j, j, j, j, j, j} }; 


    // Draw Board 
    for (i = 0; i < cols; i+=1) { 
    for (j = 0; j < rows; j+=1) { 

     if(field[i][j]==1) 

     if(field[i][j]==i){ 
     fill(0);} 

     if(field[i][j]==k){ 
     fill(200,0,0);} else 
     if(field[i][j]==j){ 
     fill(0,200,0);} 

     rect(i * 40, j * 40, 40, 40); 


    } 
    } 
} 

這是我的結果:

As you can see it's all red (and not only the k blocks)

回答

0

它不會使一噸的感覺你存儲ijk變量在草圖的頂部,然後用它們作爲你的循環變量。你在那些if陳述中究竟做了哪些比較?請進入您的程序debugging的習慣,以便您明確瞭解它在做什麼。

但基本上,你應該使用兩套不同的變量,你應該爲它們命名更有意義的事情。是這樣的:

int spaceType = 0; 
int blockType = 1; 
int bombType = 2; 

然後在你的for循環,你可能需要使用不同的變量,即再有更多的描述性名稱:

for (int cellX = 0; cellY < cols; cellX++) { 
    for (int cellY = 0; cellY < rows; cellY++) { 

最後,您if語句需要檢查電池是否是一種特殊類型。請注意,您目前的if語句不使一噸的感覺:細胞

if(field[i][j]==1) 
    if(field[i][j]==i){ 
    fill(0); 
    } 

這首先檢查是否是1,然後檢查它是否等於i,這是一個循環變量。

此外,請在每個if語句和for循環周圍使用適當的縮進和大括號{}來養成習慣。我猜你想要兩個單獨的if以上的陳述,但由於它沒有大括號,這不是它的工作原理。再次,通過這個加強與調試器(或者甚至只是添加println()報表會幫助你很多這方面的東西出來

+0

對不起,我是個小白 – Unarmed

+0

但作爲一個較短的問題:。 爲什麼這不是工作?(field [i] [j] == j){ 'if(field [i] [j] == k){012,fill(200,0,0);} else if 0);} ' - 我想這會告訴程序爲所有** k **的紅色和** j **的藍色着色。 – Unarmed

+0

@Unarmed你什麼時候設置過'k'的值? –

相關問題