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 相关文章推荐
jscript之Read an Excel Spreadsheet
Jun 13 Javascript
Prototype Number对象 学习
Jul 19 Javascript
JS 遮照层实现代码
Mar 31 Javascript
JQuery datepicker 使用方法
May 20 Javascript
Fastest way to build an HTML string(拼装html字符串的最快方法)
Aug 20 Javascript
快速解决FusionCharts联动的中文乱码问题
Dec 04 Javascript
js中this的用法实例分析
Jan 10 Javascript
javascript实现鼠标点击页面 移动DIV
Dec 02 Javascript
基于jQuery实现滚动切换效果
Dec 02 Javascript
javascript计算渐变颜色的实例
Sep 22 Javascript
JS改变页面颜色源码分享
Feb 24 Javascript
使用use注册Vue全局组件和全局指令的方法
Mar 08 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/01/10 PHP
PHP中创建空文件的代码[file_put_contents vs touch]
2012/01/20 PHP
php查询mssql出现乱码的解决方法
2014/12/29 PHP
javascript call方法使用说明
2010/01/11 Javascript
js中的值类型和引用类型小结 文字说明与实例
2010/12/12 Javascript
使用jquery实现select添加实现后台权限添加的效果
2011/05/28 Javascript
JavaScript高级程序设计 XML、Ajax 学习笔记
2011/09/10 Javascript
js bind 函数 使用闭包保存执行上下文
2011/12/26 Javascript
JS中Iframe之间传值的方法
2013/03/11 Javascript
Nodejs+express+html5 实现拖拽上传
2014/08/08 NodeJs
JavaScript自定义数组排序方法
2015/02/12 Javascript
js兼容火狐显示上传图片预览效果的方法
2015/05/21 Javascript
谈谈JavaScript中function多重理解
2015/08/28 Javascript
跟我学习javascript的异步脚本加载
2015/11/20 Javascript
Angular.Js中ng-include指令的使用与实现
2017/05/07 Javascript
微信小程序修改swiper默认指示器样式的实例代码
2018/07/18 Javascript
jQuery实现的自定义轮播图功能详解
2018/12/28 jQuery
JavaScript中concat复制数组方法浅析
2019/01/20 Javascript
超详细动手搭建一个VuePress 站点及开启PWA与自动部署的方法
2019/01/27 Javascript
es6数值的扩展方法
2019/03/11 Javascript
聊聊Vue 中 title 的动态修改问题
2019/06/11 Javascript
微信小程序 动态修改页面数据及参数传递过程详解
2019/09/27 Javascript
addEventListener()和removeEventListener()追加事件和删除追加事件
2020/12/04 Javascript
[00:15]天涯墨客终极技能展示
2018/08/25 DOTA
Python创建系统目录的方法
2015/03/11 Python
Python实现简单登录验证
2016/04/13 Python
PyQt5每天必学之日历控件QCalendarWidget
2018/04/19 Python
Python3.7 新特性之dataclass装饰器
2019/05/27 Python
Python常用模块os.path之文件及路径操作方法
2019/12/03 Python
解决Django no such table: django_session的问题
2020/04/07 Python
GANT英国官方网上商店:甘特衬衫
2018/02/06 全球购物
英国网上购买肉类网站:Great British Meat
2018/10/17 全球购物
大学生求职自荐信
2013/12/12 职场文书
领导干部培训感言
2014/01/23 职场文书
丑小鸭教学反思
2014/02/03 职场文书
2016年大学自主招生自荐信范文
2015/03/24 职场文书