zoukankan      html  css  js  c++  java
  • 33、任务三十三——棋盘的实现、正方体的移动效果

    0、题目

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

    1、解题过程

      1 <!DOCTYPE html>
      2 <html>
      3   <head>
      4     <meta charset="UTF-8">
      5     <title>IFE JavaScript Task 33</title>
      6     <style>
      7     table{
      8         border-spacing: 0;
      9         border:2px solid black;
     10         margin:10px auto 30px auto;
     11     }
     12     td{
     13         border:1px solid rgba(128, 128, 128, 0.35);
     14         width:40px;
     15         height:40px;
     16         opacity: 0.9;
     17         box-sizing: border-box;
     18     }
     19     form{
     20         width:400px;
     21         margin:auto;
     22     }
     23     .selected{
     24         background-color:red;
     25     }
     26     .top{
     27         border-top:10px solid blue;
     28     }
     29     .right{
     30         border-right:10px solid blue;
     31     }
     32     .back{
     33         border-bottom:10px solid blue;
     34     }
     35     .left{
     36         border-left:10px solid blue;
     37     }
     38     button{
     39         margin:10px;
     40         width:73px;
     41     }
     42     </style>
     43   </head>
     44 <body>
     45 <table id="table">
     46 </table>     
     47 <form id="buttons">    
     48     <button id="go">go</button>
     49     <button id="left">left</button>
     50     <button id="right">right</button>
     51     <button id="back">back</button>
     52 </form>
     53 <script type="text/javascript">
     54 function $(id){
     55     return document.getElementById(id);
     56 }
     57 var position={
     58     x:6,
     59     y:6,
     60     direc:1 //上1, 右2,后3,左4
     61 };
     62 //点击不同按钮
     63 $('buttons').addEventListener("click",function(e){
     64     e.preventDefault();
     65     switch(e.target.id){
     66         case'go':{
     67             var x=position.x,
     68                 y=position.y,
     69                 direc=position.direc;
     70             if(x==1&&direc==1||y==10&&direc==2||x==10&&direc==3||y==1&&direc==4) return;
     71             else go(); 
     72             break;
     73         }
     74         case'left':{
     75             if(position.direc>1) position.direc-=1;
     76             else position.direc=4;
     77             direction();
     78             break;
     79         }
     80         case'right':{
     81             if(position.direc<4) position.direc+=1;
     82             else position.direc=1;
     83             direction();
     84             break;
     85         }
     86         case'back':{
     87             var direc=position.direc;
     88             if(direc==1||direc==3) position.direc=4-direc;
     89             else position.direc=6-direc;
     90             direction();
     91             break;
     92         }
     93     }
     94 });
     95 //点击go
     96 function go(){
     97     var a=position.x*10+position.y,
     98         IDa='td'+a;
     99         $(IDa).className='';
    100     if(position.direc==1){
    101         position.x-=1;
    102         var b=position.x*10+position.y,
    103             IDb='td'+b;
    104         $(IDb).className='selected top';
    105     } 
    106     else if(position.direc==2){
    107         position.y+=1;
    108         var b=position.x*10+position.y,
    109             IDb='td'+b;
    110         $(IDb).className='selected right';
    111     }
    112     else if(position.direc==3){ 
    113         position.x+=1;
    114         var b=position.x*10+position.y,
    115             IDb='td'+b;
    116         $(IDb).className='selected back';
    117     }
    118     else if(position.direc==4){
    119         position.y-=1;
    120         var b=position.x*10+position.y,
    121             IDb='td'+b;
    122         $(IDb).className='selected left';
    123     }    
    124 } 
    125 //显示表明方向的蓝色边框
    126 function direction(c){
    127     var c=position.x*10+position.y,
    128         idc='td'+c,
    129         IDc=$(idc);
    130         IDc.className='';
    131     if(position.direc==1){
    132         IDc.className='selected top';
    133     } 
    134     if(position.direc==2){
    135         IDc.className='selected right';
    136     }
    137     if(position.direc==3){ 
    138         IDc.className='selected back';
    139     }
    140     if(position.direc==4){
    141         IDc.className='selected left';
    142     }
    143 }
    144 //生成棋盘
    145 function origin(){
    146     var resultTr='';
    147     for(var i=1;i<11;i++){
    148         var resultTd='';
    149         for(var j=1;j<11;j++){
    150             var number=10*i+j;
    151             resultTd+="<td id='td"+number+"'></td>";
    152         }
    153         resultTr+='<tr>'+resultTd+'</tr>';
    154     }
    155     $('table').innerHTML=resultTr;
    156     //定义格子6-6的初始样式
    157     $("td66").className='selected top';
    158 };
    159 origin();
    160 </script>
    161 </body>
    162 </html>
    View Code

    2、遇到的问题

  • 相关阅读:
    Spring 中的重试机制,简单、实用!
    Docker 常用命令,还有谁不会?
    Java 对象不使用时为什么要赋值为 null?
    为什么 Nginx 比 Apache 更牛叉?
    你还在用命令看日志?快用 Kibana 吧,一张图片胜过千万行日志!
    golang如何体现面向对象思想
    golang 三⾊标记+GC混合写屏障机制
    Golang中逃逸现象-变量何时 栈何时堆
    golang调度器原理与GMP模型设计思想
    golang 程序内存分析方法
  • 原文地址:https://www.cnblogs.com/cjlalala/p/5983000.html
Copyright © 2011-2022 走看看