javascript连连看
经测试,IE,Firefox,Chrome,Opera可用。
连接线最多2个拐角.秘籍为:开始后连续输入zycjwdss
还剩0对
对数字
高度:
宽度:
// 0)return 1;//IE
if (isFirefox = navigator.userAgent.indexOf("Firefox") > 0)return 2;//Firefox
if (isSafari = navigator.userAgent.indexOf("Chrome") > 0)return 3;//Chrome
if (isSafari = navigator.userAgent.indexOf("Safari") > 0)return 4;//Safari
if (isCamino = navigator.userAgent.indexOf("Camino") > 0)return 5;//Camino
if (isMozilla = navigator.userAgent.indexOf("Gecko/") > 0)return 6;//Gecko
if (isMozilla = navigator.userAgent.indexOf("Opera") >= 0)return 7;//Opera
//other...
return 0;
}
//一二维数组array中是否包含元素element
function isInclude(array, element) {
var alen = array.length;
for (var i = 0; i output 0 or 1 or 2
function getRandom(t) {
return Math.floor(t * Math.random());
}
var trLen = 6;//行数
var tdLen = 8;//列数
var gridWidth = 36;//单元格大小
var flashSpeed = 150;//闪烁速度
var pairNum = 10;
var maxCornerLen = 2;
var grayColor = "#eeeeee";
var blackColor = "#000000";
var borderColor = "#000000";
var selectColor = "#cc0000";
var grayColor_2 = "rgb(238," + " 238, 238)";
var blackColor_2 = "rgb(0," + " 0, 0)";
var borderColor_2 = "rgb(0," + " 0, 0)";
var selectColor_2 = "rgb(204," + " 0, 0)";
var isGaming = true;
var colors = [
"#000000",//unused
"#000066",
"#0000cc",
"#006600",
"#006666",
"#0066cc",
"#00cc00",
"#00cc66",
"#00cccc",
"#660000",
"#660066",
"#6600cc",
"#666600",
"#666666",
"#6666cc",
"#66cc00",
"#66cc66",
"#66cccc",
// "#cc0000",//red
"#cc0066",
"#cc00cc",
"#cc6600",
"#cc6666",
"#cc66cc",
"#cccc00",
"#cccc66",
"#cccccc",
"#333333",
"#333399",
"#3333ee",
"#339933",
"#339999",
"#3399ee",
"#33ee33",
"#33ee99",
"#33eeee",
"#993333",
"#993399",
"#9933ee",
"#999933",
"#999999",
"#9999ee",
"#99ee33",
"#99ee99",
"#99eeee",
"#ee3333",
"#ee3399",
"#ee33ee",
"#ee9933",
"#ee9999",
"#ee99ee",
"#eeee33",
"#eeee99",
"#eeeeee",
];
var colorToNum = {};
for (var i = 1; i 0) {
jsels.childNodes[row - 1].childNodes[col].style.borderBottomColor = selectColor;
}
if (col > 0) {
jsels.childNodes[row].childNodes[col - 1].style.borderRightColor = selectColor;
}
};
var unSelectTd = function(row, col) {
// selectedRC = [];
jsels.childNodes[row].childNodes[col].style.borderColor = borderColor;
if (row > 0) {
jsels.childNodes[row - 1].childNodes[col].style.borderBottomColor = borderColor;
}
if (col > 0) {
jsels.childNodes[row].childNodes[col - 1].style.borderRightColor = borderColor;
}
};
var toggleSelectTd = function(row, col) {
if (!isGaming)return;
if (isSelected(row, col)) {
unSelectTd(row, col);
selectedRC = [];
}
else {
if (selectedRC.length == 0) {
selectTd(row, col);
}
else {
if (isGray(row, col))return;
if (!checkPair(row, col)) {
unSelectTd(selectedRC[0], selectedRC[1]);
selectTd(row, col);
}
}
}
};
//清空所有
var clearAll = function() {
for (var i = 0; i = ps.length) {
return;
}
if (ps[n]) {
setAPosition(i, j, ps[n]);
}
n++;
}
}
};
var movePos = function(rc, ds) {
return [rc[0] + ds[0], rc[1] + ds[1]];
};
var posEqual = function(rc1, rc2) {
return rc1[0] == rc2[0] && rc1[1] == rc2[1];
};
var dirs = [
[-1, 0],
[0, -1],
[0, 1],
[1, 0]
];//上左右下
var dir = 0;
var _forward;
var isOut = function(rc) {
return (rc[0] = trLen || rc[1] = tdLen)
};
var findDirectRcs = function(oriRcs, rc2) {
var retRes = [];
var hs = {};
var _rc, _ds, _rc2;
for (var i = 0; i 0)eliminate([a].concat(path));
var path = findPath(a, b);
if (path.length > 0) {
eliminate(path);
return true;
}
}
return false;
};
var start = function() {
clearAll();
setPositions();
// clearInterval(inter);
// clearTimeout(timeout);
score = pairNum;
labelScore.innerHTML = score;
cheatCode = 0;
setMCL(2);
};
//清除数组指示的行
var eliminate = function(toRemoves) {
if (toRemoves == null || toRemoves == undefined || toRemoves.length == 0) {
afterEliminate();
}
else {
isGaming = false;
var _len = toRemoves.length;
for (var i = 0; i maxCornerLen)return [];
_forward = movePos(rc1, dirs[dir]);
var _flag = false;
for(var i=0;i1)cornerLen++;
if(cornerLen>maxCornerLen)return [];
console.log("rc1:"+rc1+" ps:"+ps+" dir:"+dirs[dir]+" cornerLen:"+cornerLen);
if(posEqual(_forward, rc2)){
console.log("aaa _forward:"+_forward);
return [rc1, rc2];
}
if(!isInclude(ps, _forward) && isGray(_forward[0], _forward[1])){
// console.log("_forward:"+_forward+" gray");
var _tmp = _findPath(_forward, rc2, ps.concat([_forward]), dir, cornerLen);
if(_tmp && _tmp.length>0 && posEqual(_tmp[_tmp.length-1], rc2)){
console.log("bbb rc1:"+rc1);
return [rc1].concat(_tmp);
}
}
for(var i=0;i1)?(cornerLen+1):cornerLen);
if(_tmp && _tmp.length>0 && posEqual(_tmp[_tmp.length-1], rc2)){
console.log("ccc rc1:"+rc1);
return [rc1].concat(_tmp);
}
}
return [];
};
//*/
var setMCL = function(n) {
maxCornerLen = n;
mclEl.innerHTML = maxCornerLen;
};
var doCheat = function() {
setMCL(3);
alert("连接线最多3个拐角");
};
var keyControl = function(ev) {
var kc;
if (getOs() == 2) {
kc = ev;
}
else {
kc = event
}
// alert(event.keyCode);
switch (kc.keyCode) {
case 81:
{//q
start();
break;
}
case 83:
{//s
if (cheatCode == 6)cheatCode = 7;
else if (cheatCode == 7)cheatCode = 8;
else cheatCode = 0;
if (cheatCode == 8) {
doCheat();
cheatCode = 0;
}
break;
}
case 90:
{//z
if (cheatCode == 0)cheatCode = 1;
else cheatCode = 0;
break;
}
case 89:
{//y
if (cheatCode == 1)cheatCode = 2;
else cheatCode = 0;
break;
}
case 67:
{//c
if (cheatCode == 2)cheatCode = 3;
else cheatCode = 0;
break;
}
case 74:
{//j
if (cheatCode == 3)cheatCode = 4;
else cheatCode = 0;
break;
}
case 87:
{//w
if (cheatCode == 4)cheatCode = 5;
else cheatCode = 0;
break;
}
case 68:
{//d
if (cheatCode == 5)cheatCode = 6;
else cheatCode = 0;
break;
}
default :
{
//alert("default");
cheatCode = 0;
}
}
if (!(kc.keyCode > 47 && kc.keyCode \n";
for (var i = 0; i ";
for (var j = 0; j
";
}
mfTxt += "
";
}
mfTxt += "
";
return mfTxt;
};
document.getElementById("mainField").innerHTML = mainField();
jsels = document.getElementById("jsels").childNodes[1];
if (getOs() == 1) {
jsels = document.getElementById("jsels").childNodes[0];
}
var setClick = function() {
for (var i = 0; i 30 || col > 30) {
alert("高度宽度不要超过30");
return;
}
if (row
javascript连连看的更多相关文章
- JavaScript写一个连连看的游戏
天天看到别人玩连连看, 表示没有认真玩过, 不就把两个一样的图片连接在一起么, 我自己写一个都可以呢. 使用Javascript写了一个, 托管到github, 在线DEMO地址查看:打开 最终的效果 ...
- JavaScript编写连连看
这几天写题比较少,做了一下网页设计的期末大作业.搞了个连连看,核心代码和hdu 1175那个题目一样. 越来越觉得学ACM是十分有用的,软件的核心是数据结构和算法,学会了DFS,连连看就水到渠成了. ...
- 连连看的原生JS实现
那天闲来无事,便想找个小游戏来打发时间,后来便找到了连连看, 玩了一会儿感觉无聊,想到各位高手用JS做的各种小游戏,便想自己也来做一个,于是便有了这几天的成果. 代码是用 原生JS 实现的,只是用来学 ...
- 【javascript】详解变量,值,类型和宿主对象
前言 我眼中的<javascript高级程序设计> 和<你不知道的javascript>是这样的:如果<javascript高级程序设计>是本教科书的话, < ...
- JavaScript进阶 - 第2章 你要懂的规则(JS基础语法)
第2章 你要懂的规则(JS基础语法) 2-1什么是变量 什么是变量? 从字面上看,变量是可变的量:从编程角度讲,变量是用于存储某种/某些数值的存储器.我们可以把变量看做一个盒子,盒子用来存放物品,物品 ...
- JavaScript之父Brendan Eich,Clojure 创建者Rich Hickey,Python创建者Van Rossum等编程大牛对程序员的职业建议
软件开发是现时很火的职业.据美国劳动局发布的一项统计数据显示,从2014年至2024年,美国就业市场对开发人员的需求量将增长17%,而这个增长率比起所有职业的平均需求量高出了7%.很多人年轻人会选择编 ...
- javascript中的Array对象 —— 数组的合并、转换、迭代、排序、堆栈
Array 是javascript中经常用到的数据类型.javascript 的数组其他语言中数组的最大的区别是其每个数组项都可以保存任何类型的数据.本文主要讨论javascript中数组的声明.转换 ...
- Javascript 的执行环境(execution context)和作用域(scope)及垃圾回收
执行环境有全局执行环境和函数执行环境之分,每次进入一个新执行环境,都会创建一个搜索变量和函数的作用域链.函数的局部环境不仅有权访问函数作用于中的变量,而且可以访问其外部环境,直到全局环境.全局执行环境 ...
- 探究javascript对象和数组的异同,及函数变量缓存技巧
javascript中最经典也最受非议的一句话就是:javascript中一切皆是对象.这篇重点要提到的,就是任何jser都不陌生的Object和Array. 有段时间曾经很诧异,到底两种数据类型用来 ...
随机推荐
- crtontab定时执行任务
1.crontab介绍:crontab命令用于设置周期性被执行的指令.该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行. 2.查看当前用户的定时任务:cronta ...
- Java 实现ftp 文件上传、下载和删除
本文利用apache ftp工具实现文件的上传下载和删除.具体如下: 1.下载相应的jar包 commons-net-1.4.1.jar 2.实现代码如下: public class FtpUtils ...
- LGOJ P2921 [USACO08DEC]在农场万圣节Trick or Treat on the Farm
今天我来给大家带来一片蒟蒻题解 ~~真香 LGOJ P2921 [USACO08DEC]在农场万圣节Trick or Treat on the Farm 题目描述 每年,在威斯康星州,奶牛们都会穿上 ...
- 剑指Offer 64. 滑动窗口的最大值 (其他)
题目描述 给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值.例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6 ...
- 【oracle入门】SQL的命令动词
SQL的功能 命令动词 数据定义 CREATE,DROP,ALTER 数据操纵 SELECT,INSERT,UPDATE,DELETE 数据控制 CRANT,REVOKE
- height属性
高度属性: height:长度值|百分比|auto 最大高度:max-height 最小高度:min-height 说明:设置块级元素和替换元素的内容高度.
- 服务端渲染时无法获得环境变量的值,一直是undefined
1.服务端渲染时无法获得环境变量的值,一直是undefined 2.ngnix做代理以后无法无法获取node设置的cookie
- js数组遍历方法总结
数组遍历方法 1.for循环 使用临时变量,将长度缓存起来,避免重复获取数组长度,当数组较大时优化效果才会比较明显. 1 2 3 for(j = 0,len=arr.length; j < le ...
- numpy鸢尾花
import numpy from sklearn.datasets import load_iris #从sklearn包自带的数据集中读出鸢尾花数据集data iris_data = load_i ...
- Ubuntu16.04中如何启用floodlight的一种方式
在 floodlight文件夹下输入 java -jar target/floodlight.jar 启动floodlight控制器,在浏览器窗口输入 http://localhost:8080/ui ...