引用的东西都很基础,注释也很多,这里就不多说了。

 <head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>贪吃蛇</title>
<!--css样式-->
<style type="text/css">
body{font-size:24px; border:none; cursor:pointer;}
#SnakeArea{ width:420px; height:420px; border:#600 solid 2px; margin-top:-15px; margin-left:-10px; background:url(image/23.jpg);}
#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;}
a{ color:#FFF;text-decoration:none;}
.onMouseMove{ text-decoration:underline; font-size:28px; background-color:#90F; border:2px #30F solid;}
.onMouseOut{ text-decoration:none; font-size:24px; border: none;}
</style>
<!--下面是本人使用JavaScript来编写贪吃蛇,课外做的课堂作业,求高手点评出缺点,提出自己的看法意见-->
<script type="text/javascript">
var keyValue;//获取键盘键值
var snakeId = 0;//蛇身体(控件)的id号
var loca = 0;//蛇身(控件)交换的索引
var speed = 500;//蛇移动的速度
var num = 1;//玩家的积分
window.onload = function Lond(){//初始化蛇的位置
var leftPoint = 10;
for(var i=0;i<3;i++){//初始化蛇的长度
var SnakeLond = SnakeBody();
SnakeLond.style.position = "absolute";
SnakeLond.style.top = "100px";
SnakeLond.style.left = leftPoint+"px";
leftPoint += 10;
document.body.appendChild(SnakeLond);//把创建的蛇添加到页面上去
}
Food();//初始化事物
}
function Random(){//获取食物的随机位置
return Math.floor(Math.random()*(40));//生成随机数
}
function SnakeBody(){//构造一个蛇身并设置其初始的属性值
var SnakeLond = document.createElement("input");
SnakeLond.setAttribute("type","button");//初始类型
SnakeLond.style.width = "20px";
SnakeLond.style.height = "20px";
SnakeLond.setAttribute("id",snakeId);
snakeId++;
return SnakeLond;
}
function Food(){//构造食物方法
var x;
var y;
var SnakeLond = document.createElement("input");//创建食物
SnakeLond.setAttribute("type","button");//食物的类型是button类型
SnakeLond.style.width = "20px";
SnakeLond.style.height = "20px";
SnakeLond.setAttribute("id","food");//id为food
x = Random() * 10;
y = Random() * 10;
SnakeLond.style.position = "absolute";//绝对定位
SnakeLond.style.top = x+"px";
SnakeLond.style.left = y+"px";
SnakeLond.style.background = "blue";
document.body.appendChild(SnakeLond);
}
function $(id){//返回指定id号的实例
return document.getElementById(id);
}
function KeyDown(){//键盘键入事件,获取从键盘输入而得到的键值
if(keyValue == 38 && event.keyCode == 40)
event.keyCode = 38;
else if(keyValue == 40 && event.keyCode == 38)
event.keyCode = 40;
else if(keyValue == 37 && event.keyCode == 39)
event.keyCode = 37
else if(keyValue == 39 && event.keyCode == 37)
event.keyCode = 39;
keyValue = event.keyCode
Stir();//蛇移动
EatFood();//蛇吃食
}
function EatFood(){//吃食方法
var SnakeHead = Head();
var score = $("score");
//var leng = document.getElementsByTagName("input").length-2;
var food = $("food");
var s = SnakeHead.style;
//如果蛇的头部与食物刚好对应的话就表示蛇吃到了食物,蛇的长度和速度就会增加,并且要重置定时器的速度
if(s.top == food.style.top && s.left == food.style.left){
speed -= 30;//速度发生改变
if(speed- 30 <= 30)
speed = 5;
clearInterval(time);//清除定时器
time = setInterval("Tir()",speed);//重置定时器
score.innerHTML = "积分:"+num;//积分增加
num++;
food.setAttribute("id",snakeId);
var x = parseInt(SnakeHead.style.top);
var y = parseInt(SnakeHead.style.left);
food.style.top = x+"px";//消化食物
food.style.left = y+"px";
snakeId++;
Food();
}
}
function SelfEnd(){//蛇自杀方法
var SnakeHead = Head();
var leng = document.getElementsByTagName("input").length-1;//得到蛇的长度
var SnakeItem = document.getElementsByTagName("input");//得到蛇身体所有的部位
var headTop = SnakeHead.style;
var head = $(SnakeItem.length-2);//得到蛇的头部
for(var i=0;i<SnakeItem.length;i++){//循环蛇的每个部位
var items = SnakeItem.item(i).style;
var id = SnakeItem.item(i).id;
//如果蛇的头部与蛇的其它部位相吻合的话就表示蛇咬到了自己
if(headTop.top == items.top && headTop.left == items.left && id<leng-2){
clearTimeout(time);
alert("<^GAME ^ OVER^>");//游戏结束
}
}
}
function BumpWall(){//蛇撞墙方法
var SnakeHead = Head();
var s = SnakeHead.style;
var top = parseInt(s.top);
var left = parseInt(s.left);
//如果蛇移动的坐标超过了边界,则蛇撞到了墙,游戏结束
if(top < 0 || top >= 410 || left < 0 || left >= 410){
clearTimeout(time);
alert("<^GAME ^ OVER^>");
}
}
function Stir(){//蛇移动方法
var pointx = 0;
var pointy = 0;
var leng = document.getElementsByTagName("input").length-1;
var SnakeHead = document.getElementById(leng-1);
var SnakeBody;//申明蛇的身体
var leftPoint = SnakeHead.style.left;
var topPoint = SnakeHead.style.top;
//设置蛇的样式
for(var i=0;i<leng;i++){
if(i==leng-1)
$(i).style.backgroundColor = "purple";
else
$(i).style.backgroundColor = "black";
}
//蛇根据你按下的上下左右键来进行移动行走
if(keyValue == 40){
pointy = parseInt(SnakeHead.style.top) + 10;
pointx = parseInt(SnakeHead.style.left);
}
else if(keyValue == 38){
pointy = parseInt(SnakeHead.style.top) - 10;
pointx = parseInt(SnakeHead.style.left);
}
else if(keyValue == 39){
pointx = parseInt(SnakeHead.style.left) + 10;
pointy = parseInt(SnakeHead.style.top);
}
else if(keyValue == 37){
pointx = parseInt(SnakeHead.style.left) - 10;
pointy = parseInt(SnakeHead.style.top);
}
else{
pointx = parseInt(SnakeHead.style.left) + 10;
pointy = parseInt(SnakeHead.style.top);
}
SnakeBody = $(loca);//得到蛇的各个身体
SnakeBody.style.left = leftPoint;
SnakeBody.style.top = topPoint;
loca++;
if(loca == leng-1)
loca = 0;
SnakeHead.style.left = pointx + "px";//蛇按照指定方向走动
SnakeHead.style.top = pointy + "px";
var snakeSpeed = $("speed");//用来记录蛇的坐标
snakeSpeed.innerHTML = "坐标:<br/>"+"X "+pointx+","+"Y "+pointy;
BumpWall();//调用蛇撞墙方法
SelfEnd();//调用蛇自杀方法
}
function Head(){//返回蛇的头部
var leng = document.getElementsByTagName("input").length-1;//蛇的长度
return document.getElementById(leng-1);//蛇的头部
}
function Pause(){//暂停方法
alert("暂停中......");
}
function Tir(){//计时器方法
Stir();
EatFood();
}
function onMouseMove(id){//鼠标移到指定选项的方法
var p = $(id);
p.className = "onMouseMove";
}
function onMouseOut(id){//鼠标移开指定选项的方法
var p = $(id);
p.className = "onMouseOut";
}
var time = setInterval("Tir()",speed);//定时器
</script>
</head> <body onkeydown="KeyDown()">
<div id="SnakeArea">
</div>
<!--游戏菜单-->
<div id="Menu">
<p style="color:#FF0;">游戏菜单</p>
<a href="Snake.html" id="start" onMouseMove="onMouseMove('start')" onMouseOut="onMouseOut('start')">重新开始</a>
<br/>
<p id="speed" onMouseMove="onMouseMove('speed')" onMouseOut="onMouseOut('speed')">坐标</p>
<p id="score" onMouseMove="onMouseMove('score')" onMouseOut="onMouseOut('score')">积分</p>
<p id="pause" onClick="Pause()" onMouseMove="onMouseMove('pause')" onMouseOut="onMouseOut('pause')">暂停</p>
<p id="end" onClick="javascript:window.close()" onMouseMove="onMouseMove('end')" onMouseOut="onMouseOut('end')">结束游戏</p>
</div>
</body>
</html>

View Snake

使用Javascript来编写贪食蛇(零基础)的更多相关文章

  1. 从零基础入门JavaScript(1)

    从零基础入门JavaScript(1) 1.1  Javascript的简史 1995年的时候   由网景公司开发的,当时的名字叫livescript    为了推广自己的livescript,搭了j ...

  2. 《零基础学JavaScript(全彩版)》学习笔记

    <零基础学JavaScript(全彩版)>学习笔记 二〇一九年二月九日星期六0时9分 前期: 刚刚学完<零基础学HTML5+CSS3(全彩版)>,准备开始学习JavaScrip ...

  3. 零基础JavaScript编码(二)

    任务目的 在上一任务基础上继续JavaScript的体验 学习JavaScript中的if判断语法,for循环语法 学习JavaScript中的数组对象 学习如何读取.处理数据,并动态创建.修改DOM ...

  4. 零基础JavaScript编码(一)

    任务目的 JavaScript初体验 初步明白JavaScript的简单基本语法,如变量.函数 初步了解JavaScript的事件是什么 初步了解JavaScript中的DOM是什么 任务描述 参考以 ...

  5. Javascript贪食蛇小游戏

    试玩:http://hovertree.com/game/9/ 贪吃蛇是一种风靡全球的小游戏,就是一条小蛇,不停地在屏幕上游走,吃各个方向出现的蛋,越吃越长.只要蛇头碰到屏幕四周,或者碰到自己的身子, ...

  6. JavaScript强化教程 - 六步实现贪食蛇

    1.首先创建div 并且给div加样式 <div id="pannel" style="width: 500px;height: 500px;z-index: 1; ...

  7. javascript入门视频第一天 小案例制作 零基础开始学习javascript

    JavaScript 是我们网页设计师必备的技能之一.我们主要用javascript来写的是网页特效.我们从零基础开始学习javascript入门. 但是,好的同学刚开始不知道怎么学习,接触js,因此 ...

  8. JavaScript贪食蛇游戏制作详解

    之前闲时开发过一个简单的网页版贪食蛇游戏程序,现在把程序的实现思路写下来,供有兴趣同学参考阅读. 代码的实现比较简单,整个程序由三个类,一组常量和一些游戏逻辑以外的初始化和控制代码组成,总共400多行 ...

  9. 网络安全(超级详细)零基础带你一步一步走进缓冲区溢出漏洞和shellcode编写!

    零基础带你走进缓冲区溢出,编写shellcode. 写在前面的话:本人是以一个零基础者角度来带着大家去理解缓冲区溢出漏洞,当然如果你是开发者更好. 注:如果有转载请注明出处!创作不易.谢谢合作. 0. ...

随机推荐

  1. [New Portal]Windows Azure Virtual Machine (19) 关闭Azure Virtual Machine与VIP Address,Internal IP Address的关系(1)

    <Windows Azure Platform 系列文章目录> 默认情况下,通过Azure Management Portal创建的Public IP和Private IP都是随机分配的. ...

  2. Windows Azure Virtual Machine (31) 迁移Azure虚拟机

    <Windows Azure Platform 系列文章目录> 为什么要写这篇Blog? 之前遇到过很多客户提问: (1)我之前创建的虚拟机,没有加入虚拟网络.现在需要重新加入虚拟机网络, ...

  3. html/css基础篇——GET和POST的区别

    本文前面部分转自木-叶的博文,后面有本人自己的一些总结和体会. 如果有人问你,GET和POST,有什么区别?你会如何回答? 我的经历 前几天有人问我这个问题.我说GET是用于获取数据的,POST,一般 ...

  4. Moon转告给你一个比Log4net更好日志框架--TracerX Logger 及其对应的日志查看器

    一.介绍 TracerX logger是一个易于上手,且拥有众多高级特性的.NET日志框架. 它能够发送输出结果到多目的地(循环文件.事件日志等....).它也能生成文本和二进制文件.它拥有一个强大的 ...

  5. var 的使用

    List<Enterprise> epList = ViewBag.epList; foreach (var item in epList){ //todo ... } 当 List< ...

  6. Visual Studio 2015正式企业(Enterprise)版

    “7月20日 23:30 Visual Studio 2015正式版正式发布,作为微软新一代开发利器,在全地球乃至全宇宙乃至全太阳系中最强大 且没有之一的IDE(上述描述来自微博用户评论)跨平台支持成 ...

  7. Entity Framework 实体框架的形成之旅--基于泛型的仓储模式的实体框架(1)

    很久没有写博客了,一些读者也经常问问一些问题,不过最近我确实也很忙,除了处理日常工作外,平常主要的时间也花在了继续研究微软的实体框架(EntityFramework)方面了.这个实体框架加入了很多特性 ...

  8. 十条jQuery代码片段助力Web开发效率提升

    JQuery是继prototype之后又一个优秀的Javascript库.它是轻量级的js库 ,它兼容CSS3,还兼容各种浏览器(IE 6.0+, FF 1.5+, Safari 2.0+, Oper ...

  9. javascript小数点后4舍5进

    toFixed();获得小数点后面多少为数字.四舍五入的方法. 例如: var floatNum = 5.234 var temp = floatNum.toFixed(1); -- temp = 5 ...

  10. 如何在MVC_WebAPI项目中的APIController帮助页面添加Web测试工具测试

    本文转载自:http://www.cnblogs.com/pmars/p/3673811.html 先看效果图: 以下是原文: 如何在帮助页面添加测试工具 上一篇我在ASP.NET里面添加了一个Hel ...