一个用JS实现的简单的汉诺塔
来源:互联网 发布:linux安装教程 编辑:程序博客网 时间:2024/04/28 18:16
<!doctype html><html><head> <meta charset="UTF-8"> <title>汉诺塔</title> <style type="text/css"> *{margin:0;padding:0;} #bd{position:fixed;top:50%;left:50%;width:800px;height:200px;margin:-100px 0 0 -400px;} .pillar{position:relative;margin-left:200px;float:left;width:4px;height:200px;background:#000;} .pillar:before{position:absolute;bottom:-20px;left:-2px;} .pillar p{position:absolute;bottom:0;left:0;} #A:before{content:'A';} #B:before{content:'B';} #C:before{content:'C';} .disk{display:block;background:#f60;margin-top:1px;height:10px;} </style></head><body><div id="bd"> <div class="pillar" id='A'> <p></p> </div> <div class="pillar" id='B'> <p></p> </div> <div class="pillar" id='C'> <p></p> </div></div><script type="text/javascript"> window.onload=function(){ var $=function(s){return document.getElementById(s)}; var $T='getElementsByTagName'; var A=$('A'), B=$('B'), C=$('C'); //创建圆盘 var createDisk=function(pillar,n){ var box=pillar[$T]('p')[0]; var _html=''; var disk=function(i){ var s=i*20; return '<span class="disk" style="width:'+ s +'px;margin-left:'+ -(s/2-2) +'px;"></span>'; }; for(var i=1;i<=n;i++){ _html+=disk(i); } box.innerHTML=_html; }; //移动圆盘 var move=function(cur,to){ var target=to[$T]('p')[0]; var disk=cur[$T]('span')[0]; target.insertBefore(disk,target.firstChild);//将圆盘移动到顶部 }; //汉诺塔算法 var hanoi=function(n,A,B,C){ var arry=[]; var _hanoi=function(n,A,B,C){ if(n==1){ arry.push(A,C); } else{ _hanoi(n-1,A,C,B); arry.push(A,C); _hanoi(n-1,B,A,C); } }; _hanoi(n,A,B,C); return arry; }; //延时 var delay=function(callback,time){ return setInterval(callback,time); }; var hanoiStart=function(n,time){ createDisk(A,n); var arry=hanoi(n,A,B,C); var i=0,len=arry.length; var T=delay(function(){ move(arry[i],arry[i+1]); i=i+2; if(i>=len){ clearInterval(T); alert('完成!'); } },time); }; //开始汉诺塔(圆盘个数,延时--ms) hanoiStart(5,200); };</script></body></html>
0 0
- 一个用JS实现的简单的汉诺塔
- js+Css实现的一个简单对话框
- JS实现一个简单的抽奖系统
- js实现一个简单的树形菜单
- 使用js实现一个简单的模态框
- 一个简单的node.js实现界面
- 用原生JS实现一个简单的计时器demo
- 用Vue.js实现一个简单的搜索框
- 用原生JS实现一个简单计算的功能实例
- 一个简单的JS
- 一个简单的js实现的隔行变色脚本
- 一个很简单的JS实现的选项卡
- js实现的一个简单的百分比进度条
- 用js写一个简单的进度条
- 用js写一个简单的聊天室
- 用js写一个简单的计算器
- js实现一个简单的锁屏功能
- js实现一个简单的Chrome刷票插件
- C++虚函数表解析
- Bullet库物体碰撞与属性研究
- 线段树 矩形并
- 图像通道与深度的理解
- Jquery柱状报表
- 一个用JS实现的简单的汉诺塔
- 浅析android应用增量升级
- oracle索引
- 【USACO1.2_1】★Milking Cows 挤牛奶
- minSdkVersion、targetSdkVersion、targetApiLevel的区别
- 线段树 体积并——hdu3255
- Python 3 tkinter 相关组件名称变化
- XDR-从文件空间解码整数
- 经典算法--堆排