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调试工具(下载)
Jan 09 Javascript
网页中CDATA标记的说明
Sep 12 Javascript
JavaScript访问字符串中单个字符的两种方法
Jul 03 Javascript
jQuery+Ajax实现无刷新操作
Jan 04 Javascript
JavaScript实现url参数转成json形式
Sep 25 Javascript
基于JS实现弹出一个隐藏的div窗口body页面变成灰色并且不可被编辑
Dec 14 Javascript
javascript 面向对象function详解及实例代码
Feb 28 Javascript
js+html5生成自动排列对话框实例
Oct 09 Javascript
vue elementui form表单验证的实现
Nov 11 Javascript
js操作table中tr的顺序实现上移下移一行的效果
Nov 22 Javascript
JavaScript事件对象深入详解
Dec 30 Javascript
js prototype和__proto__的关系是什么
Aug 23 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
Zerg建筑一览
2020/03/14 星际争霸
php实例分享之html转为rtf格式
2014/06/02 PHP
ThinkPHP控制器间实现相互调用的方法
2014/10/31 PHP
PHP实现仿Google分页效果的分页函数
2015/07/29 PHP
CI框架整合smarty步骤详解
2016/05/19 PHP
Laravel Intervention/image图片处理扩展包的安装、使用与可能遇到的坑详解
2017/11/14 PHP
javascript 中__proto__和prototype详解
2014/11/25 Javascript
基于Bootstrap3表格插件和分页插件实例详解
2016/05/17 Javascript
让你一句话理解闭包(简单易懂)
2016/06/03 Javascript
Jquery组件easyUi实现手风琴(折叠面板)示例
2016/08/23 Javascript
微信小程序 Storage API实例详解
2016/10/02 Javascript
浅谈Node.js轻量级Web框架Express4.x使用指南
2017/05/03 Javascript
vue实现留言板todolist功能
2017/08/16 Javascript
vue.js高德地图实现热点图代码实例
2019/04/18 Javascript
Vuex实现数据共享的方法
2019/12/20 Javascript
JS错误处理与调试操作实例分析
2020/04/13 Javascript
公众号SVG动画交互实战代码
2020/05/31 Javascript
Jquery ajax书写方法代码实例解析
2020/06/12 jQuery
Python中让MySQL查询结果返回字典类型的方法
2014/08/22 Python
使用Python的Treq on Twisted来进行HTTP压力测试
2015/04/16 Python
Python设计实现的计算器功能完整实例
2017/08/18 Python
Python使用tkinter库实现文本显示用户输入功能示例
2018/05/30 Python
python利用Opencv实现人脸识别功能
2019/04/25 Python
解决python中导入win32com.client出错的问题
2019/07/26 Python
python实现代码统计程序
2019/09/19 Python
python创建学生管理系统
2019/11/22 Python
IDLE下Python文件编辑和运行操作
2020/04/25 Python
Python如何实现线程间通信
2020/07/30 Python
基于Python爬取素材网站音频文件
2020/10/21 Python
python+opencv3.4.0 实现HOG+SVM行人检测的示例代码
2021/01/28 Python
医药工作者的求职信范文
2013/09/21 职场文书
医学检验专业个人求职信范文
2013/12/04 职场文书
化验室技术员岗位职责
2013/12/24 职场文书
2015年安全生产工作总结范文
2015/04/02 职场文书
通用员工手册范本
2015/05/14 职场文书
用python自动生成日历
2021/04/24 Python