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实现上传图片并预览的效果实现代码
Apr 11 Javascript
jQuery获得页面元素的绝对/相对位置即绝对X,Y坐标
Mar 06 Javascript
JavaScript中操作字符串小结
May 04 Javascript
理解javascript中的原型和原型链
Jul 30 Javascript
jQuery手动点击实现图片轮播特效
Apr 20 Javascript
基于javascript实现页面加载loading效果
Sep 15 Javascript
BootStrap+Angularjs+NgDialog实现模式对话框
Aug 24 Javascript
js中的事件委托或是事件代理使用详解
Jun 23 Javascript
JS FormData上传文件的设置方法
Jul 05 Javascript
JS html事件冒泡和事件捕获操作示例
May 01 Javascript
浅谈layui 表单元素的选中问题
Oct 25 Javascript
解决vue项目打包上服务器显示404错误,本地没出错的问题
Nov 03 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中header和session_start前不能有输出原因分析
2013/01/11 PHP
php爬取天猫和淘宝商品数据
2018/02/23 PHP
PHP bin2hex()函数基础实例讲解
2019/02/11 PHP
laravel 解决后端无法获取到前端Post过来的值问题
2019/10/22 PHP
js中自定义方法实现停留几秒sleep
2014/07/11 Javascript
JavaScript获取页面中超链接数量的方法
2015/11/09 Javascript
Bootstarp基本模版学习教程
2017/02/01 Javascript
Bootstrap导航条学习使用(一)
2017/02/08 Javascript
Angular实现一个简单的多选复选框的弹出框指令实例
2017/04/25 Javascript
详解webpack异步加载业务模块
2017/06/23 Javascript
实例学习JavaScript读取和写入cookie
2018/01/29 Javascript
vue文件运行的方法教学
2019/02/12 Javascript
微信小程序中button去除默认的边框实例代码
2019/08/01 Javascript
vue-i18n实现中英文切换的方法
2020/07/06 Javascript
jQuery实现增删改查
2020/12/22 jQuery
[49:42]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#2Secret VS EG第一局
2016/03/04 DOTA
[00:36]DOTA2勇士令状莱恩声望物品——冥晶之厄展示
2018/05/25 DOTA
解决uWSGI的编码问题详解
2017/03/24 Python
Python实现查找匹配项作处理后再替换回去的方法
2017/06/10 Python
对json字符串与python字符串的不同之处详解
2018/12/19 Python
在python中使用xlrd获取合并单元格的方法
2018/12/26 Python
python 动态生成变量名以及动态获取变量的变量名方法
2019/01/20 Python
python tkinter组件使用详解
2019/09/16 Python
python3连接kafka模块pykafka生产者简单封装代码
2019/12/23 Python
Python使用socketServer包搭建简易服务器过程详解
2020/06/12 Python
html5-websocket基于远程方法调用的数据交互实现
2012/12/04 HTML / CSS
美国户外服装和装备购物网站:Outland USA
2020/03/22 全球购物
CAT鞋加拿大官网:CAT Footwear加拿大
2020/08/05 全球购物
Java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类
2012/02/06 面试题
校班主任推荐信范文
2013/12/03 职场文书
教师评优事迹材料
2014/01/10 职场文书
同学聚会策划方案
2014/06/06 职场文书
企业工会工作总结2015
2015/05/13 职场文书
资产移交协议书
2016/03/24 职场文书
解决pytorch读取自制数据集出现过的问题
2021/05/31 Python
关于mysql中string和number的转换问题
2022/06/14 MySQL