javascript sudoku 数独智力游戏生成代码


Posted in Javascript onMarch 27, 2010
<p><input value="Get New SuDoKu" type="button" onclick="onLoadTable()" id="refreshButton" /></p> 
<table border="1" style="border-color: Red;" id="mainTable"> 
<tbody> 
</tbody> 
</table> 
<script type="text/javascript" language="javascript">// <![CDATA[ 
var sudokuArray = [[],[],[],[],[],[],[],[],[],[]]; 
function onLoadTable() 
{ 
do 
{ 
sudokuArray = getNewArray(); 
sudokuArray = getSudokuArray(sudokuArray); 
} 
while(!checkArray(sudokuArray)) 
//document.getElementById("result").innerHTML=checkArray(sudokuArray); 
var table = document.getElementById("mainTable"); 
table.removeChild(table.firstChild); 
for(var i=0;i<9;i++) 
{ 
table.insertRow(i); 
for(var j=0;j<9;j++) 
{ 
     table.rows[i].insertCell(j); 
     table.rows[i].cells[j].innerHTML = sudokuArray[i][j];//Math.round(Math.random()*8+1); 
setStyle(i,j,table.rows[i].cells[j]); 
} 
} 
} 
function getSudokuArray(filledArray) 
{ 
var failed = false; 
for(var i=0;i<9;i++) 
{ 
        for(var j=0;j<9;j++) 
        { 
         var tempArray = getAvaildableArray(i, j, filledArray); 
         if(tempArray.length > 0) 
         { 
         filledArray[i][j] = tempArray[Math.round(Math.random()*(tempArray.length-1))]; 
         } 
         else 
         { 
         //window.location.reload(); 
         } 
        } 
    } 
    return filledArray; 
} 
function checkArray(array) 
{ 
for(var i=0;i<9;i++) 
{ 
        for(var j=0;j<9;j++) 
        { 
         if(array[i][j] == undefined) 
         { 
         return false; 
         } 
        } 
} 
return true; 
} 
function getAvaildableArray(rowIndex, cellIndex, array) 
{ 
var availdableArray = [1,2,3,4,5,6,7,8,9]; 
for(var n=0;n<9;n++) 
{ 
if(!isNaN(array[rowIndex][n]) && array[rowIndex][n] != undefined) 
{ 
availdableArray[array[rowIndex][n]-1] = NaN; 
} 
if(!isNaN(array[n][cellIndex]) && array[n][cellIndex] != undefined) 
{ 
availdableArray[array[n][cellIndex]-1] = NaN; 
} 
} 
var rowStartIndex = Math.floor(rowIndex/3); 
var cellStartIndex = Math.floor(cellIndex/3); 
for(var x=rowStartIndex*3;x<rowStartIndex+3;x++) 
{ 
for(var y=cellStartIndex*3;y<cellStartIndex+3;y++) 
{ 
if(!isNaN(array[x][y]) || array[x][y] != undefined) 
{ 
availdableArray[array[x][y]-1] = NaN; 
} 
} 
} 
var returnArray = []; 
for(var m=0;m<9;m++) 
{ 
if(!isNaN(availdableArray[m])) 
{ 
returnArray.push(availdableArray[m]); 
} 
} 
return returnArray; 
} 
function getNewArray() 
{ 
return [[],[],[],[],[],[],[],[],[],[]]; 
} 
function setStyle(rowIndex,cellIndex,cell) 
{ 
cell.height="20"; 
cell.width="20"; 
if(cellIndex%3==2) 
{ 
     cell.style.borderRightColor="red"; 
} 
if(cellIndex%3==0) 
{ 
     cell.style.borderLeftColor="red"; 
} 
if(rowIndex%3==2) 
{ 
     cell.style.borderBottomColor="red"; 
} 
if(rowIndex%3==0) 
{ 
     cell.style.borderTopColor="red"; 
} 
} 
// ]]></script>
Javascript 相关文章推荐
EasyUi tabs的高度与宽度根据IE窗口的变化自适应代码
Oct 26 Javascript
UI Events 用户界面事件
Jun 27 Javascript
js获取键盘按键响应事件(兼容各浏览器)
May 16 Javascript
JS中prototype关键字的功能介绍及使用示例
Jul 21 Javascript
JavaScript实现的使用键盘控制人物走动实例
Aug 27 Javascript
JavaScript中的单引号和双引号报错的解决方法
Sep 01 Javascript
js获取表格的行数和列数的方法
Oct 23 Javascript
基于jQuery实现交互体验社会化分享代码附源码下载
Jan 04 Javascript
纯js模仿windows系统日历
Feb 04 Javascript
微信小程序如何使用globalData的方法
Jun 06 Javascript
关于ckeditor在bootstrap中modal中弹框无法输入的解决方法
Sep 11 Javascript
ant design中upload组件上传大文件,显示进度条进度的实例
Oct 29 Javascript
Javascript 函数中的参数使用分析
Mar 27 #Javascript
js几个验证函数代码
Mar 25 #Javascript
Firefox下提示illegal character并出现乱码的原因
Mar 25 #Javascript
JavaScript setTimeout和setInterval的使用方法 说明
Mar 25 #Javascript
JavaScript 学习初步 入门教程
Mar 25 #Javascript
ext 列表页面关于多行查询的办法
Mar 25 #Javascript
JS学习之一个简易的日历控件
Mar 24 #Javascript
You might like
php创建多级目录代码
2008/06/05 PHP
phpinfo 系统查看参数函数代码
2009/06/05 PHP
Symfony2学习笔记之插件格式分析
2016/03/17 PHP
PHP简单判断iPhone、iPad、Android及PC设备的方法
2016/10/11 PHP
PHP+RabbitMQ实现消息队列的完整代码
2019/03/20 PHP
基于JQuery实现CheckBox全选全不选
2011/06/27 Javascript
javascript实现的弹出层背景置灰-模拟(easyui dialog)
2013/12/27 Javascript
JS实现带缓冲效果打开、关闭、移动一个层的方法
2015/05/09 Javascript
jQuery动画效果相关方法实例分析
2015/12/31 Javascript
简单介绍jsonp 使用小结
2016/01/27 Javascript
AngularJS基础 ng-include 指令简单示例
2016/08/01 Javascript
解决拦截器对ajax请求的拦截实例详解
2016/12/21 Javascript
Angularjs实现分页和分页算法的示例代码
2016/12/23 Javascript
详解nodeJS之二进制buffer对象
2017/06/03 NodeJs
JS中使用cavas截图网页并解决跨域及模糊问题
2018/11/13 Javascript
使用vue-router切换页面时,获取上一页url以及当前页面url的方法
2019/05/06 Javascript
Layui表格行工具事件与数据回填方法
2019/09/13 Javascript
js实现列表向上无限滚动
2020/01/13 Javascript
[53:15]2018DOTA2亚洲邀请赛3月29日 小组赛A组 LGD VS TNC
2018/03/30 DOTA
Python抓取淘宝下拉框关键词的方法
2015/07/08 Python
python机器学习实战之最近邻kNN分类器
2017/12/20 Python
Python Web编程之WSGI协议简介
2018/07/18 Python
pandas把所有大于0的数设置为1的方法
2019/01/26 Python
python类的实例化问题解决
2019/08/31 Python
pytorch之ImageFolder使用详解
2020/01/06 Python
django 链接多个数据库 并使用原生sql实现
2020/03/28 Python
Gap工厂店:Gap Factory
2017/11/02 全球购物
美国在线和移动免费会员制批发零售商:Boxed(移动端的Costco)
2020/01/02 全球购物
求职推荐信范文
2013/12/01 职场文书
活动总结结尾怎么写
2014/08/30 职场文书
2014审计局领导班子民主生活会对照检查材料思想汇报
2014/09/20 职场文书
司法局群众路线教育实践活动开展情况总结
2014/10/25 职场文书
人工作失职检讨书
2015/05/05 职场文书
Python实现PIL图像处理库绘制国际象棋棋盘
2021/07/16 Python
java调用Restful接口的三种方法
2021/08/23 Java/Android
日本动漫十大公认神作:第五现已全网禁播,《死亡笔记》在榜
2022/03/18 日漫