在每个解决方案中暂停执行一段时间,以使动画可见
Pause execution for sometime at each solution to make animation visible
我已经用javascript中的回溯对N-Queen问题进行了编码。
我想做什么
我想在脚本每次到达解决方案时都能看到它的执行情况,并使用动画显示解决方案。
问题出在哪里
代码执行速度如此之快,以至于我看不到任何颜色转换。
这是我的代码的一部分(我想在这里观察一下脚本的执行情况)。有关完整代码,请参阅http://jsfiddle.net/a603smud/1/
function placeQueen(row){
for(var i=0;i<N && row<N;i++){
chess[row][i] = 1;
var temp = row*N+i+1;
//place a Queen (red color)
$('#'+temp).css("background-color","red");
//check if place is safe
if(check(row,i)){
if(row==N-1){
//place is safe and it is last row then
//solution found
//stop execution for a second
//then continue
print();
}
else{
setTimeout(function(){
placeQueen(row+1);
},1000);
}
}
//remove the Queen (backtracking)
$('#'+temp).css("background-color","blue");
chess[row][i]=0;
}
}
红色:女王被放在盒子上蓝色:盒子是空的
如有任何帮助,我们将不胜感激。
感谢@bergi和所有人的宝贵建议我使用一个数组来存储所有结果,然后使用setInterval函数模拟结果。
var solutionArray = [];
// run the algorithm and do
solutionArray.push(tempResult);
// on every step
var counter=0;
var myVar = setInterval(function(){
simulate(solutionArray[counter++]);
if(counter>=92){
clearInterval(myVar);
}
setTimeout(function(){
removeSimulation(solutionArray[counter]);
},600);
}, 1000);
这是完整代码的链接
相关文章:
- Canvas+svg路径动画,在路径中的特定点暂停一段时间,然后继续
- 收集一段时间内的EMG数据.建议JS
- 在一段时间内切换文本
- 如何停止字幕文本一段时间,然后继续
- HTTP服务器在一段时间后停止(Node.js)
- Hammer.js过了一段时间就停止工作了
- Meteor-在一段时间内解锁模板(按日期)
- 画布在一段时间后开始滞后
- JS-在一段时间后水平移动图像
- AJAX 调用在获得响应并成功执行时会冻结浏览器一段时间
- 表单提交在一段时间循环PHP,jquery
- 一段时间后生成回发
- 一段时间后自动点击提交按钮
- 如何每隔一段时间更改我网站的背景颜色
- 一段时间后调用函数,但只调用一次
- 一段时间后使用Javascript加载网页ASP.net
- 萤火虫动画,一段时间后浏览器会变慢
- 在页面加载时禁用 CSS 动画,但每隔一段时间工作一次
- 动画在一段时间后延迟- Easeljs缓存
- 在每个解决方案中暂停执行一段时间,以使动画可见