用js能做出js 动态生成方法数独游戏的方法吗

数独游戏系统的设计与实现(JScript)(附答辩记录)_其他_毕业设计论文网
未找到您最近浏览过的网页历史浏览记录
热门搜索词: |
全部设计论文分类
本站所有出售的 资料均严格保密无重复,出售过后会做详细的记录避免重复,
QQ临时会话 可能会导致消息无法正常接收,咨询前请务必先加客服为好友.QQ:
本站提供的资料 都是已经做好的,现成的作品都是审核过的,保证质量和规范.
数独游戏系统的设计与实现(JScript)(附答辩记录)
以下是大纲或介绍,如需要完整的资料请购买.
本站资料均已反复审核通过,内容原创保密,标准格式,质量保证.
1.无需注册,点击在线购买后即可获取该完整资料
2.购买后提供下载链接或联系客服发送资料.
数独游戏系统的设计与实现(JScript)(附答辩记录)(包含选题审批表,任务书,开题报告,中期检查报告,毕业论文10000字,答辩记录,成绩评定册,程序代码)
摘 要:数独游戏是十八世纪瑞士数学家欧拉提出的,近年来风靡全球的一种智力游戏。越来越多的人喜欢玩数独游戏,本文对数独游戏进行了一些基本的介绍,通过本文可以了解到数独游戏的起源及其一些发展过程。在本文中对数独游戏的基本解法进行了讲解,对一些难度较大的解法也有提及,给出了数独游戏初期的生成思路和部分设计中出现的代码。该程序主要使用JS编程语言。
关键字:JS数独;题目生成;模块设计
Design and Realiztion of Sudoku Game System
Abstract: The problem of Sudoku is invented Swiss mathematician who named Euler and it becomes more and more popular in the whole globe.More and more people like to play sudoku. In this paper,introduced some basic of Sudoku game, through this can understand the origins of Sudoku and some of the development process. In this article on sudoku game to explain certain basic solution, the solution of some difficult also mentioned that, given the early Sudoku generate design ideas and some of the code appears. The program mainly uses JS programming language. 〖资料来源:咨询QQ: 毕业设计(论文)网 〗
Key words:JSSModule design
数独游戏的规则和通用解法
数独游戏不需要特定的语言基础,也不需要进行数字运算,这也是该游戏能够在全世界流行的原因。
事实上,从技术的角度来说,玩家甚至可以连数数都不用会,所有要做的就是将1到9这9个数字按一定的秩序填入每行(从左至右)、每列(从上至下)、每个小九宫格(内有9个小方格),每个数字在每行、每列、每个小九宫格中只能出现一次。如图所示,是一道数独的题目和答案。
本文对数独的设计主要使用了JScript编程。
JScript 是 Microsoft 公司对 ECMA 262 语言规范(ECMAScript 编辑器 3)的一种实现。
除了少数例外(为了保持向后兼容),JScript 完全实现了 ECMA 标准。
JScript 是一种解释型的、基于对象的脚本语言。是从一组编程语言如C, C++, 以及Java等之中脱离出来的。尽管与 C++ 这样成熟的面向对象的语言相比,JScript 的功能要弱一些,但对于它的预期用途而言,JScript 的功能已经足够大了。
JScript 不是其他语言的精简版(例如,它只是与 Java 有点模糊而间接的关系),也不是任何事物的简化。不过,它有其局限性。例如,不能使用该语言来编写独立运行的应用程序,并且没有对读写文件的内置支持。此外,JScript 脚本只能在某个解释器或&宿主&上运行,如 Active Server Pages(ASP)、Internet 浏览器或者 Windows 脚本宿主。 〖资料来源: 毕业设计(论文)网〗
JScript 是一种宽松类型的语言,宽松类型意味着不必显式定义变量的数据类型。事实上 JScript 更进一步。无法在JScript上明确地定义数据类型。此外,在大多数情况下,JScript 将根据需要自动进行转换。例如,如果将一个数值添加到由文本组成的某项(一个字符串),该数值将被转换为文本。
JScript使用的是一种基于原型的对象结构,允许你在脚本中定义对象。你能够往对象的原型中加入方法和属性,扩展内置对象和定制对象。JScript有6种数据类型:数值型、字符串型、对象型、布尔型、null和undefined。
界面模块的实现
本设计主要包括了数独视图&&提示最基本的数独思路;初级、中级、高级、骨灰级四种级别的难度可供玩家选择;开始与暂停按钮。玩家选择一种难度,然后点击开始按钮开始游戏。 〖资料来源:咨询QQ: 毕业设计(论文)网 〗
相关内容:
本站提供的资料属原创,内容严格把关,均审核通过的,保证质量和规范.
提供下载链接或发送至您的邮箱,资料可重复发送,确保您收到为止.
收到资料后若有任何疑难问题,均可通过本站客服提供帮助解决.
我们确保发送的资料完整无损,如核实为不合格资料,可以申请退换.
提示: QQ临时会话可能会导致消息无法正常接收,请咨询前务必先加客服为好友。
本站所列毕业设计(论文)资料均属于原创者所有,初衷是为大家在毕业设计(论文)过程中参考和学习交流之用,请勿做其他非法用途,转载必究,如有侵犯您的权利或有损您的利益,请联系本站,经查实我们会立即进行修正或删除相关内容!
Copyright &
苏ICP备号 |[原创][网页游戏]数独生成算法及范例 - JavaScript当前位置:& &&&[原创][网页游戏]数独生成算法及范例[原创][网页游戏]数独生成算法及范例&&网友分享于:&&浏览:0次[原创][网页游戏]数独生成算法及实例1.完整数独生成算法(规律性低,非随机,不保证全可能性)
2.非唯一解挖坑
3.正确性判断
4.使用localStorage,制作继续游戏功能
5.简单使用jquery mobile
6.在某日早上,在地铁时代报上看到数独游戏,就想在网页上做一个试试
百度google了下生成算法,没有发现有效的生成算法,很多是随机回滚类型[还有错误的算法。。。]
在纸上随意写写,排排,发现还有个简单的生成数独的方法,但没有论证是否可以生成所有数独
1.完整数独生成算法(规律性低,非随机,不保证全可能性)
简单列出排列:
扩展到X,会发现个规律,如下图:
可以像1-2一样,以行为路径,由小到大或由大到小
也可以以列为路径,由小到大或由大到小
随后,在1-3,4-6,7-9(不打乱小方块1-9排列的前提下),进行列交换[红色](或行交换[蓝色])
1-3行或列交换后,
由于是9*9的格子,他自己有着一定规律,进行单元格的交换[3对],能使得生成的数独可能性更多
下图以[行为路径,由小到大]为例,进行单元格的交换
js代码实例:
1 /*generate init data list*/
2 var startNum = Math.round(1+Math.random()*8) // the start number
3 ,type = Math.round(1+Math.random()*3)
4 ,goOnNum = startNum
5 ,bolckStartNum = startN //1:leftToRight,somallToB2:leftToRight,bigToS3:topToBottom,somallToB4:topToBottom,bigToSmall
6 /* 1-1,1-2. generate init data list */
7 for(var i = 0;i&9;i++){
for(var j = 0;j&9;j++){
if(type&=2){
this.genSudoArr[i][j] = goOnN
this.genSudoArr[j][i] = goOnN
if((j+1)%9!=0){
if(type==1 || type==3){
goOnNum=(goOnNum+1)&9?1:(goOnNum+1);
goOnNum=(goOnNum-1)&1?9:(goOnNum-1);
if(type==1 || type==3){
if((i+1)%3!=0){
goOnNum=(startNum+3)&9?(startNum-6):(startNum+3);
startNum = goOnN
goOnNum=(bolckStartNum+1)&9?(bolckStartNum-8):(bolckStartNum+1);
bolckStartNum = goOnN
startNum = goOnN
if((i+1)%3!=0){
goOnNum=(startNum-3)&1?(startNum+6):(startNum-3);
startNum = goOnN
goOnNum=(bolckStartNum-1)&1?(bolckStartNum+8):(bolckStartNum-1);
bolckStartNum = goOnN
startNum = goOnN
43 /* 1-4. change the data list by cell AND repeat 3 times is better*/
44 var changeType01 = 0,from01,to01;
45 for(var i = 0;i&3;i++){
for(var m = 0;m&3;m++){
// change No
changeType01 = Math.round(Math.random()*2);
switch(changeType01){
case 1: from01 = 0;to01 = 1;break;
case 2: from01 = 1;to01 = 2;break;
default: from01 = 0; to01 = 2;
// do change, do not use tmp var
for(var h = 0; h&3; h++){
var x1 = parseInt(from01)+parseInt(i)*3;
var x2 = parseInt(to01)+parseInt(i)*3;
var y = parseInt(m)+parseInt(h)*3;
if(type&=2){
// change col
this.genSudoArr[x1][y]+=this.genSudoArr[x2][y];
this.genSudoArr[x2][y]=this.genSudoArr[x1][y]-this.genSudoArr[x2][y];
this.genSudoArr[x1][y]-=this.genSudoArr[x2][y];
// change row
this.genSudoArr[y][x1]+=this.genSudoArr[y][x2];
this.genSudoArr[y][x2]=this.genSudoArr[y][x1]-this.genSudoArr[y][x2];
this.genSudoArr[y][x1]-=this.genSudoArr[y][x2];
73 /* 1-3. change the data list by line and column*/
74 var changeType = 0,from,
76 for(var i = 0;i&3;i++){
changeType = Math.round(Math.random()*2);
switch(changeType){
case 1: from = 0+i*3;to = 1+i*3;break;
case 2: from = 1+i*3;to = 2+i*3;break;
default: from = 0+i*3; to = 2+i*3;
// do change, do not use tmp var
for(var j = 0; j&9; j++)
this.genSudoArr[from][j]+=this.genSudoArr[to][j];
this.genSudoArr[to][j]=this.genSudoArr[from][j]-this.genSudoArr[to][j];
this.genSudoArr[from][j]-=this.genSudoArr[to][j];
91 //column
92 for(var i = 0;i&3;i++){
changeType = Math.round(Math.random()*2);
switch(changeType){
case 1: from = 0+i*3;to = 1+i*3;break;
case 2: from = 1+i*3;to = 2+i*3;break;
default: from = 0+i*3; to = 2+i*3;
// do change, do not use tmp var
for(var j = 0; j&9; j++)
this.genSudoArr[j][from]+=this.genSudoArr[j][to];
this.genSudoArr[j][to]=this.genSudoArr[j][from]-this.genSudoArr[j][to];
this.genSudoArr[j][from]-=this.genSudoArr[j][to];
2.非唯一解挖坑
简单的随机非重复挖坑
// 1.copy all data
var me = this;
for(var i = 0;i&me.genSudoArr.i++){
for(var j = 0;j&me.genSudoArr[i].j++){
me.questionData[i][j] = me.genSudoArr[i][j];
// 2.cut data to answerLst
for(var i = 0;i&me.randomCi++){
x = Math.round(Math.random()*8);
y = Math.round(Math.random()*8);
var key = x+'-'+y;
if(!hasKey()){
me.answerData.push({"key":key,"val":"","r":x,"c":y});
me.questionData[x][y] = "";
function hasKey(key){
for(var i = 0;i&me.answerData.i++){
if(me.answerData[i].key == key){
return true;
return false
3.正确性判断
行,列,块判断即可
var hasString = "";
/*check row*/
for(var i = 0;i&tmp.i++){
hasString = "";
for(var j = 0;j&tmp[i].j++){
if(tmp[i][j]=="" || hasString.indexOf(tmp[i][j]+'')&0)
hasString += tmp[i][j]+'';
//console.log(hasString,tmp[i][j],"error:"+(i+1)+","+(j+1));
alert("error:"+(i+1)+","+(j+1));
/*check col*/
hasString = "";
for(var i = 0;i&tmp.i++){
hasString = "";
for(var j = 0;j&tmp[i].j++){
if(tmp[j][i]=="" || hasString.indexOf(tmp[j][i]+'')&0)
hasString += tmp[j][i]+'';
//console.log(hasString,tmp[j][i],"error:"+(j+1)+","+(i+1));
alert("error:"+(j+1)+","+(i+1));
/*check block*/
hasString = "";
for(var c = 0;c&9;c++){
var fromR,fromC;
fromR = Math.floor(i/3) * 3;
fromC = (i%3) * 3;
for(var i = 0;j&fromR;i++){
for(var j = 0;j&fromC;j++){
if(tmp[i][j]=="" || hasString.indexOf(tmp[i][j]+'')&0)
hasString += tmp[i][j]+'';
//console.log("error:"+(i+1)+","+(j+1));
alert("error:"+(i+1)+","+(j+1));
4.使用localStorage,制作继续游戏功能
第一次使用,原本想把[Object,Object],[Object,Object],[Object,Object]...直接放入localStorage
结果发现不可以,只能存储String
把[Object,Object],[Object,Object],[Object,Object]...转为String放入localStorage
从localStorage取出来后,在进行类型转换即可
5.简单使用jquery mobile
使用还算方便的
6.可以跑的代码[需要联机,jquery的css,js都是在线引用的]:
12345678910
12345678910
12345678910 上一篇:下一篇:文章评论相关解决方案 1234567891011 Copyright & &&版权所有

我要回帖

更多关于 dwr 没有生成js方法 的文章

 

随机推荐