我一直在尝试使用 Blacktracking 算法解决数独问题,一切都很好,调用了 canvar,我可以看到数字但事情是数字没有移动,即逻辑不执行 current.i === 0;是我得到错误的地方!即使我已经为 num 声明了一个单独的变量,问题也没有得到解决。只有当我删除 .numcurrent == 0而不是它没有显示任何错误但数字仍然没有移动时var cell = [];var stack = [];var sudoku = [2,3,0,9,4,0,6,7,0, 8,0,0,3,2,5,9,1,4, 9,0,0,7,6,0,3,2,0, 1,0,0,0,0,0,7,9,2, 5,0,3,2,1,0,4,8,6, 4,0,0,6,8,0,5,3,1, 7,0,0,1,0,0,0,0,9, 6,5,9,8,7,2,1,4,3, 3,0,0,0,9,0,0,0,7];var current;var number = 1;function setup(){ createCanvas(450,450); var a=0; var b=0; for(var i=0;i<81;i++){ if(a%9==0 && i!=0){ b = b+50; a = 0; } each[i] = new each(a,b,i,sudoku[i]); a = a+50; } current = cell[0];}function draw(){ background(10); for(var i=0;i<81;i++){ each[i].show(); } if(current.num === 0){ //the error is typeerror can't read the property of num if(! sameColumn(current.i,number) && ! sameRow(current.i,number) && ! sameSquare(current.i,number) && number<(10)){ current.num = number; stack.push(current); number = 0; current.each[current.i+1]; } else { if(number > 8){ current.num = 0; current = stack.pop(); number = current.num; current.num = 0; } } } else{ current = each[current+1]; number = 0; } number++;}function each(a,b,i,num){ this.a = a; this.b = b; this.i = i; this.num = num; this.show = function(){ noFill(); stroke(255); rect(this.a,this.b,50,50); textSize(32); text(this.num,a+12,b+40); } }
查看完整描述