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 相关文章推荐
JavaScript加密解密7种方法总结分析
Oct 07 Javascript
javascript ajax 仿百度分页函数
Oct 29 Javascript
js 获取元素在页面上的偏移量的方法汇总
Apr 13 Javascript
jQuery 监控键盘一段时间没输入
Apr 22 Javascript
JS组件Bootstrap实现弹出框效果代码
Apr 26 Javascript
关于JavaScript和jQuery的类型判断详解
Oct 08 Javascript
Angularjs之filter过滤器(推荐)
Nov 27 Javascript
vue中如何动态绑定图片,vue中通过data返回图片路径的方法
Feb 07 Javascript
vue props传值失败 输出undefined的解决方法
Sep 11 Javascript
react中Suspense的使用详解
Sep 01 Javascript
node创建Vue项目步骤详解
Mar 06 Javascript
原生js实现ajax请求和JSONP跨域请求操作示例
Mar 14 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&amp;&amp;mysql)四
2006/10/09 PHP
PHP开发制作一个简单的活动日程表Calendar
2016/06/20 PHP
老生常谈php中传统验证与thinkphp框架(必看篇)
2017/06/10 PHP
php依赖注入知识点详解
2019/09/23 PHP
php7 图形用户界面GUI 开发示例
2020/02/22 PHP
查看图片(前进后退)功能实现js代码
2013/04/24 Javascript
JQuery for与each性能比较分析
2013/05/14 Javascript
JavaScript中使用ActiveXObject操作本地文件夹的方法
2014/03/28 Javascript
javascript中的正则表达式使用详解
2015/08/30 Javascript
js中字符串编码函数escape()、encodeURI()、encodeURIComponent()区别详解
2016/04/01 Javascript
jQuery使用方法
2017/02/04 Javascript
用纯Node.JS弹出Windows系统消息提示框实例(MessageBox)
2017/05/17 Javascript
详解在express站点中使用ejs模板引擎
2017/09/21 Javascript
让Vue响应Map或Set的变化操作
2020/11/11 Javascript
[01:03:18]DOTA2-DPC中国联赛 正赛 RNG vs Dynasty BO3 第一场 1月29日
2021/03/11 DOTA
python调用机器喇叭发出蜂鸣声(Beep)的方法
2015/03/23 Python
编写Python爬虫抓取暴走漫画上gif图片的实例分享
2016/04/20 Python
Python实现字符串匹配算法代码示例
2017/12/05 Python
PyCharm配置mongo插件的方法
2018/11/30 Python
对Python 两大环境管理神器 pyenv 和 virtualenv详解
2018/12/31 Python
python中yield的用法详解——最简单,最清晰的解释
2019/04/04 Python
python生成特定分布数的实例
2019/12/05 Python
python ubplot使用方法解析
2020/01/10 Python
Python 文件数据读写的具体实现
2020/01/24 Python
从一次项目重构说起CSS3自定义变量在项目的使用方法
2021/03/01 HTML / CSS
为你的html5网页添加音效示例
2014/04/03 HTML / CSS
个人实用的自我评价范文
2013/11/23 职场文书
自我评价怎么写好呢?
2013/12/05 职场文书
创业资金计划书
2014/02/06 职场文书
优秀毕业生的求职信
2014/07/21 职场文书
大学生迟到检讨书500字
2014/10/17 职场文书
大学学习委员竞选稿
2015/11/20 职场文书
详解CocosCreator消息分发机制
2021/04/16 Javascript
PyTorch dropout设置训练和测试模式的实现
2021/05/27 Python
vue3使用vuedraggable实现拖拽功能
2022/04/06 Vue.js
Python的property属性详细讲解
2022/04/11 Python