webapp-WEBAPP拼图小游戏问题

问题描述

WEBAPP拼图小游戏问题
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>网友涛涛分享原生js实现美女拼图游戏特效</title>
    <SCRIPT language=javascript src="js/jquery-2.1.1.min" type=text/javascript></SCRIPT>
    <style>
    *{margin:0;padding: 0;}
    input{margin: 10px;}
    img{border: none;height: 100%;width: 100%}
    div.container{width: 600px;height: 600px;position: absolute;left: 50%;top
    30px;margin-left: -300px}
    .container .active{border: 1px solid #00f;width: 148px;height: 148px;}
  .thumb{display: block;width: 200px;margin-left: 100px}
    </style>
</head>
<body>
      <center><input type='button'  value='开始' id='start'/></center>

      <div class="container" id='container'></div>
     <img class="thumb" src='./img/bg.jpg'/>
      <script>
    /*
    *author:涛涛
    *website:http://www.webrhai.com
    *data:2013/9/3
    */
       function Game(row,col){
           this.con=document.getElementById('container');
           this.item=[];
           this.conwidth=600;
           this.conheight=600;
           this.row=row||3;
           this.col=col||3;
           this.minwidth=this.conwidth/this.col;
           this.minheight=this.conheight/this.row;
           this.num=this.row*this.col;
           this.arr=[];//初始化数组;
           this.newarr=[];//随机图片数组;
           this.pos=[];//存放位置的
           this.init();
               this.len=this.arr.length;
           this.minIndex=10;
       };
       Game.prototype.init=function(){
              for(var i=1;i<=this.num;i++){
                this.arr.push(i);
              };
              this.newarr=this.arr.slice(0);
              var oFrag=document.createDocumentFragment();
              for(var i=0;i<this.num;i++){
                 var div=document.createElement('div');
                 div.style.cssText='cursor:move;background:url(./img/bg.jpg) no-repeat -'+(i%this.col)*this.minwidth+'px -'+Math.floor((i)/this.col)*this.minheight+'px;float:left;height:'+this.minheight+'px;width:'+this.minwidth+'px;';
                 this.item.push(div);
                 oFrag.appendChild(div);
              };
              this.con.appendChild(oFrag);
       };
      Game.prototype.isSuccess=function(){
           for(var i=0;i<this.len-1;i++){
              if(this.newarr[i]!=this.arr[i])
              {
                 return false;
              }
           };
           return true;
       };
       Game.prototype.startGame=function(){
           this.newarr.sort(function(a,b){
              return Math.random() > 0.5 ? 1 :-1;
           });
           for(var i=0;i<this.len;i++){

               this.pos[i]=[this.item[i].offsetLeft,this.item[i].offsetTop];
           };
           for(var i=0;i<this.len;i++){
              var n=this.newarr[i]-1;
              this.item[i].style.left=this.pos[i][0]+'px';
              this.item[i].style.top=this.pos[i][1]+'px';
              this.item[i].style.backgroundPosition='-'+(n % this.col)*this.minwidth+'px -'+Math.floor((n)/this.col)*this.minheight+'px';
              this.item[i].style.position='absolute';
              this.item[i].index=i;
              this.drag(this.item[i]);
           }
       }
       Game.prototype.drag=function(o){
          var self=this,near=null;
          o.addEventListener('touchmove', function (e) {
              //alert(11)
              var ev=window.event||e,
                  disX=ev.clientX-o.offsetLeft,
                  disY=ev.clientY-o.offsetTop;
              o.style.zIndex=self.minIndex++;
              document.addEventListener('touchend', function (e) {

                  var ev=window.event||e,
                  l=ev.clientX-disX,
                  t=ev.clientY-disY;

                  near=self.findNear(o);
                  if(near){
                      near.className='active';
                  }
                  o.style.left=l+'px';
                  o.style.top=t+'px';
              });
              document.addEventListener('touchend', function (e) {
                  if(near){
                      near.className='';
                      self.move(o,{left:self.pos[near.index][0],top:self.pos[near.index][1]});
                      self.move(near,{left:self.pos[o.index][0],top:self.pos[o.index][1]});

                      var temp=0;
                      temp=near.index;
                      near.index=o.index;
                      o.index=temp;

                      for(var i=0;i<self.len;i++){
                          self.arr[i]=(self.item[i].index+1);
                      }

                      if(self.isSuccess()){
                          self.tips()
                      }

                  }else{
                      self.move(o,{left:self.pos[o.index][0],top:self.pos[o.index][1]})
                  }
                  console.log(self.arr);

                  o.releaseCapture && o.releaseCapture();
                  document.touchmove=null;
                  document.touchend=null;
                  return false;
              });
              this.setCapture && this.setCapture();
              ev.preventDefault && ev.preventDefault();
          });
       };
       Game.prototype.move=function(o,json,fn){
           o.timer && clearInterval(o.timer);
           o.timer=setInterval(function(){
               var bStop=true;
               for(var i in json){
                   var iCur=css(o,i);
                   var iSpeed=(json[i]-iCur)/5;iSpeed=iSpeed>0 ? Math.ceil(iSpeed) : Math.floor(iSpeed);
                   if(json[i]!=iCur){
                      bStop=false;
                   };
                    o.style[i]=(iCur+iSpeed)+'px';

               };

                 if(bStop){
                      clearInterval(o.timer);
                      typeof fn=='function' && fn();
                   };

           },10);

           function css(o,attr){
              return o.currentStyle ? parseFloat(o.currentStyle[attr]) : parseFloat(getComputedStyle(o,false)[attr]);
           }

       };
       Game.prototype.tips=function(ts){
         var suc=document.createElement('div');
         var t=document.createElement('p');
         var tn=ts||3;
         var timer=null;
         suc.style.cssText='position:absolute;z-index:9999999;top:45%;width:100%;text-align:center;font-size:60px;color:#F56200;font-family:arial,黑体;';
         suc.innerHTML='亲你淫了!';
         suc.appendChild(t);
         this.con.appendChild(suc);
         function updatetime(){
            t.innerHTML=tn--;
            if(tn<=0){
                clearInterval(timer);
                window.location.reload();
                return;
            }
            timer=setTimeout(function(){
                updatetime();
            },1000)
         }
         updatetime();
       };
       Game.prototype.checkPZ=function(o1,o2){
           if(o1==o2)return;
           var l1=o1.offsetLeft,t1=o1.offsetTop,r1=o1.offsetWidth+l1,b1=o1.offsetHeight+t1;
           var l2=o2.offsetLeft,t2=o2.offsetTop,r2=o2.offsetWidth+l2,b2=o2.offsetHeight+t2;
           if(l1>r2 || t1>b2 || r1<l2 || b1<t2){
              return false;
           }
           else
           {
              return true;
           }
       };
       Game.prototype.findNear=function(o){
           var iMin=99999,index=-1;
           for(var i=0;i<this.len;i++){
               this.item[i].className='';
               if(this.checkPZ(o,this.item[i])){
                    var l=dis(o,this.item[i]);
                    if(iMin>l)
                    {
                         iMin=l;
                         index=i;
                    };
               }
           };
           if(index==-1){
              return null;
           }
           else
           {
             return this.item[index];
           };
           function dis(o1,o2){
              var c1=o1.offsetLeft-o2.offsetLeft,c2=o1.offsetTop-o2.offsetTop;
              return Math.sqrt(c1*c1+c2*c2);
           }
       };

       var  t=new Game(5,5);//行与列,值越大,难度越高
       document.getElementById('start').onclick=function(){
          t.startGame();
       }

      </script>

</body>
</html>

解决方案

想手指拖动方块,然后与另一个作交换

时间: 2024-12-09 09:09:55

webapp-WEBAPP拼图小游戏问题的相关文章

jQuery制作拼图小游戏

 这篇文章主要介绍了jQuery制作拼图小游戏,思路与源码都分享给大家,需要的朋友可以参考下     源代码思路分析: [一]如何生成图片网格,我想到两种方法: (1)把这张大图切成16张小图,然后用img标签的src (2)只有一张大图,然后每个元素的背景图用css的background-position进行切割定位,这样就需要16个数组[0,0],[-150,0],[-300,0]..........(我采用这种) [二]图片背景定位数组与布局定位数组 在选择了使用CSS定位切图,就需要生成

JS编程一个拼图小游戏

问题描述 如何用Javascript编写一个简单的拼图小游戏. 解决方案

jQuery制作拼图小游戏_jquery

源代码思路分析: [一]如何生成图片网格,我想到两种方法: (1)把这张大图切成16张小图,然后用img标签的src (2)只有一张大图,然后每个元素的背景图用css的background-position进行切割定位,这样就需要16个数组[0,0],[-150,0],[-300,0]..........(我采用这种) [二]图片背景定位数组与布局定位数组 在选择了使用CSS定位切图,就需要生成数据.      需要的css背景 定位数组为:[0,0],[-150,0],[-300,0],[-4

JS写的数字拼图小游戏代码[学习参考]_javascript技巧

复制代码 代码如下: <html> <head> <title>拼图</title> <style> td.numTd{ width : 20px ; height : 20px ; } div.numDiv{ width : 100% ; height : 100% ; background-color : #000 ; color : #FFF ; text-align : center ; vertical-align : middle ;

音频-我用java写了一个小游戏,想插入背景音乐但不太会,求指教

问题描述 我用java写了一个小游戏,想插入背景音乐但不太会,求指教 package text; import java.io.*; import javax.sound.sampled.*; public class text { public static void main(String[] args) { // TODO Auto-generated method stub //创建一个实例 AePlayWave apw = new AePlayWave("G:\照片\Sleep Awa

vb编程-用vb。net设计一个小游戏

问题描述 用vb.net设计一个小游戏 我想实现以下功能: 当单击某一个按钮时,如果其他按钮的颜色和这个按钮相同,则让这两个按钮消失,该怎么判断那个按钮是否和本按钮的颜色相同

WEBJX收集12个非常有创意的JavaScript小游戏

JavaScript 在Web开发过程中已经是必不可少的重要分子,他推动着Web的交互性往越来越高的层次发展,现在的很多Web游戏也基于这类语言开发. 这里是12个非常有创意的JavaScript小游戏,希望在给我们带来趣味的同时也能更进一步地了解更深层次的JavaScript语言,原来它可以这样的. Browser Pong Twitch Browser Ball Crystal Galazy Video & Picture Puzzle Apophis 2029 Bing-Bong Bomb

flash小游戏网站靠什么盈利?

目前国内flash小游戏网站,很多,而且很多已经做大,例如 4399.com 3839.com yx007.com xiaoyouxi.com 7733.com  gameyes.com .据统计,目前流量超过1000个ip的小游戏网站已经达到4000家,另外还有小游戏频道 例如play.zol.com.cn 这样的频道4000家. 这么多小游戏网站,靠什么生存,靠说明盈利呢?    小游戏网站主要受众是中小学生,他们本身没有消费能力,另外小游戏本身不具备掘金能力,所以不能从页面之外赚钱.   

手机小游戏网站SEO优化之长尾词篇

笔者的一个好朋友最近做了一个手机小游戏下载的网站,主要是提供手机小游戏下载,从智能开始流行开始,手机小游戏类的网站似乎也变多 了,个人站长做网站主要的收入来源是广告费用,比如:百度广告联盟.但有流量才有广告费用,手机小游戏下载的网站应该如何优化,笔者看了几个主关键词,像"手机小游戏"这样的词竞争都比较激烈,做起来比较困难.加上个人的精力和资源有限,那就很难做上去,一个网站大部分的流量来源于长尾词,众多的长尾词优化起来也比较费事费力,虽然个人不能与团队相比,但是也要想好了再开始执行.以下