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实现面向对象类的功能书写技巧
Mar 07 Javascript
多浏览器兼容性比较好的复制到剪贴板的js代码
Oct 09 Javascript
javascript模块化是什么及其优缺点介绍
Sep 02 Javascript
利用jq让你的div居中的好方法分享
Nov 21 Javascript
JS获取当前日期时间并定时刷新示例
Mar 04 Javascript
为什么JavaScript没有块级作用域
May 22 Javascript
React-intl 实现多语言的示例代码
Nov 03 Javascript
微信小程序实现文字跑马灯
May 26 Javascript
JS实现二维数组元素的排列组合运算简单示例
Jan 28 Javascript
js前端面试之同步与异步问题详解
Apr 03 Javascript
在Node.js中将SVG图像转换为PNG,JPEG,TIFF,WEBP和HEIF格式的方法
Aug 22 Javascript
微信小程序本地存储实现每日签到、连续签到功能
Oct 09 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 set_time_limit(0)长连接的实现分析
2010/03/02 PHP
PHP中foreach循环中使用引用要注意的地方
2011/01/02 PHP
php简单的会话类代码
2011/08/08 PHP
php利用递归实现删除文件目录的方法
2016/09/23 PHP
将string解析为json的几种方式小结
2010/11/11 Javascript
自己使用jquery写的一个无缝滚动的插件
2014/04/30 Javascript
教你如何使用PHP输出中文JSON字符串
2014/05/22 Javascript
使用js画图之饼图
2015/01/12 Javascript
javascript实现炫酷的拖动分页
2015/05/11 Javascript
深入理解JavaScript编程中的原型概念
2015/06/25 Javascript
jQuery使用$.ajax提交表单完整实例
2015/12/11 Javascript
jQuery自定义滚动条完整实例
2016/01/08 Javascript
bootstrap网页框架的使用方法
2016/05/10 Javascript
AngularJS 过滤器的简单实例
2016/07/27 Javascript
JavaScript学习笔记整理_用于模式匹配的String方法
2016/09/19 Javascript
基于chosen插件实现人员选择树搜索自动筛选功能
2016/09/24 Javascript
jquery实现轮播图效果
2017/02/13 Javascript
JS实现的简单表单验证功能示例
2017/10/13 Javascript
jQuery时间戳和日期相互转换操作示例
2018/12/07 jQuery
Vuex 单状态库与多模块状态库详解
2018/12/11 Javascript
layer.open回调获取弹出层参数的实现方法
2019/09/10 Javascript
基于vue和bootstrap实现简单留言板功能
2020/05/30 Javascript
[01:32]TI珍贵瞬间系列(一)
2020/08/26 DOTA
在Python中操作字符串之rstrip()方法的使用
2015/05/19 Python
python merge、concat合并数据集的实例讲解
2018/04/12 Python
python使用xlrd和xlwt读写Excel文件的实例代码
2018/09/05 Python
Python面向对象程序设计类的封装与继承用法示例
2019/04/12 Python
python多线程下信号处理程序示例
2019/05/31 Python
django项目简单调取百度翻译接口的方法
2019/08/06 Python
python统计函数库scipy.stats的用法解析
2020/02/25 Python
python ssh 执行shell命令的示例
2020/09/29 Python
中间件的定义
2016/08/09 面试题
博士研究生自我鉴定范文
2013/12/04 职场文书
工作会议方案
2014/05/21 职场文书
开学典礼演讲稿
2014/05/23 职场文书
分享CSS盒子模型隐藏的几种方式
2022/02/28 HTML / CSS