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 相关文章推荐
类之Prototype.js学习
Jun 13 Javascript
IE6背景图片不缓存问题解决方案及图片使用策略多个方法小结
May 14 Javascript
JavaScript中的style.cssText使用教程
Nov 06 Javascript
Javascript 判断两个IP是否在同一网段实例代码
Nov 28 Javascript
js判断PC端与移动端跳转
Dec 24 Javascript
Web前端框架Angular4.0.0 正式版发布
Mar 28 Javascript
JS判断两个对象内容是否相等的方法示例
Apr 10 Javascript
vue初尝试--项目结构(推荐)
Jan 30 Javascript
JS表单传值和URL编码转换
Mar 03 Javascript
Vue 自定义动态组件实例详解
Mar 28 Javascript
vue-cli项目中使用公用的提示弹层tips或加载loading组件实例详解
May 28 Javascript
微信小程序实现拍照和相册选取图片
May 09 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 编程请选择正确的文本编辑软件
2006/12/21 PHP
PHP采集相关教程之一 CURL函数库
2010/02/15 PHP
php Session存储到Redis的方法
2013/11/04 PHP
使用GDB调试PHP代码,解决PHP代码死循环问题
2015/03/02 PHP
在CentOS上搭建LAMP+vsftpd环境的简单指南
2015/08/01 PHP
php获取文章内容第一张图片的方法示例
2017/07/03 PHP
PHP编程实现微信企业向用户付款的方法示例
2017/07/26 PHP
DOM下的节点属性和操作小结
2009/05/14 Javascript
ASP.NET中基于JQUERY的高性能的TreeView补充
2011/02/23 Javascript
jquery插件制作 手风琴Panel效果实现
2012/08/17 Javascript
ExtJS下 Ext.Direct加载和提交过程排错小结
2013/04/02 Javascript
js获取location.href的参数实例代码
2013/08/02 Javascript
Jquery插件之Fancybox丰富的弹出层效果附源码下载
2015/12/02 Javascript
Javascript的表单验证长度
2016/03/16 Javascript
jquery表单验证插件formValidator使用方法
2016/04/01 Javascript
JavaScript实现Base64编码转换
2016/04/23 Javascript
使用plupload自定义参数实现多文件上传
2016/07/19 Javascript
JavaScript中对象的不同创建方法
2016/08/12 Javascript
Thinkjs3新手入门之如何使用静态资源目录
2017/12/06 Javascript
node内置调试方法总结
2018/02/22 Javascript
Node.JS段点续传:Nginx配置文件分段下载功能的实现方法
2018/03/12 Javascript
微信小程序 MinUI组件库系列之badge徽章组件示例
2018/08/20 Javascript
基于element-ui封装可搜索的懒加载tree组件的实现
2020/05/22 Javascript
javascript使用正则表达式实现注册登入校验
2020/09/23 Javascript
[20:39]DOTA2-DPC中国联赛 正赛开幕式 1月18日
2021/03/11 DOTA
使用Python编写Prometheus监控的方法
2018/10/15 Python
python设定并获取socket超时时间的方法
2019/01/12 Python
python实现字符串完美拆分split()的方法
2019/07/16 Python
浅谈opencv自动光学检测、目标分割和检测(连通区域和findContours)
2020/06/04 Python
使用CSS3实现多列布局与多背景的技巧
2016/02/29 HTML / CSS
YSL圣罗兰美妆英国官网:Yves Saint Laurent Beauty UK
2019/08/03 全球购物
开展党的群众路线教育实践活动方案
2014/02/05 职场文书
优秀医生事迹材料
2014/02/12 职场文书
奠基仪式策划方案
2014/05/15 职场文书
2014教师党员自我评议总结
2014/09/19 职场文书
JS新手入门数组处理的实用方法汇总
2021/04/07 Javascript