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 数据类型转换总结笔记
Jan 17 Javascript
jquery实现保存已选用户
Jul 21 Javascript
js判断浏览器是否支持html5
Aug 17 Javascript
jquery 设置style:display的方法
Jan 29 Javascript
JavaScript分秒倒计时器实现方法
Feb 02 Javascript
JS前向后瞻正则表达式定义与用法示例
Dec 27 Javascript
discuz表情的JS提取方法分析
Mar 22 Javascript
AngularJS ng-repeat指令及Ajax的应用实例分析
Jul 06 Javascript
使用JavaScript实现表格编辑器(实例讲解)
Aug 02 Javascript
JS 实现微信扫一扫功能
Sep 14 Javascript
微信小程序实现弹出菜单动画
Jun 21 Javascript
小程序简单两栏瀑布流效果的实现
Dec 18 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相关资料
2006/10/09 PHP
PHP学习之输出字符串(echo,print,printf,print_r和var_dump)
2011/04/17 PHP
php定时删除文件夹下文件(清理缓存文件)
2013/01/23 PHP
php 去除html标记--strip_tags与htmlspecialchars的区别详解
2013/06/26 PHP
codeigniter框架The URI you submitted has disallowed characters错误解决方法
2014/05/06 PHP
PHP 面向对象程序设计(oop)学习笔记 (四) - 异常处理类Exception
2014/06/12 PHP
PHP生成和获取XML格式数据的方法
2016/03/04 PHP
PHP session会话操作技巧小结
2016/09/27 PHP
php实现留言板功能(会话控制)
2017/05/23 PHP
laravel实现分页样式替换示例代码(增加首、尾页)
2017/09/22 PHP
javascript 播放器 控制
2007/01/22 Javascript
js资料prototype 属性
2007/03/13 Javascript
理清apply(),call()的区别和关系
2011/08/14 Javascript
基于jquery tab切换(防止页面刷新)
2012/05/23 Javascript
jQuery异步加载数据并添加事件示例
2014/08/24 Javascript
jquery中map函数遍历数组用法实例
2015/05/18 Javascript
js实现跨域访问的三种方法
2015/12/09 Javascript
详解vue父子组件间传值(props)
2017/06/29 Javascript
微信小程序之分享页面如何返回首页的示例
2018/03/28 Javascript
《javascript设计模式》学习笔记四:Javascript面向对象程序设计链式调用实例分析
2020/04/07 Javascript
python的常见命令注入威胁
2013/02/18 Python
零基础写python爬虫之爬虫编写全记录
2014/11/06 Python
详解Python中映射类型(字典)操作符的概念和使用
2015/08/19 Python
DataFrame:通过SparkSql将scala类转为DataFrame的方法
2019/01/29 Python
Python基于内置库pytesseract实现图片验证码识别功能
2020/02/24 Python
Python numpy矩阵处理运算工具用法汇总
2020/07/13 Python
浅析CSS3 用text-overflow解决文字排版问题
2020/10/28 HTML / CSS
详解Html5原生拖拽操作
2018/01/12 HTML / CSS
小学生新学期寄语
2014/01/19 职场文书
运动会致辞稿50字
2014/02/04 职场文书
师范教师专业大学生职业生涯规划范文
2014/03/02 职场文书
留守儿童工作方案
2014/06/02 职场文书
孝老爱亲事迹材料
2014/12/24 职场文书
亚布力滑雪场导游词
2015/02/09 职场文书
WinServer2012搭建DNS服务器的方法步骤
2022/06/10 Servers
MySQL实现字段分割一行转多行的示例代码
2022/07/07 MySQL