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. 有段时间曾经很诧异,到底两种数据类型用来 ...
随机推荐
- Holer实现外网访问本地MySQL数据库
外网访问内网MySQL数据库 内网主机上安装了MySQL数据库,只能在局域网内访问,怎样从公网也能访问本地MySQL数据库? 本文将介绍使用holer实现的具体步骤. 1. 准备工作 1.1 安装并启 ...
- mysql数据库操作记录持续更新...
1.查看删除数据库表的唯一约束 SHOW INDEX FROM tbl_name (唯一约束也是索引) ALTER TABLE tbl_name DROP INDEX index_name 2.u ...
- 剑指Offer 66. 机器人的运动范围 (回溯)
题目描述 地上有一个m行和n列的方格.一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子. 例如,当k为18时,机器人能 ...
- 3D数学基础(三)矩阵
3D引擎中对于矩阵的使用非常多,介绍这些知识也是为了告诉开发者原理,更有助于开发者编写逻辑. (1)固定流水线 各种坐标系之间的转化是通过矩阵相乘得到的,这里面就涉及到了3D固定流水线.作为3D游戏开 ...
- CSS组合设计输入框和按钮生成自定义关键字查询栏
效果图: html代码: <!DOCTYPE html> <head> <title></title> </head> <body&g ...
- vue项目中全局配置变量
在项目中api管理需要用到全局变量,创建全局变量的方式也有很多. 1.通过export default const BASEURL = "http://localhost:3333/&quo ...
- linux ps 按进程消耗内存资源大小排序
linux ps 关于sort的解释 --sort spec specify sorting order. Sorting syntax is [+|-]key[,[+|-]key[,...]] Ch ...
- Java面试题2
类加载机制 Java虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验.转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的加载机制. 类从被加载到虚拟机内存中开 ...
- Linux命令行下载工具
目录 wget aria2 cURL Youtube-dl https://zh.wikipedia.org/wiki/下载管理程序比较 https://wiki.archlinux.org/inde ...
- 顺序栈代码实现&&stack库
#include<iostream> using namespace std; ; typedef int Elemtype; struct SqStack { Elemtype *bas ...