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. 有段时间曾经很诧异,到底两种数据类型用来 ...
随机推荐
- React 组件框架
- Java的命名规范
1.类名.接口名:首单词的第一个字母要大写.如果有多个单词,其他单词的首字母要大写. 2.包名:全部小写. 3.变量名.方法名:首单词的第一个字母小写.如果有多个单词,其他单词的首字母要大写. 4.常 ...
- 北大poj- 1013
Counterfeit Dollar Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 50515 Accepted: 15 ...
- A The Empire Age
1月28日 Description 帝国时代3是一款十分刺激的RTS游戏.你需要控制自己的一块殖民地,发展殖民地的经济和军事,最终打败其他殖民地.小L是这个游戏的狂热爱好者.一次小L打算打AI试试身手 ...
- 合肥工业大学oj G-诺德森海岸
#include<iostream> #include<vector> #include<bits/stdc++.h> using namespace std; v ...
- nodejs之mock与跨域代理的三两事
emmm...好久没写博客了,都忘了该怎么开始. 那就先说下mockjs.因为一些原因,导致后台接口没有数据,那么我们就开始自己造数据,使用的是比较流行mockjs,根据文档就能简单的配置,然后开始愉 ...
- mayavi与X11的一些坑总结
1. Mayavi:https://docs.enthought.com/mayavi/mayavi/ 适合渲染各种和图形有关的数据.在大批量处理数据时,一般不希望对每一个渲染好的对象都将其显示出来, ...
- JavaScript中为什么使用立即执行函数来封装模块?
最近在学习JavaScript基础,在学习到面向对象编程时,学习到在JavaScript中实现模块化的方法,其中一个重要的点是如何封装私有变量. 实现封装私有变量的方法主要是: 使用构造函数 func ...
- Java中对List集合的常用操作
目录: list中添加,获取,删除元素: list中是否包含某个元素: list中根据索引将元素数值改变(替换): list中查看(判断)元素的索引: 根据元素索引位置进行的判断: 利用list中索引 ...
- 双十一LoanMarket压力测试报告
测试背景 评估服务器资源及几个重要接口的并发性能. 测试需求 由开发提供的5个重要接口: 业务场景 URL 访问量(万) TPS 请求比例(%) 随手借点-首页产品接口 /suishoujiedian ...