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 相关文章推荐
js仿淘宝和百度文库的评分功能
May 15 Javascript
用JS动态改变表单form里的action值属性的两种方法
May 25 Javascript
AngularJs定制样式插入到ueditor中的问题小结
Aug 01 Javascript
JavaScript面向对象编写购物车功能
Aug 19 Javascript
如何在Angular.JS中接收并下载PDF
Nov 26 Javascript
JS实现仿PS的调色板效果完整实例
Dec 21 Javascript
ionic2 tabs使用 Modal底部tab弹出框
Dec 30 Javascript
AngularJS实现的自定义过滤器简单示例
Feb 02 Javascript
Node.js+Express+Mysql 实现增删改查
Apr 03 Javascript
js JSON.stringify()基础详解
Jun 19 Javascript
Vue监听页面刷新和关闭功能
Jun 20 Javascript
JavaScript代码异常监控实现过程详解
Feb 17 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
DedeCMS 核心类TypeLink.class.php摘要笔记
2010/04/07 PHP
php 批量添加多行文本框textarea一行一个
2014/06/03 PHP
windows下配置php5.5开发环境及开发扩展
2014/12/25 PHP
php校验表单检测字段是否为空的方法
2015/03/20 PHP
php仿微信红包分配算法的实现方法
2016/05/13 PHP
PHP设置images目录不充许http访问的方法
2016/11/01 PHP
php实现的统计字数函数定义与使用示例
2017/07/26 PHP
PHP fclose函数用法总结
2019/02/15 PHP
在phpstudy集成环境下的nginx服务器下配置url重写
2019/12/02 PHP
laravel excel 上传文件保存到本地服务器功能
2019/11/14 PHP
PHP使用gearman进行异步的邮件或短信发送操作详解
2020/02/27 PHP
javascript DOM编程实例(智播客学习)
2009/11/23 Javascript
高亮显示web页表格行的javascript代码
2010/11/19 Javascript
制作jquery遮罩层效果导航菜单代码分享
2013/12/25 Javascript
jQuery使用load()方法载入另外一个网页文件内的指定标签内容到div标签的方法
2015/03/25 Javascript
JavaScript获取当前网页最后修改时间的方法
2015/04/03 Javascript
自己动手写的jquery分页控件(非常简单实用)
2015/10/28 Javascript
jQuery实现的倒计时效果实例小结
2016/04/16 Javascript
jQuery基础_入门必看知识点
2016/07/04 Javascript
jquery 判断是否支持Placeholder属性的方法
2017/02/07 Javascript
详解Vue方法与事件
2017/03/09 Javascript
jquery实现下拉菜单的手风琴效果
2017/07/23 jQuery
JavaScript实现H5接金币功能(实例代码)
2021/02/22 Javascript
[01:45]DOTA2众星出演!DSPL刀塔次级职业联赛宣传片
2014/11/21 DOTA
Django实现单用户登录的方法示例
2019/03/28 Python
Django框架封装外部函数示例
2019/05/28 Python
Python3标准库之functools管理函数的工具详解
2020/02/27 Python
英国当代时尚和街头服饰店:18montrose
2018/12/15 全球购物
道路施工安全责任书
2014/07/24 职场文书
产品陈列协议书(标准版)
2014/09/17 职场文书
会议接待欢迎标语
2014/10/08 职场文书
五年级上册复习计划
2015/01/19 职场文书
学雷锋主题班会教案
2015/08/13 职场文书
高三语文教学反思
2016/02/16 职场文书
深度学习小工程练习之垃圾分类详解
2021/04/14 Python
python 提取html文本的方法
2021/05/20 Python