引用的东西都很基础,注释也很多,这里就不多说了。
  1 <head>
  2 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  3 <title>贪吃蛇</title>
  4 <!--css样式-->
  5 <style type="text/css">
  6     body{font-size:24px; border:none; cursor:pointer;}
  7     #SnakeArea{ width:420px; height:420px; border:#600 solid 2px; margin-top:-15px; margin-left:-10px; background:url(image/23.jpg);}
  8     #Menu{background-image:url(image/40.gif); width:200px; height:410px; border:#90C solid 2px; margin-left:420px; margin-top:-410px; color:#FFF; text-align:center;}
  9     a{ color:#FFF;text-decoration:none;}
 10     .onMouseMove{ text-decoration:underline; font-size:28px; background-color:#90F; border:2px #30F solid;}
 11     .onMouseOut{ text-decoration:none; font-size:24px; border: none;}
 12 </style>
 13 <!--下面是本人使用JavaScript来编写贪吃蛇,课外做的课堂作业,求高手点评出缺点,提出自己的看法意见-->
 14 <script type="text/javascript">
 15 var keyValue;//获取键盘键值
 16 var snakeId = 0;//蛇身体(控件)的id号
 17 var loca = 0;//蛇身(控件)交换的索引
 18 var speed = 500;//蛇移动的速度
 19 var num = 1;//玩家的积分
 20     window.onload = function Lond(){//初始化蛇的位置
 21         var leftPoint = 10;
 22         for(var i=0;i<3;i++){//初始化蛇的长度
 23             var SnakeLond = SnakeBody();
 24             SnakeLond.style.position = "absolute";
 25             SnakeLond.style.top = "100px";
 26             SnakeLond.style.left = leftPoint+"px";
 27             leftPoint += 10;
 28             document.body.appendChild(SnakeLond);//把创建的蛇添加到页面上去
 29         }
 30         Food();//初始化事物
 31     }
 32     function Random(){//获取食物的随机位置
 33         return Math.floor(Math.random()*(40));//生成随机数     
 34     }
 35     function SnakeBody(){//构造一个蛇身并设置其初始的属性值
 36         var SnakeLond = document.createElement("input");
 37         SnakeLond.setAttribute("type","button");//初始类型
 38         SnakeLond.style.width = "20px";
 39         SnakeLond.style.height = "20px";
 40         SnakeLond.setAttribute("id",snakeId);
 41         snakeId++;
 42         return SnakeLond;
 43     }
 44     function Food(){//构造食物方法
 45         var x;
 46         var y;
 47         var SnakeLond = document.createElement("input");//创建食物
 48         SnakeLond.setAttribute("type","button");//食物的类型是button类型
 49         SnakeLond.style.width = "20px";
 50         SnakeLond.style.height = "20px";
 51         SnakeLond.setAttribute("id","food");//id为food
 52         x = Random() * 10;
 53         y = Random() * 10;
 54         SnakeLond.style.position = "absolute";//绝对定位
 55         SnakeLond.style.top = x+"px";
 56         SnakeLond.style.left = y+"px";
 57         SnakeLond.style.background = "blue";
 58         document.body.appendChild(SnakeLond);
 59     }
 60     function $(id){//返回指定id号的实例
 61         return document.getElementById(id);
 62     }
 63     function KeyDown(){//键盘键入事件,获取从键盘输入而得到的键值
 64         if(keyValue == 38 && event.keyCode == 40)
 65             event.keyCode = 38;
 66         else if(keyValue == 40 && event.keyCode == 38)
 67             event.keyCode = 40;
 68         else if(keyValue == 37 && event.keyCode == 39)
 69             event.keyCode = 37
 70         else if(keyValue == 39 && event.keyCode == 37)
 71             event.keyCode = 39;
 72         keyValue = event.keyCode
 73         Stir();//蛇移动
 74         EatFood();//蛇吃食
 75     }
 76     function EatFood(){//吃食方法
 77         var SnakeHead = Head();
 78         var score = $("score");
 79         //var leng = document.getElementsByTagName("input").length-2;
 80         var food = $("food");
 81         var s = SnakeHead.style;
 82         //如果蛇的头部与食物刚好对应的话就表示蛇吃到了食物,蛇的长度和速度就会增加,并且要重置定时器的速度
 83         if(s.top == food.style.top && s.left == food.style.left){
 84             speed -= 30;//速度发生改变
 85             if(speed- 30 <= 30)
 86                 speed = 5;
 87             clearInterval(time);//清除定时器
 88             time = setInterval("Tir()",speed);//重置定时器
 89             score.innerHTML = "积分:"+num;//积分增加
 90             num++;
 91             food.setAttribute("id",snakeId);
 92             var x = parseInt(SnakeHead.style.top);
 93             var y = parseInt(SnakeHead.style.left);
 94             food.style.top = x+"px";//消化食物
 95             food.style.left = y+"px";
 96             snakeId++;
 97             Food();
 98         }
 99     }
100     function SelfEnd(){//蛇自杀方法
101         var SnakeHead = Head();
102         var leng = document.getElementsByTagName("input").length-1;//得到蛇的长度
103         var SnakeItem = document.getElementsByTagName("input");//得到蛇身体所有的部位
104         var headTop = SnakeHead.style;
105         var head = $(SnakeItem.length-2);//得到蛇的头部
106         for(var i=0;i<SnakeItem.length;i++){//循环蛇的每个部位
107             var items = SnakeItem.item(i).style;
108             var id = SnakeItem.item(i).id;
109             //如果蛇的头部与蛇的其它部位相吻合的话就表示蛇咬到了自己
110             if(headTop.top == items.top && headTop.left == items.left && id<leng-2){
111                 clearTimeout(time);
112                 alert("<^GAME ^ OVER^>");//游戏结束
113             }
114         }
115     }
116     function BumpWall(){//蛇撞墙方法
117         var SnakeHead = Head();
118         var s = SnakeHead.style;
119         var top = parseInt(s.top);
120         var left = parseInt(s.left);
121         //如果蛇移动的坐标超过了边界,则蛇撞到了墙,游戏结束
122         if(top < 0 || top >= 410 || left < 0 || left >= 410){
123             clearTimeout(time);
124             alert("<^GAME ^ OVER^>");
125         }
126     }
127     function Stir(){//蛇移动方法
128     var pointx = 0;
129     var pointy = 0;
130         var leng = document.getElementsByTagName("input").length-1;
131         var SnakeHead = document.getElementById(leng-1);
132         var SnakeBody;//申明蛇的身体
133         var leftPoint = SnakeHead.style.left;
134         var topPoint = SnakeHead.style.top;
135         //设置蛇的样式
136         for(var i=0;i<leng;i++){
137             if(i==leng-1)
138                 $(i).style.backgroundColor = "purple";
139             else
140                 $(i).style.backgroundColor = "black";
141         }
142         //蛇根据你按下的上下左右键来进行移动行走
143         if(keyValue == 40){
144             pointy = parseInt(SnakeHead.style.top) + 10;
145             pointx = parseInt(SnakeHead.style.left);
146         }
147         else if(keyValue == 38){
148             pointy = parseInt(SnakeHead.style.top) - 10;
149             pointx = parseInt(SnakeHead.style.left);
150         }
151         else if(keyValue == 39){
152             pointx = parseInt(SnakeHead.style.left) + 10;
153             pointy = parseInt(SnakeHead.style.top);
154         }
155         else if(keyValue == 37){
156             pointx = parseInt(SnakeHead.style.left) - 10;
157             pointy = parseInt(SnakeHead.style.top);
158         }
159         else{
160             pointx = parseInt(SnakeHead.style.left) + 10;
161             pointy = parseInt(SnakeHead.style.top);
162         }
163         SnakeBody = $(loca);//得到蛇的各个身体
164         SnakeBody.style.left = leftPoint;
165         SnakeBody.style.top = topPoint;
166         loca++;
167         if(loca == leng-1)
168             loca = 0;
169         SnakeHead.style.left = pointx + "px";//蛇按照指定方向走动
170         SnakeHead.style.top = pointy + "px";
171         var snakeSpeed = $("speed");//用来记录蛇的坐标
172         snakeSpeed.innerHTML = "坐标:<br/>"+"X "+pointx+","+"Y "+pointy;
173         BumpWall();//调用蛇撞墙方法
174         SelfEnd();//调用蛇自杀方法
175     }
176     function Head(){//返回蛇的头部
177         var leng = document.getElementsByTagName("input").length-1;//蛇的长度
178         return document.getElementById(leng-1);//蛇的头部
179     }
180     function Pause(){//暂停方法
181         alert("暂停中......");
182     } 
183     function Tir(){//计时器方法
184         Stir();
185         EatFood();
186     }
187     function onMouseMove(id){//鼠标移到指定选项的方法
188         var p = $(id);
189         p.className = "onMouseMove";
190     }
191     function onMouseOut(id){//鼠标移开指定选项的方法
192         var p = $(id);
193         p.className = "onMouseOut";
194     }
195     var time = setInterval("Tir()",speed);//定时器
196 </script>
197 </head>
198 
199 <body onkeydown="KeyDown()">
200     <div id="SnakeArea">
201     </div>
202     <!--游戏菜单-->
203     <div id="Menu">
204         <p style="color:#FF0;">游戏菜单</p>
205         <a href="Snake.html" id="start" onMouseMove="onMouseMove('start')" onMouseOut="onMouseOut('start')">重新开始</a>
206         <br/>
207         <p id="speed" onMouseMove="onMouseMove('speed')" onMouseOut="onMouseOut('speed')">坐标</p>
208         <p id="score" onMouseMove="onMouseMove('score')" onMouseOut="onMouseOut('score')">积分</p>
209         <p id="pause" onClick="Pause()" onMouseMove="onMouseMove('pause')" onMouseOut="onMouseOut('pause')">暂停</p>
210         <p id="end" onClick="javascript:window.close()" onMouseMove="onMouseMove('end')" onMouseOut="onMouseOut('end')">结束游戏</p>
211     </div>
212 </body>
213 </html>
View Snake

 

posted on 2013-11-22 13:27  翻滚的咸鱼  阅读(891)  评论(4编辑  收藏  举报