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 相关文章推荐
基于Jquery的表格隔行换色,移动换色,点击换色插件
Dec 22 Javascript
浅析XMLHttpRequest的缓存问题
Dec 13 Javascript
在线一元二次方程计算器实例(方程计算器在线计算)
Dec 22 Javascript
不使用jquery实现js打字效果示例分享
Jan 19 Javascript
js中获取jsp表单中radio类型的值简单实例
Aug 15 Javascript
JS中常用的正则表达式
Sep 29 Javascript
layui表格实现代码
May 20 Javascript
js实现移动端导航点击自动滑动效果
Jul 18 Javascript
SVG动画vivus.js库使用小结(实例代码)
Sep 14 Javascript
vue 实现 ios 原生picker 效果及实现思路解析
Dec 06 Javascript
js获取 gif 的帧数的代码实例
Sep 10 Javascript
layui(1.0.9)文件上传upload,前后端的实例代码
Sep 26 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无法连接mysql数据库的正确解决方法
2016/07/01 PHP
php二维码生成以及下载实现
2017/09/28 PHP
详解php中生成标准uuid(guid)的方法
2019/04/28 PHP
使用prototype.js进行异步操作
2007/02/07 Javascript
javascript mouseover、mouseout停止事件冒泡的解决方案
2009/04/07 Javascript
当鼠标滑过文本框自动选中输入框内容的JS代码分享
2013/11/26 Javascript
JavaScript实现自动对页面上敏感词进行屏蔽的方法
2015/07/27 Javascript
学习JavaScript设计模式之模板方法模式
2016/01/20 Javascript
AngularJS利用Controller完成URL跳转
2016/08/09 Javascript
AngularJS入门教程之链接与图片模板详解
2016/08/19 Javascript
手机端 HTML5使用photoswipe.js仿微信朋友圈图片放大效果
2016/08/25 Javascript
浅谈js控制li标签排序问题 js调用php函数的方法
2016/10/16 Javascript
使用JS和canvas实现gif动图的停止和播放代码
2017/09/01 Javascript
JS引用传递与值传递的区别与用法分析
2018/06/01 Javascript
js canvas实现橡皮擦效果
2018/12/20 Javascript
Vue实现点击导航栏当前标签后变色功能
2020/08/19 Javascript
react使用antd表单赋值,用于修改弹框的操作
2020/10/29 Javascript
[01:09:24]Ti4开幕式
2014/07/19 DOTA
Python的Flask框架中web表单的教程
2015/04/20 Python
Django 实现下载文件功能的示例
2018/03/06 Python
dataframe 按条件替换某一列中的值方法
2019/01/29 Python
详解python算法之冒泡排序
2019/03/05 Python
在linux下实现 python 监控usb设备信号
2019/07/03 Python
Python JSON编解码方式原理详解
2020/01/20 Python
Ruby如何定义一个类
2012/10/08 面试题
音乐教学随笔感言
2014/02/19 职场文书
餐厅周年庆活动方案
2014/08/25 职场文书
护士医德医风自我评价
2014/09/15 职场文书
庆国庆国旗下讲话稿2014
2014/09/21 职场文书
2014年学生会主席工作总结
2014/11/07 职场文书
英语感谢信范文
2015/01/20 职场文书
2015年国庆节标语大全
2015/07/30 职场文书
安全生产感想
2015/08/07 职场文书
怎么禁用Windows 11快照布局? win11不使用快照布局的技巧
2021/11/21 数码科技
Android Studio实现简易进制转换计算器
2022/05/20 Java/Android
springboot集成redis存对象乱码的问题及解决
2022/06/16 Java/Android