首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何让这段JS代码变干?While循环

如何让这段JS代码变干?While循环
EN

Stack Overflow用户
提问于 2016-04-02 04:43:13
回答 2查看 107关注 0票数 0

这是我的JS代码。任务是创建数独网格(9)。我已经做到了,但我的代码显然还不够干练。我尝试了很多方法,但最终都没有成功。也许有人可以帮我把这170行代码转换成更“专业”的东西。提前感谢!

代码语言:javascript
复制
var canvas;
canvas = openGraphics();

var x;
var y;
var gap;
var count;
x = 20;
y = 20;
gap = 25;
count = 0;

while(count < 9) {
    canvas.setStroke(1);
    canvas.drawRect(x, y, gap, gap);    
    count++;
    x = 20 + gap * count;
    canvas.paint();
}

count=0;
x = 20;
y = 45;

while(count < 9) {
    canvas.setStroke(1);
    canvas.drawRect(x, y, gap, gap);    
    count++;
    x = 20 + gap * count;
    canvas.paint();
}

count=0;
x = 20;
y = 70;

while(count < 9) {
    canvas.setStroke(1);
    canvas.drawRect(x, y, gap, gap);    
    count++;
    x = 20 + gap * count;
    canvas.paint();
}

count=0;
x = 20;
y = 95;

while(count < 9) {
    canvas.setStroke(1);
    canvas.drawRect(x, y, gap, gap);    
    count++;
    x = 20 + gap * count;
    canvas.paint();
}

count=0;
x = 20;
y = 70;

while(count < 9) {
    canvas.setStroke(1);
    canvas.drawRect(x, y, gap, gap);    
    count++;
    x = 20 + gap * count;
    canvas.paint();
}

count=0;
x = 20;
y = 95;

while(count < 9) {
    canvas.setStroke(1);
    canvas.drawRect(x, y, gap, gap);    
    count++;
    x = 20 + gap * count;
    canvas.paint();
}

count=0;
x = 20;
y = 120;

while(count < 9) {
    canvas.setStroke(1);
    canvas.drawRect(x, y, gap, gap);    
    count++;
    x = 20 + gap * count;
    canvas.paint();
}

count=0;
x = 20;
y = 145;

while(count < 9) {
    canvas.setStroke(1);
    canvas.drawRect(x, y, gap, gap);    
    count++;
    x = 20 + gap * count;
    canvas.paint();
}

count=0;
x = 20;
y = 170;

while(count < 9) {
    canvas.setStroke(1);
    canvas.drawRect(x, y, gap, gap);    
    count++;
    x = 20 + gap * count;
    canvas.paint();
}

count=0;
x = 20;
y = 195;

while(count < 9) {
    canvas.setStroke(1);
    canvas.drawRect(x, y, gap, gap);    
    count++;
    x = 20 + gap * count;
    canvas.paint();
}

count=0;
x = 20;
y = 220;

while(count < 9) {
    canvas.setStroke(1);
    canvas.drawRect(x, y, gap, gap);    
    count++;
    x = 20 + gap * count;
    canvas.paint();
}

count=0;
x = 20;
y = 20;
gap = 75;

while(count < 3) {
    canvas.setStroke(3);
    canvas.drawRect(x, y, gap, gap);    
    count++;
    x = 20 + gap * count;
    canvas.paint();
}

count=0;
x = 20;
y = 95;
gap = 75;

while(count < 3) {
    canvas.setStroke(3);
    canvas.drawRect(x, y, gap, gap);    
    count++;
    x = 20 + gap * count;
    canvas.paint();
}

count=0;
x = 20;
y = 170;
gap = 75;

while(count < 3) {
    canvas.setStroke(3);
    canvas.drawRect(x, y, gap, gap);    
    count++;
    x = 20 + gap * count;
    canvas.paint();
} 
EN

回答 2

Stack Overflow用户

发布于 2016-04-02 04:45:13

代码语言:javascript
复制
function whileCount9(){
    while(count < 9) {
        canvas.setStroke(1);
        canvas.drawRect(x, y, gap, gap);    
        count++;
        x = 20 + gap * count;
        canvas.paint();
    }
}

//use whileCount9(); anywhere you would normally place the whole while loop.

我也注意到你得了3分,所以...

代码语言:javascript
复制
function whileCountLessThan(num){
    while(count < num) {
        canvas.setStroke(1);
        canvas.drawRect(x, y, gap, gap);    
        count++;
        x = 20 + gap * count;
        canvas.paint();
    }
}

我们喜欢whileCountLessThan(3);

票数 0
EN

Stack Overflow用户

发布于 2016-04-02 04:58:03

更简短,更有表现力:

代码语言:javascript
复制
var canvas;
canvas = openGraphics();

var boards = [
  { x: 20, y: 20, gap: 25, num: 9 },
  { x: 20, y: 45, gap: 25, num: 9 },
  { x: 20, y: 70, gap: 25, num: 9 },
  { x: 20, y: 95, gap: 25, num: 9 },
  { x: 20, y: 70, gap: 25, num: 9 },
  { x: 20, y: 95, gap: 25, num: 9 },
  { x: 20, y: 120, gap: 25, num: 9 },
  { x: 20, y: 145, gap: 25, num: 9 },
  { x: 20, y: 170, gap: 25, num: 9 },
  { x: 20, y: 195, gap: 25, num: 9 },

  { x: 20, y: 20, gap: 75, num: 3 },
  { x: 20, y: 95, gap: 75, num: 3 },
  { x: 20, y: 170, gap: 75, num: 3 }
]

function boardCreator(obj){
  var count = 0;
  while(count < obj.num) {
    canvas.setStroke(1);
    canvas.drawRect(obj.x, obj.y, obj.gap, obj.gap);    
    count++;
    obj.x = 20 + obj.gap * count;
    canvas.paint();
  }
}

for (i = 0; i < boards.length; i++) {
  boardCreator(boards[i])
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36365532

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档