微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何以替代入门方式编写此处理代码?

如何解决如何以替代入门方式编写此处理代码?

如何以替代(入门)方式编写代码(如下)?我不希望使用createShape,setFill和addChild。相反,还有其他方法可以执行相同的操作吗?

grid = createShape(GROUP)
for i in range(C*R):
    self.cell = createShape(RECT,(i%C)*S,(i//C)*S,S,S)
    self.cell.setFill(colors[i] if i in filled else 210)
    grid.addChild(self.cell)

解决方法

假设您尝试创建一个矩形网格:

final int _numRows = 5;
final int _numCols = 7;

int l = 20;
int t = 20;
int w = 90;
int h = 60;
int hg = 10;
int vg = 10;
int left;
int top;
 
 void rectGrid() {
  for(int k = 0; k < _numRows; k++) {
   for(int j = 0; j < _numCols; j++){
   left = l + j*(w+vg);
   top = t + k*(h+hg);
   stroke(255);
   strokeWeight(2);
   fill(118);
   rect( left,top,w,h);
   }
  }
 }
 
 
void setup() { 
  size(800,500);
  background(0,245);
  rectGrid();
}

void draw() {
}

,

添加颜色阵列:

/*
 Adds color array to rectangle grid.
*/

final int _numRows = 5;
final int _numCols = 7;

int l = 20;
int t = 20;
int w = 90;
int h = 60;
int hg = 10;
int vg = 10;
int left;
int top;
int count = 0;
color[] c;

 void colorArray(){
   for(int x=0; x< _numRows*_numCols; x++){
     c[x] = color(random(255),random(255),random(255))
   }
 }  
 
 void rectGrid() {
  for(int k = 0; k < _numRows; k++) {
   for(int j = 0; j < _numCols; j++){
   left = l + j*(w+vg);
   top = t + k*(h+hg);
   stroke(255);
   strokeWeight(2);
   fill(c[count]);
   rect( left,h);
   count++;
   }
  }
 }
 
void setup() { 
  size(800,245);
  c = new color[_numCols*_numRows];
  colorArray();
  // Make sure the color array is filled first
  rectGrid();
}

void draw() {
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。