<html>
<head>
<title>连连看</title>
<script>
var ctx;
var clickNum=0;
var point1=new Object();
var point2=new Object();
var i=0;
var j=0;
var imgArray=new Array();
var timgArray=new Array();
var posxArray=new Array();
var posyArray=new Array();
var imgStr=new Array("0.jpg","1.jpg","2.jpg","3.jpg","4.jpg","5.jpg","6.jpg");
function init(){
ctx = document.getElementById('canvas').getContext('2d');
for( i=0;i<10;i++){
timgArray[i]=new Array();
for(j=0;j<10;j++){
timgArray[i][j]=Math.floor(Math.random()*7);
}
}
imgArray=timgArray;
for(i=0;i<10;i++){
for(j=0;j<10;j++){
imgArray[i][j]=timgArray[j][i];
}
}
for(i=0;i<10;i++){
posxArray[i]=new Array();
posyArray[i]=new Array();
for(j=0;j<10;j++){
posxArray[i][j]=50*j;
posyArray[i][j]=50*i;
}
}
drawImg();
}
function drawImg(){
var img=new Image();
for(i=0;i<10;i++){
for( j=0;j<10;j++){
if(imgArray[i][j]!=0){
img.src=imgStr[imgArray[i][j]];
ctx.drawImage(img,posxArray[i][j]+2,posyArray[i][j]+2,46,46);
}
}
}
}
function clearImg(a,b){
// window.alert("clear"+a.x+" "+a.y+" "+b.x+" "+b.y);
ctx.clearRect(posxArray[a.y][a.x],posyArray[a.y][a.x],50,50);
ctx.clearRect(posxArray[b.y][b.x],posyArray[b.y][b.x],50,50);
}
function mousedown(e){
var img=new Image();
if(clickNum==0){
point1.x=parseInt(e.clientX/50);
point1.y=parseInt(e.clientY/50);
ctx.fillRect(posxArray[point1.y][point1.x],posyArray[point1.y][point1.x],50,50);
img.src=imgStr[imgArray[point1.x][point1.y]];
ctx.drawImage(img,posxArray[point1.y][point1.x]+2,posyArray[point1.y][point1.x]+2,46,46);
clickNum=1;
}else if(clickNum==1){
point2.x=parseInt(e.clientX/50);
point2.y=parseInt(e.clientY/50);
ctx.fillRect(posxArray[point2.y][point2.x],posyArray[point2.y][point2.x],50,50);
img.src=imgStr[imgArray[point2.x][point2.y]];
ctx.drawImage(img,posxArray[point2.y][point2.x]+2,posyArray[point2.y][point2.x]+2,46,46);
// window.alert(point1.x+"___"+point1.y+"___"+point2.x+"___"+point2.y);
isMatch(point1,point2);
}
}
function isMatch(a,b){
var img=new Image();
var matched=false;
if(a.x==b.x&&a.y==b.y){
ctx.clearRect(posxArray[a.y][a.x],posyArray[a.y][a.x],50,50);
img.src=imgStr[imgArray[a.x][a.y]];
ctx.drawImage(img,posxArray[a.y][a.x]+2,posyArray[a.y][a.x]+2,46,46);
a.x=b.x;
a.y=b.y;
}else{
if(a.x==b.x|a.y==b.y){
if(horizon(a,b)){//看两个行在一个直线上的情况
imgArray[a.x][a.y]=0;
imgArray[b.x][b.y]=0;
clearImg(a,b);
matched=true;
}else if(twoCorners(a,b)){
// window.alert("towCorners");
imgArray[a.x][a.y]=0;
imgArray[b.x][b.y]=0;
clearImg(a,b);
matched=true;
}
}else{
if(oneCorner(a,b)){//沿矩形的边这一次的情况
imgArray[a.x][a.y]=0;
imgArray[b.x][b.y]=0;
clearImg(a,b);
matched=true;
}else if(twoCorners(a,b)){
// window.alert("towCorners");
imgArray[a.x][a.y]=0;
imgArray[b.x][b.y]=0;
clearImg(a,b);
matched=true;
}
}
if(matched==true){
clickNum=0;
}else{
ctx.clearRect(posxArray[a.y][a.x],posyArray[a.y][a.x],50,50);
img.src=imgStr[imgArray[a.x][a.y]];
ctx.drawImage(img,posxArray[a.y][a.x]+2,posyArray[a.y][a.x]+2,46,46);
a.x=b.x;
a.y=b.y;
}
}
}
function horizon(a,b){
var isAble=true;
if(imgArray[a.x][a.y]==imgArray[b.x][b.y]){
if(a.x==b.x){
if(a.y>b.y){
for(i=b.y+1;i<(a.y);i++){
if(imgArray[b.x][i]!=0){
// window.alert("y is shut");
isAble=false;
break;
}
}
}else{
for(i=a.y+1;i<(b.y);i++){
if(imgArray[b.x][i]!=0){
// window.alert("y is shut");
isAble=false;
break;
}
}
}
}else{
if(a.x>b.x){
for(i=b.x+1;i<(a.x);i++){
if(imgArray[i][a.y]!=0){
// window.alert("y is shut");
isAble=false;
break;
}
}
}else{
for(i=a.x+1;i<(b.x);i++){
if(imgArray[i][a.y]!=0){
// window.alert("y is shut");
isAble=false;
break;
}
}
}
}
// window.alert(imgArray[a.x][a.y]+"==="+imgArray[b.x][b.y]+"MMM"+point1.x+"___"+point1.y+"___"+point2.x+"___"+point2.y);
}else{
// window.alert(imgArray[a.x][a.y]+"-----"+imgArray[b.x][b.y]+"MMM"+point1.x+"___"+point1.y+"___"+point2.x+"___"+point2.y);
isAble=false;
}
return isAble;
}
function oneCorner(a,b){
var isAble=false;
var tp=new Object();
if(imgArray[a.x][a.y]==imgArray[b.x][b.y]){
if(a.x>b.x){
for(i=b.x+1;i<(a.x+1);i++){
// window.alert(b.x);
tp.x=i;
tp.y=b.y;
if(imgArray[i][b.y]!=0){
break;
}else{
if(tp.x==a.x){
imgArray[tp.x][tp.y]=imgArray[b.x][b.y];//将b点的图像的值往直角处映射
if(horizon(a,tp)){
isAble=true;
}
imgArray[tp.x][tp.y]=0;//映射之后还要改回0,否则会引起失
break;
}
}
}
}else{
for(i=a.x+1;i<(b.x+1);i++){
tp.x=i;
tp.y=a.y;
if(imgArray[i][a.y]!=0){
break;
}else{
if(tp.x==b.x){
imgArray[tp.x][tp.y]=imgArray[b.x][b.y];//将a点往直角处映射
if(horizon(tp,b)){
isAble=true;
}
imgArray[tp.x][tp.y]=0;//映射之后还要改回0,否则会引起失误
break;
}
}
}
}
if(a.y>b.y){
for(i=b.y+1;i<(a.y+1);i++){
// window.alert(b.x);
tp.x=b.x;
tp.y=i;
if(imgArray[b.x][i]!=0){
break;
}else{
if(tp.y==a.y){
imgArray[tp.x][tp.y]=imgArray[b.x][b.y];//将b点的图像的值往直角处映射
if(horizon(a,tp)){
isAble=true;
}
imgArray[tp.x][tp.y]=0;//映射之后还要改回0,否则会引起
break;
}
}
}
}else{
for(i=a.y+1;i<(b.y+1);i++){
tp.x=a.x;
tp.y=i;
if(imgArray[a.x][i]!=0){
break;
}else{
if(tp.y==b.y){
imgArray[tp.x][tp.y]=imgArray[b.x][b.y];//将a点往直角处映射
if(horizon(tp,b)){
isAble=true;
}
imgArray[tp.x][tp.y]=0;
break;
}
}
}
}
if(a.x<b.x){
for(i=b.x-1;i>(a.x-1);i--){
// window.alert(b.x);
tp.x=i;
tp.y=b.y;
if(imgArray[i][b.y]!=0){
break;
}else{
if(tp.x==a.x){
imgArray[tp.x][tp.y]=imgArray[b.x][b.y];//将b点的图像的值往直角处映射
if(horizon(a,tp)){
isAble=true;
}
imgArray[tp.x][tp.y]=0;//映射之后还要改回0,否则会引起失
break;
}
}
}
}else{
for(i=a.x-1;i>(b.x-1);i--){
tp.x=i;
tp.y=a.y;
if(imgArray[i][a.y]!=0){
break;
}else{
if(tp.x==b.x){
imgArray[tp.x][tp.y]=imgArray[b.x][b.y];//将a点往直角处映射
if(horizon(tp,b)){
isAble=true;
}
imgArray[tp.x][tp.y]=0;//映射之后还要改回0,否则会引起失误
break;
}
}
}
}
if(a.y<b.y){
for(i=b.y-1;i>(a.y-1);i--){
// window.alert(b.x);
tp.x=b.x;
tp.y=i;
if(imgArray[b.x][i]!=0){
break;
}else{
if(tp.y==a.y){
imgArray[tp.x][tp.y]=imgArray[b.x][b.y];//将b点的图像的值往直角处映射
if(horizon(a,tp)){
isAble=true;
}
imgArray[tp.x][tp.y]=0;//映射之后还要改回0,否则会引起
break;
}
}
}
}else{
for(i=a.y-1;i>(b.y-1);i--){
tp.x=a.x;
tp.y=i;
if(imgArray[a.x][i]!=0){
break;
}else{
if(tp.y==b.y){
imgArray[tp.x][tp.y]=imgArray[b.x][b.y];//将a点往直角处映射
if(horizon(tp,b)){
isAble=true;
}
imgArray[tp.x][tp.y]=0;
break;
}
}
}
}
}else{
isAble=false;
}
return isAble;
}
function twoCorners(a,b){
if(imgArray[a.x][a.y]!=imgArray[b.x][b.y])return false;
if(Aup(a,b)){
return true;
}else if(Adown(a,b)){
return true;
}else if(Aleft
Lianliankan-test.zip_源码
版权申诉
19 浏览量
2022-09-22
23:34:08
上传
评论
收藏 967KB ZIP 举报
邓凌佳
- 粉丝: 65
- 资源: 1万+
最新资源
- 基于JavaScript和CSS的随寻订购网页设计源码 - web-order
- 基于MATLAB的声纹识别系统设计源码 - VoiceprintRecognition
- 基于Java的微服务插件集合设计源码 - wsy-plugins
- 基于Vue和微信小程序的监理日志系统设计源码 - supervisionLog
- 基于Java和LCN分布式事务框架的设计源码 - tx-lcn
- 基于Java和JavaScript的茶叶评级管理系统设计源码 - tea
- IMG_5680.JPG
- IMG_0437.jpg
- 基于Java的JAVA项目分析工具设计源码 - JAVAProjectAnalysis
- top888.json
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论0