简单拼图小游戏

突然想自己写点东西。于是趁无聊的时候写个拼图游戏~

首先上结果:


使用:html,  sass, vue ,弹出效果用layer. (本人比较懒~~)

思路:16个tr  15个class名。每个class名的背景 都是大图的一些块。移动效果,切换calss名而已~~

上代码:

html:


css( td   class名部分):


js:(vue的写法)

1.用一个数组储存小方块位置及移动状态监测。

data:{
listss:[],
rands:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],
isOk:false,
time:10,
timers:null
},

2.移动的判断

由于我SB地用了一个1维数组,于是我的判断就有点傻~~~

tomove:function(id,val){

//拼成功后阻止移动。
if(this.isOk){
return;
}
var num;
var i0;
var j0;

//先找到空白的格子。
for(var i=0;i<4;i++){
for(var j=0;j<4;j++){
if(this.listss[i][j].val==15){
num=this.listss[i][j].id;
i0=i;
j0=j;
}
}
}

//如果不是点击空白格子周围的4个格子,则return;
if(!(num==id-1 || num==id+1 ||num==id-4 || num==id+4)){
return; 

//分别点击上下左右 方位的判断。及修改 class名。        
}else if(num==id-1 && (num%4)!=3){
this.listss[i0][j0].val=val;
this.listss[i0][j0+1].val=15;
this.win();
}else if(num==id+1 && (num%4)!=0){
this.listss[i0][j0].val=val;
this.listss[i0][j0-1].val=15;
this.win();
}else if(num==id-4 && (num<12)){
this.listss[i0][j0].val=val;
this.listss[i0+1][j0].val=15;
this.win();
}else if(num==id+4 && (num>3)){
this.listss[i0][j0].val=val;
this.listss[i0-1][j0].val=15;
this.win();
}
},

3.拼图成功的判断:(所有位置都对应,则成功!)(其实应该是判断失败的,如果不相等,就return 好了~~~)(自己sb了)

win:function(){
var valId=0;
for(var i=0;i<4;i++){
for(var j=0;j<4;j++){
var value=this.listss[i][j].val;
if(this.listss[i][j].id==value){
valId++;
}
if(valId==16){
this.isOk=true;
clearInterval(this.timers);
return dialog.msg("恭喜!拼成功了!");
}
}
}
},


4.初始化的随机。第一个数随机,(当然所有都随机是最好的~)(我使用了一个比较懒得办法~)

bewrong:function(){
var num0=0;
var num=15;
var first;
var attr1=[];
var attr2=[];
var randss=this.rands;
for(var i= 0; i<16;i++){
first=Math.round(Math.random()*num);
var vals=randss[first];
var obj={
id:i,
val:vals
}
num--;
randss.splice(first,1);
attr1.push(obj);

}
for(var j=0;j<4;j++){
attr2=[];
attr2.push(attr1[num0]);
attr2.push(attr1[num0+1]);
attr2.push(attr1[num0+2]);
attr2.push(attr1[num0+3]);
num0+=4;
this.listss.push(attr2);
}
},



心得:

写一个东西得有规划。心中得有一个谱,这样下手的时候会很舒服。

其实,回过头来看这个拼图,有很多sb的地方。(就不一一举例了)

但是,随着看的深入,优化的想法自然而然地就出来了,所以不要讨厌看之前代码,现在看,认为很SB ,那是你进步的标志~。


转载于:https://juejin.im/post/5a728ad06fb9a01c927f0617

你可能感兴趣的:(简单拼图小游戏)