听指令的小方块

Posted U0U悠悠U0U

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了听指令的小方块相关的知识,希望对你有一定的参考价值。

效果静态图

通过输入指令,修改小方块的方向,使用键盘的上下左右四个键移动小方块。

小方块移动的范围:

<div class="box">
  <div class="background">
    <div class="line00"></div>
    <div class="line01"></div>
    <div class="line02"></div>
    <div class="line03"></div>
    <div class="line04"></div>
    <div class="line05"></div>
    <div class="line06"></div>
    <div class="line07"></div>
    <div class="line08"></div>
    <div class="line09"></div>

    <div class="line10"></div>
    <div class="line11"></div>
    <div class="line12"></div>
    <div class="line13"></div>
    <div class="line14"></div>
    <div class="line15"></div>
    <div class="line16"></div>
    <div class="line17"></div>
    <div class="line18"></div>
    <div class="line19"></div>

    <div class="line20"></div>
    <div class="line21"></div>
    <div class="line22"></div>
    <div class="line23"></div>
    <div class="line24"></div>
    <div class="line25"></div>
    <div class="line26"></div>
    <div class="line27"></div>
    <div class="line28"></div>
    <div class="line29"></div>

    <div class="line30"></div>
    <div class="line31"></div>
    <div class="line32"></div>
    <div class="line33"></div>
    <div class="line34"></div>
    <div class="line35"></div>
    <div class="line36"></div>
    <div class="line37"></div>
    <div class="line38"></div>
    <div class="line39"></div>

    <div class="line40"></div>
    <div class="line41"></div>
    <div class="line42"></div>
    <div class="line43"></div>
    <div class="line44"></div>
    <div class="line45"></div>
    <div class="line46"></div>
    <div class="line47"></div>
    <div class="line48"></div>
    <div class="line49"></div>

    <div class="line50"></div>
    <div class="line51"></div>
    <div class="line52"></div>
    <div class="line53"></div>
    <div class="line54"></div>
    <div class="line55"></div>
    <div class="line56"></div>
    <div class="line57"></div>
    <div class="line58"></div>
    <div class="line59"></div>

    <div class="line60"></div>
    <div class="line61"></div>
    <div class="line62"></div>
    <div class="line63"></div>
    <div class="line64"></div>
    <div class="line65"></div>
    <div class="line66"></div>
    <div class="line67"></div>
    <div class="line68"></div>
    <div class="line69"></div>

    <div class="line70"></div>
    <div class="line71"></div>
    <div class="line72"></div>
    <div class="line73"></div>
    <div class="line74"></div>
    <div class="line75"></div>
    <div class="line76"></div>
    <div class="line77"></div>
    <div class="line78"></div>
    <div class="line79"></div>

    <div class="line80"></div>
    <div class="line81"></div>
    <div class="line82"></div>
    <div class="line83"></div>
    <div class="line84"></div>
    <div class="line85"></div>
    <div class="line86"></div>
    <div class="line87"></div>
    <div class="line88"></div>
    <div class="line89"></div>

    <div class="line90"></div>
    <div class="line91"></div>
    <div class="line92"></div>
    <div class="line93"></div>
    <div class="line94"></div>
    <div class="line95"></div>
    <div class="line96"></div>
    <div class="line97"></div>
    <div class="line98"></div>
    <div class="line99"></div>

    <!-- 小方块 -->
<div class="current" id="active"> <div class="top"></div> <div class="bottom"></div> </div> </div> <div class="row"> <div>1</div> <div>2</div> <div>3</div> <div>4</div> <div>5</div> <div>6</div> <div>7</div> <div>8</div> <div>9</div> <div>10</div> </div> <div class="line"> <div>1</div> <div>2</div> <div>3</div> <div>4</div> <div>5</div> <div>6</div> <div>7</div> <div>8</div> <div>9</div> <div>10</div> </div> </div>

js

var deg= 0,direction=1;
function animt(x){
  var active=document.getElementById("active");
  active.style.transform=\'rotate(\'+x+\'deg)\';
  active.style.mozTransform=\'rotate(\'+x+\'deg)\';
  active.style.webkitTransform=\'rotate(\'+x+\'deg)\';
  active.style.msTransform=\'rotate(\'+x+\'deg)\';
  active.style.oTransform=\'rotate(\'+x+\'deg)\';
}

function startRun() {
  var order = document.getElementById("input").value.toUpperCase();
  console.log(order);
  switch (order) {
    case "TURNLEFT":
      animt(deg -= 90);
      break;
    case "TURNRIGHT":
      animt(deg += 90);
      break;
    case "TURNBACK":
      animt(deg -= 180);
      break;
    default:
      return;
  }
}

function judge(){
  if(deg>=0){
    if(deg%360==0){
      return  direction=1;
    }else if((deg-90)%360==0){
      return  direction=2;
    }else if((deg-180)%360==0){
      return  direction=3;
    }else if((deg-270)%360==0){
      return  direction=4;
    }
  }else if(deg<0){
    if(deg%360==0){
      return  direction=1;//top
    }else if((deg+270)%360==0){
      return  direction=2;//right
    }else if((deg+180)%360==0){
      return  direction=3;//bottom
    }else if((deg+90)%360==0){
      return  direction=4;//left
    }
  }
}

window.onload=function(){
  //37,38,39,40左上右下键
  var active=document.getElementById("active"),
      top=active.offsetTop,
      left=active.offsetLeft;
  document.onkeydown=function(event){
    judge();
    var e=event || window.event || arguments.callee.caller.arguments[0];
    if((e && e.keyCode == 37)&&(direction==4)){
      if(left<=0){return;}else{active.style.left=(left-=50)+"px"}
    }else if((e && e.keyCode == 38)&&(direction==1)){
      if(top<=0){return;}else{active.style.top=(top-=50)+"px"}
    }else if((e && e.keyCode == 39)&&(direction==2)){
      if(left>=450){return;}else{active.style.left=(left+=50)+"px"}
    }else if((e && e.keyCode == 40)&&(direction==3)){
      if(top>=450){return;}else{active.style.top=(top+=50)+"px"}
    }
  }
}

演示
 

以上是关于听指令的小方块的主要内容,如果未能解决你的问题,请参考以下文章

我的世界获得石英块的指令?

C++俄罗斯方块

Flex textArea 删除/替换无效的小方块

我的世界海绵的代码是啥

xCode 5:我在 UIButton 选择上得到一个半透明的小方块

JavaScript-在当前显示区范围内实现点不到的小方块