处理:如何为我的2D阵列以不同颜色绘制正方形?

问题描述:

我正在尝试为处理二维数组的炸弹人制作游戏板。 (最终版本将有颜色或位图和每个块类型的属性,并且将确定的行走空间,该播放器具有。)处理:如何为我的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)

它不会使一吨的感觉你存储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'的值? –