绘制颜色与相邻框不同的框时出现问题



我正在编写一个程序,该程序绘制一个框的网格,并且该框的颜色必须与相邻框的颜色不同。

我的代码将当前框的颜色与左侧和顶部的颜色进行比较。如果其中任何一个匹配,它会选择另一个随机数(作为颜色)。对于第一行/列上的块,我将网格的数组索引设置为负数-1,这样就不会匹配。

What I have:

    private function fillArray():void {
        grid = new Array();
        grid[-1] = new Array(-1,-1,-1,-1,-1); //paddles the grid[-1][0 to 4] with -1
        for (var i = 0; i < HEIGHT; i++) {
            grid[i] = new Array();
            grid[i][-1] = -1; // paddles the -1 row with -1
            for (var j = 0; j < WIDTH; j++) {
                while (grid[i-1][j] == grid[i][j] || grid[i][-j] == grid[i][j]) { //while the current box is the same as those to the left or top
                    grid[i][j] = Math.floor(Math.random() * COLORS) + 1; //random number time!
                }
            }
        }
    }

这有一个超时错误,网格都是-1。我不知道我做错了什么。谢谢你的帮助!

这行应该是:

while (grid[i-1][j] == grid[i][j] || grid[i][j-1] == grid[i][j])
编辑:

我真的不明白你为什么要从负索引开始。它只是莫名其妙地让人困惑。我重写了你的脚本,只改变了几个小的事情,你应该能够调整自己(随机颜色只是红色的随机变化,而不是实际随机)。

var randomNum:Number = 0;
var HEIGHT:Number = 10;
var WIDTH:Number = 10;
var grid:Array;
function fillArray():void {
grid = new Array();
for (var i = 0; i < HEIGHT; i++) {
    grid.push(new Array());
    for (var j = 0; j < WIDTH; j++) {
        var prevRow:Number = (i > 0) ? grid[i -1][j]: 0;
        var prevCol:Number = (j > 0) ? grid[i][j -1]: 0;
        if(prevRow != 0 && prevCol != 0){
            randomNum = Math.floor(Math.random() * 256) + 1;
            while(randomNum == prevRow || randomNum == prevCol){
                randomNum = Math.floor(Math.random() * 256) + 1;
            }
            this.graphics.beginFill(randomNum * 0xFF0000,1);
            this.graphics.drawRect(i*10,j*10,10,10);
        }
    }
}
}
fillArray();

相关内容

  • 没有找到相关文章

最新更新