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>

2、遇到的问题

时间: 2024-10-13 12:46:12

33、任务三十三——棋盘的实现、正方体的移动效果的相关文章

Three.js纹理贴图正方体旋转动画效果

在线演示 使用three.js生成的正方体选装3D效果. 推荐使用chrome等现代浏览器观看(需要支持webGL) 如果大家对three.js 3D类库比较敢兴趣,请访问以下课程库: Javascript 3D类库three.js基础入门介绍 相关代码: var scene = new THREE.Scene(); var camera = new THREE.PerspectiveCamera(90, //vertical field of view (from bottom to top)

猫猫学IOS(三十三)UI之Quartz2D雪花飘落效果刷帧

猫猫分享,必须精品 原创文章,欢迎转载.转载请注明:翟乃玉的博客 地址:http://blog.csdn.net/u013357243?viewmode=contents 效果: 可以加入随机数实现真的飘落效果哦. 代码: -(id)initWithCoder:(NSCoder *)aDecoder { //请注意这里一定要先初始化父类的构造方法 if (self=[super initWithCoder:aDecoder]) { NSLog(@"initWithCoder:"); /

无废话ExtJs 入门教程十三[上传图片:File]

无废话ExtJs 入门教程十三[上传图片:File] extjs技术交流,欢迎加群(201926085) 1.代码如下: 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 <html xmlns="http://www.w3.org/199

HTML5 CSS3制作正方体3D效果

随着HTML5 CSS3的出现和发展,使得我们的网页可以实现更加复杂的效果,也使得我们的浏览体验更加丰富,所以今天我们将制作一个正方体的3D效果: 正方体需要六个面:那么我们就写一个ul列表,里面有六个li分别代表着正方体的六个面,而最外层的ul则可以作为这个正方体的参照物,代码如下: <ul> <li></li> <li></li> <li></li> <li></li> <li>&l

动画animation的三个应用(漂浮的白云、旋转的星球、正方体合成)

× 目录 [1]漂浮的白云 [2]旋转的星球 [3]正方体合成 前面的话 前面介绍过动画animation的详细用法,本文主要介绍动画animation的三个效果 漂浮的白云 [效果演示] [简要介绍] 漂浮的白云主要通过远景白云和近景白云来实现立体漂浮效果.远景和近景分别使用两张背景图片,通过改变其背景定位来实现白云移动效果,通过设置不同的动画持续时间来实现交错漂浮的效果 [主要代码] .box{ position: relative; height: 300px; width: 500px;

简单五子棋,没有电脑AI

刚学了C#委托,做了个五子棋练习,把前台绘制和后台逻辑分开,前台绘制方法用委托传给后台逻辑. 界面好简单... 先看类图 控制类控制整个游戏的逻辑,包括调用棋盘类的属性初始化棋盘.初始化两个棋手.轮流落子.棋盘里有一个二维数组保存整个棋盘的落子情况,棋手里也有一个二维数组保存自己的落子情况.方向类是为了方便判断输赢的. 下面是代码:注释很详细就不说明了: 主要控制类: 1 using System; 2 using System.Collections.Generic; 3 using Syst

(转) Linux的capability深入分析(2)

一)capability的工具介绍 在我们的试验环境是RHEL6,libcap-2.16软件包中包含了相关的capability设置及查看工作,如下: rpm -ql libcap-2.16-5.2.el6.i686 /lib/libcap.so.2 /lib/libcap.so.2.16 /lib/security/pam_cap.so /usr/sbin/capsh /usr/sbin/getcap /usr/sbin/getpcaps /usr/sbin/setcap /usr/share

我的小游戏之2048

八月初心血来潮,花了一天时间写了一个控制台版的2048.代码很烂,玩到后面会有延迟现象.先做下记录,以后有时间把移动和合并的代码再优化下. 代码如下: 1 #include<iostream> 2 #include <iomanip> 3 #include<cstring> 4 #include<cstdlib> 5 #include<ctime> 6 using namespace std; 7 8 class Board { 9 public

8.5 趣味游戏(2)

8-26 shuffle.c 1 #include <stdio.h> 2 typedef struct card 3 { 4 int Suit; //花色 5 char Number; //牌数 6 }Card; 7 Card card1[52]; //保存每张扑克的花色.数字 8 void ShowCard(); //显示牌 9 void Shuffle(); //洗牌 10 int main() 11 { 12 int i, suit1, temp; 13 suit1 = 2; 14 f