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 中的switch表达式使用示例
Jun 03 Javascript
javascript 实现字符串反转的三种方法
Nov 23 Javascript
推荐4个原生javascript常用的函数
Jan 12 Javascript
JavaScript利用HTML DOM进行文档操作的方法
Mar 28 Javascript
Jquery EasyUI实现treegrid上显示checkbox并取选定值的方法
Apr 29 Javascript
基于jQuery实现表格内容的筛选功能
Aug 21 Javascript
node.js中debug模块的简单介绍与使用
Apr 25 Javascript
vue 解决addRoutes动态添加路由后刷新失效问题
Jul 02 Javascript
Vue和React组件之间的传值方式详解
Jan 31 Javascript
jquery+ajax实现异步上传文件显示进度条
Aug 17 jQuery
Vue中foreach数组与js中遍历数组的写法说明
Jun 05 Vue.js
vue中div禁止点击事件的实现
Apr 02 Vue.js
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
阿拉伯的咖啡与水烟
2021/03/03 咖啡文化
一个ORACLE分页程序,挺实用的.
2006/10/09 PHP
PHP生成不重复标识符的方法
2014/11/21 PHP
WordPress中编写自定义存储字段的相关PHP函数解析
2015/12/25 PHP
Laravel框架实现调用百度翻译API功能示例
2019/05/30 PHP
PHP实现cookie跨域session共享的方法分析
2019/08/23 PHP
简单学习JavaScript中的for语句循环结构
2015/11/10 Javascript
jQuery事件委托之Safari
2016/07/05 Javascript
JavaScript第一篇之实现按钮全选、功能
2016/08/21 Javascript
深入理解JS继承和原型链的问题
2016/12/17 Javascript
vue-router路由简单案例介绍
2017/02/21 Javascript
浅谈angular4实际项目搭建总结
2017/12/01 Javascript
使用命令行工具npm新创建一个vue项目的方法
2017/12/27 Javascript
Vuex提升学习篇
2018/01/11 Javascript
webpack 样式加载的实现原理
2018/06/12 Javascript
bootstrap下拉框动态赋值方法
2018/08/10 Javascript
vue+axios+mock.js环境搭建的方法步骤
2018/08/28 Javascript
一步一步的了解webpack4的splitChunk插件(小结)
2018/09/17 Javascript
elementUI 设置input的只读或禁用的方法
2018/10/30 Javascript
vue学习笔记之作用域插槽实例分析
2020/02/01 Javascript
vue用elementui写form表单时,在label里添加空格操作
2020/08/13 Javascript
Python random模块(获取随机数)常用方法和使用例子
2014/05/13 Python
python实现录音小程序
2020/10/26 Python
使用python将图片格式转换为ico格式的示例
2018/10/22 Python
Python3.5字符串常用操作实例详解
2019/05/01 Python
Django Rest framework解析器和渲染器详解
2019/07/25 Python
Python .py生成.pyd文件并打包.exe 的注意事项说明
2021/03/04 Python
利用css3制作3D样式按钮实现代码
2013/03/18 HTML / CSS
德国古洛迷亚百货官网:GALERIA Kaufhof
2017/06/20 全球购物
Speedo速比涛法国官方网站:泳衣、泳镜、泳帽、泳裤
2019/07/30 全球购物
广州某公司软件工程师面试题
2014/12/22 面试题
运动员口号
2014/06/09 职场文书
党员国庆节演讲稿范文2014
2014/09/21 职场文书
2015年医院保卫科工作总结
2015/07/23 职场文书
小学记事作文之200字
2019/08/06 职场文书
修改Nginx配置返回指定content-type的方法
2022/09/23 Servers