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使用指南之selector.js
Jan 10 Javascript
JavaScript 入门基础知识 想学习js的朋友可以参考下
Dec 26 Javascript
javaScript知识点总结(必看篇)
Jun 10 Javascript
AngularJS基于ui-route实现深层路由的方法【路由嵌套】
Dec 14 Javascript
输入框点击时边框变色效果的实现方法
Dec 26 Javascript
使用ionic在首页新闻中应用到的跑马灯效果的实现方法
Feb 13 Javascript
Node.js使用Express创建Web项目详细教程
Mar 31 Javascript
ES6新数据结构Map功能与用法示例
Mar 31 Javascript
jquery在启动页面时,自动加载数据的实例
Jan 22 jQuery
JavaScript引用类型Date常见用法实例分析
Aug 08 Javascript
jQuery常见的遍历DOM操作详解
Sep 05 jQuery
在博客园博文中添加自定义右键菜单的方法详解
Feb 05 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
广播爱好者需要了解的天线知识
2021/03/01 无线电
最简单的PHP程序--记数器
2006/10/09 PHP
vBulletin HACK----关于排版的两个HACK
2006/10/09 PHP
php集成套件服务器xampp安装使用教程(适合第一次玩PHP的新手)
2015/06/03 PHP
PHP执行SQL文件并将SQL文件导入到数据库
2015/09/17 PHP
PHP之header函数详解
2021/03/02 PHP
兼容ie和firefox js关闭代码
2008/12/11 Javascript
FileUpload 控件 禁止手动输入或粘贴的实现代码
2010/04/07 Javascript
Web 前端设计模式--Dom重构 提高显示性能
2010/10/22 Javascript
ie下动态加态js文件的方法
2011/09/13 Javascript
jquery图形密码实现方法
2015/03/11 Javascript
JS实现一个简单的日历
2017/02/22 Javascript
JavaScript进制转换实现方法解析
2020/01/18 Javascript
JS前端广告拦截实现原理解析
2020/02/17 Javascript
Vue-CLI 3 scp2自动部署项目至服务器的方法
2020/07/24 Javascript
Python使用函数默认值实现函数静态变量的方法
2014/08/18 Python
简单的python协同过滤程序实例代码
2018/01/31 Python
遗传算法python版
2018/03/19 Python
对python:print打印时加u的含义详解
2018/12/15 Python
详解Python Qt的窗体开发的基本操作
2019/07/14 Python
Python PyQt5模块实现窗口GUI界面代码实例
2020/05/12 Python
Python手动或自动协程操作方法解析
2020/06/22 Python
完美解决Pycharm中matplotlib画图中文乱码问题
2021/01/11 Python
HTML5和以前HTML4的区别整理
2013/10/20 HTML / CSS
奥地利顶级内衣丝袜品牌英国站:Wolford英国
2016/08/29 全球购物
数字漫画:comiXology
2020/06/13 全球购物
如何做好总经理助理
2013/11/12 职场文书
初中考试作弊检讨书
2014/02/01 职场文书
五水共治捐款倡议书
2014/05/14 职场文书
签约仪式策划方案
2014/06/02 职场文书
院党委组织查摆问题对照检查材料思想汇报2014
2014/10/08 职场文书
年度考核登记表个人总结
2015/03/06 职场文书
导游词之湖北武当山
2019/09/23 职场文书
《鲁滨逊漂流记》之六读后感(4篇)
2019/09/29 职场文书
Python  lambda匿名函数和三元运算符
2022/04/19 Python
ipad隐藏软件app图标方法
2022/04/19 数码科技