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 相关文章推荐
jquery中this的使用说明
Sep 06 Javascript
js报错 Object doesn't support this property or method的原因分析
Mar 31 Javascript
模仿百度三维地图的js数据分享
May 12 Javascript
jQuery插件开发全解析
Oct 10 Javascript
JQuery给select添加/删除节点的实现代码
Apr 26 Javascript
第五篇Bootstrap 排版
Jun 21 Javascript
JavaScript无阻塞加载和defer、async详解
Feb 26 Javascript
使用JS动态显示文本
Sep 09 Javascript
JavaScript实现封闭区域布尔运算的示例代码
Jun 25 Javascript
vue3修改link标签默认icon无效问题详解
Oct 09 Javascript
ant design vue 表格table 默认勾选几项的操作
Oct 31 Javascript
vue的webcamjs集成方式
Nov 16 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页面执行时间,数据库读写次数,函数调用次数等(THINKphp)
2013/06/03 PHP
解析PHP 使用curl提交json格式数据
2013/06/29 PHP
php中get_object_vars()方法用法实例
2015/02/08 PHP
PHP使用mysql与mysqli连接Mysql数据库用法示例
2016/07/07 PHP
Yii2实现同时搜索多个字段的方法
2016/08/10 PHP
Laravel实现自定义错误输出内容的方法
2016/10/10 PHP
PHP实现数组向任意位置插入,删除,替换数据操作示例
2019/04/05 PHP
jscript之List Excel Color Values
2007/06/13 Javascript
JavaScript 计算图片加载数量的代码
2011/01/01 Javascript
js弹出div并显示遮罩层
2014/02/12 Javascript
JavaScript实现同一页面内两个表单互相传值的方法
2015/08/12 Javascript
IE9+已经不对document.createElement向下兼容的解决方法
2015/09/14 Javascript
jQuery form插件之formDdata参数校验表单及验证后提交
2016/01/23 Javascript
Bootstrap项目实战之子栏目资讯内容
2016/04/25 Javascript
详解jQuery中ajax.load()方法
2017/01/25 Javascript
JavaScript使用闭包模仿块级作用域操作示例
2019/01/21 Javascript
JS实现集合的交集、补集、差集、去重运算示例【ES5与ES6写法】
2019/02/18 Javascript
vue + typescript + video.js实现 流媒体播放 视频监控功能
2019/07/07 Javascript
vue props对象validator自定义函数实例
2019/11/13 Javascript
Python中的条件判断语句基础学习教程
2016/02/07 Python
解决Python中定时任务线程无法自动退出的问题
2019/02/18 Python
Python3多目标赋值及共享引用注意事项
2019/05/27 Python
python挖矿算力测试程序详解
2019/07/03 Python
基于django传递数据到后端的例子
2019/08/16 Python
python中列表的含义及用法
2020/05/26 Python
Python基于traceback模块获取异常信息
2020/07/23 Python
接口的多继承会带来哪些问题
2015/08/17 面试题
酒店实习个人鉴定
2013/12/07 职场文书
幼儿园的门卫岗位职责
2014/04/10 职场文书
2014年勤工助学工作总结
2014/11/24 职场文书
龙门石窟导游词
2015/02/02 职场文书
2016廉洁教育心得体会
2016/01/20 职场文书
2017新年晚会开幕词
2016/03/03 职场文书
利用html+css实现菜单栏缓慢下拉效果的示例代码
2021/03/30 HTML / CSS
深入浅析React中diff算法
2021/05/19 Javascript
「地球外少年少女」BD发售宣传CM公开
2022/03/21 日漫