听指令的小方块

效果静态图

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

小方块移动的范围:

<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"}
    }
  }
}
时间: 2024-10-19 09:54:37

听指令的小方块的相关文章

百度前端技术学院task35源代码——听指令的小方块3

任务描述 如图,命令输入框由input变为textarea,可以允许输入多条指令,每一行一条 textarea左侧有一列可以显示当前行数的列(代码行数列),列数保持和textarea中一致 当textarea发生上下滚动时,代码行数列同步滚动 能够判断指令是否合法,不合法的指令给出提示(如图) 点击执行时,依次逐条执行所有命令 对于GO,TRA以及MOV指令增加可以移动格子数量的参数,例如 GO 3:向当前方向前进三格 TRA TOP 2:向屏幕上方平移两格 MOV RIG 4:方向转向屏幕右侧

百度前端学院task33源码及总结——听指令的小方块

任务描述 如图,实现一个类似棋盘的格子空间,每个格子用两个数字可以定位,一个红正方形的DOM在这个空间内,正方形中的蓝色边表示这是他的正面,有一个input输入框 在输入框中允许输入如下指令,按下按钮后,使得正方形做相应动作 GO:向蓝色边所面向的方向前进一格(一格等同于正方形的边长) TUN LEF:向左转(逆时针旋转90度) TUN RIG:向右转(顺时针旋转90度) TUN BAC:向右转(旋转180度) 移动不能超出格子空间 分析: 源代码: <!doctype html> <h

第八讲:HTML5中canvas实现小球击打小方块游戏

源代码:http://download.csdn.net/detail/liumingm900913/7469969 游戏开发流程: 1.创建画布: 将画布放在div标签里面,这样可以控制画布居中的位置,在对div标签加上一些样式,利于观看 <div id="main"> <!--将画布嵌在div块里面,使其可以居中--> <canvas id="liuming_canvas" width="300px" heigh

HTML5中canvas实现小球击打小方块游戏

源代码:http://download.csdn.net/detail/liumingm... 游戏开发流程: 1.创建画布: 将画布放在div标签里面,这样可以控制画布居中的位置,再对div标签加上一些样式比如border和border-radius,这样一来使其看上去像手机,利于观看. <div id="main"> <!--将画布嵌在div块里面,使其可以居中--> <canvas id="liuming_canvas" widt

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

1 <!doctype html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title>在当前显示区范围内实现点不到的小方块</title> 6 <style> 7 div{position:fixed;width:50px;height:50px; 8 background-color:pink; 9 } 10 </style> 11 1

jfreechart在Linux上出现乱码,小方块解决方案

window环境下出现乱码可能是jfreechart类库版本高.在Linux出现小方块乱码解决方式. 原因: jre缺少中文字库1.以root用户登录到系统,切换到jdk_home/jre/ lib/fonts目录下执行 mkdir fallback 新建一   个目录:2.把simsun.ttc 上传到fallback目录,执行 cp simsun.ttc simsun.ttf 复制一份: 点击simsun.ttc下载地址:http://files.cnblogs.com/jiabaode/s

Qt文件编程 换行处显示小方块问题【已解决】

使用Qt写一个hex合并程序,遇到了在window下换行显示小方块问题,如下图: 通过查看Qt自带的帮助文档关于openMode的介绍,找到解决办法: 在Qt的文件打开代码中都添加 | QIODevice::Text问题即可解决. 如下:

颜色随机的小方块

用碎片加载小方块实现简单的随机色块,直接上代码,如果你嫌麻烦,可以看demo:http://codepen.io/koringz/pen/QbZEwx /**/js注释已删 <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta charset="utf

Vue 2.x指令综合小练习

实现效果如下: 代码实现如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Vue的常用指令综合小练习</title> <style> #app { margin: 50px auto; width: 600px; } fieldset { border: 1px solid orange