贪吃蛇课程设计报告

上传人:1888****888 文档编号:37913910 上传时间:2021-11-05 格式:DOC 页数:12 大小:123.01KB
收藏 版权申诉 举报 下载
贪吃蛇课程设计报告_第1页
第1页 / 共12页
贪吃蛇课程设计报告_第2页
第2页 / 共12页
贪吃蛇课程设计报告_第3页
第3页 / 共12页
资源描述:

《贪吃蛇课程设计报告》由会员分享,可在线阅读,更多相关《贪吃蛇课程设计报告(12页珍藏版)》请在装配图网上搜索。

1、HUNAN CITY UNIVERSITYWEB应用与开发课程设计报告实验题目: 贪吃蛇 专 业: 信息管理与信息系统 学生姓名: 班级学号: 分组成员: 指导教师: 2012 年 6月8 日 WEB应用与开发课程设计报告XXXX一、设计时间 2012年6月4日-6月8日二、设计地点 信息科学与工程学院机房(新校区510机房)三、设计目的 综合运用在校期间所学理论知识和技能,设计开发贪吃蛇游戏,使自己熟悉应用系统的开发过程,培养独立思考能力,检验学习效果和动手能力,提高工程实践能力。四、设计小组成员XXXXX五、指导老师 XXXXXXXXXX六、设计课题 经过小组组员的讨论,决定选取选题8、贪

2、吃蛇; 理由:1、整个系统简洁明了,适于初学者; 2、界面美观、功能较齐全; 3、操作简单、娱乐性强。七、基本思路及关键问题的解决方法;本系统主要是完成贪吃蛇游戏的基本操作。用户可以自己练习和娱乐。本系统需要满足以下几点要求:(1) 利用方向键来改变蛇的运行方向。 (2) 空格键暂停或继续游戏,并在随机的地方产生食物。 (3) 吃到食物就变成新的蛇体,碰到壁或自身则游戏结束,否则正常运行。八、算法及流程图1. 小蛇撞到自己2. 小蛇撞到墙小蛇是否吃到食物游戏开始显示小蛇于屏幕中检查小蛇是否发生阻碍游戏结束是在规定范围内随机产生食物接受按钮的控制信息小蛇移动时是否有阻碍加分移动小蛇九、调试过程中

3、出现的问题及相应解决办法;在蛇的移动的表示上也不太清楚,找了一些资料后发现蛇身由一串基本图形构成,每过一秒,检测前面是什么,如果是空的,那么把头画成普通身体的样子,再在前方(或侧面,如果转弯的话)再画一个头,并将其坐标记入数组,数组要足够大,再把尾巴画成背景色;如果前面是食物,尾巴就不删除,这里的难点是数组里的操作和坐标的表示:把头添在最后一个元素,把第一个元素提取(也就是尾巴)。最后在排行榜和存档的读取问题上遇到了困难,在同学的帮助下解决了这个难题。十、课程设计心得体会;这次java课程设计让我重新认识到了编程的艺术,在学习、使用Java的过程中,通过与以前所学的C/C+内容的对比,让我进一

4、步巩固了C/C+的知识,并更进一步在总体上让我对编程语言有了更新的认识。在不断的设计、调试、修改的过程当中,我对程序的设计与构架在整体上有了长足的进步。在做java课程设计以前,我对Java游戏开发只是停留在理论知识的水平上,是“纸上谈兵”,缺乏实际的软件开发经验。这次通过做java课程设计,我完成了贪吃蛇游戏的软件开发任务。在整个开发过程中遇到了很多问题,如蛇的移动的表示、排行榜和存档的读取问题、屏幕太闪烁的问题、图形化界面的设计问题,但最终都被我一一解决(本人有完整的项目需要的话发邮件给我491990141)十一、源程序(每句语言要有详细解释);贪吃蛇v.10 0906601-01、07、

5、08贪吃蛇 v.10 0906601-01、07、08 body font-size:9pt; table border-collapse: collapse; border:solid #333 1px; td height: 10px; width: 10px; font-size: 0px; .filled background-color:blue; function $(id)return document.getElementById(id); /贪吃蛇类 var Snake = tbl: null, /* * body: 蛇身,数组放蛇的每一节, * 数据结构x:x0, y:y0

6、, color:color0, * x,y表示坐标,color表示颜色 */ body: , /当前移动的方向,取值0,1,2,3, 分别表示向上,右,下,左, 按键盘方向键可以改变它 direction: 0, /定时器 timer: null, /速度 speed: 250, /是否已经暂停 paused: true, /行数 rowCount: 30, /列数 colCount: 30, /初始化 init: function() var colors = red,orange,yellow,green,blue,purple,#ccc; this.tbl = $(main); var

7、x = 0; var y = 0; var colorIndex = 0; /产生初始移动方向 this.direction = Math.floor(Math.random()*4); /构造table for(var row=0;rowthis.rowCount;row+) var tr=this.tbl.insertRow(-1); for(var col=0;colthis.colCount;col+) var td=tr.insertCell(-1); /产生20个松散节点 for(var i=0; i10; i+) x = Math.floor(Math.random()*this

8、.colCount); y = Math.floor(Math.random()*this.rowCount); colorIndex = Math.floor(Math.random()*7); if(!this.isCellFilled(x,y) this.tbl.rowsy.cellsx.style.backgroundColor = colorscolorIndex; /产生蛇头 while(true) x = Math.floor(Math.random()*this.colCount); y = Math.floor(Math.random()*this.rowCount); if

9、(!this.isCellFilled(x,y) this.tbl.rowsy.cellsx.style.backgroundColor = black; this.body.push(x:x,y:y,color:black); break; this.paused = true; /添加键盘事件 document.onkeydown= function(e) if (!e)e=window.event; switch(e.keyCode | e.which | e.charCode) case 13: if(Snake.paused) Snake.move(); Snake.paused =

10、 false; else /如果没有暂停,则停止移动 Snake.pause(); Snake.paused = true; break; case 37:/left /阻止蛇倒退走 if(Snake.direction=1) break; Snake.direction = 3; break; case 38:/up /快捷键在这里起作用 if(event.ctrlKey) Snake.speedUp(-20); break; if(Snake.direction=2)/阻止蛇倒退走 break; Snake.direction = 0; break; case 39:/right if(S

11、nake.direction=3)/阻止蛇倒退走 break; Snake.direction = 1; break; case 40:/down if(event.ctrlKey) Snake.speedUp(20); break; if(Snake.direction=0)/阻止蛇倒退走 break; Snake.direction = 2; break; , /移动 move: function() this.timer = setInterval(function() Snake.erase(); Snake.moveOneStep(); Snake.paint(); , this.s

12、peed); , /移动一节身体 moveOneStep: function() if(this.checkNextStep()=-1) clearInterval(this.timer); alert(Game over!nPress Restart to continue.); return; if(this.checkNextStep()=1) var _point = this.getNextPos(); var _x = _point.x; var _y = _point.y; var _color = this.getColor(_x,_y); this.body.unshift(

13、x:_x,y:_y,color:_color); /因为吃了一个食物,所以再产生一个食物 this.generateDood(); return; /window.status = this.toString(); var point = this.getNextPos(); /保留第一节的颜色 var color = this.body0.color; /颜色向前移动 for(var i=0; ithis.body.length-1; i+) this.bodyi.color = this.bodyi+1.color; /蛇尾减一节, 蛇尾加一节,呈现蛇前进的效果 this.body.pop

14、(); this.body.unshift(x:point.x,y:point.y,color:color); /window.status = this.toString(); , /探寻下一步将走到什么地方 pause: function() clearInterval(Snake.timer); this.paint(); , getNextPos: function() var x = this.body0.x; var y = this.body0.y; var color = this.body0.color; /向上 if(this.direction=0) y-; /向右 el

15、se if(this.direction=1) x+; /向下 else if(this.direction=2) y+; /向左 else x-; /返回一个坐标 return x:x,y:y; , /检查将要移动到的下一步是什么 checkNextStep: function() var point = this.getNextPos(); var x = point.x; var y = point.y; if(x=this.colCount|y=this.rowCount) return -1;/触边界,游戏结束 for(var i=0; ithis.body.length; i+)

16、if(this.bodyi.x=x&this.bodyi.y=y) return -1;/碰到自己的身体,游戏结束 if(this.isCellFilled(x,y) return 1;/有东西 return 0;/空地 , /擦除蛇身 erase: function() for(var i=0; ithis.body.length; i+) this.eraseDot(this.bodyi.x, this.bodyi.y); , /绘制蛇身 paint: function() for(var i=0; ithis.body.length; i+) this.paintDot(this.bod

17、yi.x, this.bodyi.y,this.bodyi.color); , /擦除一节 eraseDot: function(x,y) this.tbl.rowsy.cellsx.style.backgroundColor = ; , paintDot: function(x,y,color) this.tbl.rowsy.cellsx.style.backgroundColor = color; , /得到一个坐标上的颜色 getColor: function(x,y) return this.tbl.rowsy.cellsx.style.backgroundColor; , /用于调试

18、 toString: function() var str = ; for(var i=0; ithis.body.length; i+) str += x: + this.bodyi.x + y: + this.bodyi.y + color: + this.bodyi.color + - ; return str; , /检查一个坐标点有没有被填充 isCellFilled: function(x,y) if(this.tbl.rowsy.cellsx.style.backgroundColor = ) return false; return true; , /重新开始 restart:

19、 function() if(this.timer) clearInterval(this.timer); for(var i=0; ithis.rowCount;i+) this.tbl.deleteRow(0); this.body = ; this.init(); this.speed = 250; , /加速 speedUp: function(time) if(!this.paused) if(this.speed+time2000) return; this.speed +=time; this.pause(); this.move(); , /产生食物。 generateDood

20、: function() var colors = red,orange,yellow,green,blue,purple,#ccc; var x = Math.floor(Math.random()*this.colCount); var y = Math.floor(Math.random()*this.rowCount); var colorIndex = Math.floor(Math.random()*7); if(!this.isCellFilled(x,y) this.tbl.rowsy.cellsx.style.backgroundColor = colorscolorInde

21、x; ;点左边按钮或按Enter开始/暂停游戏点左边按钮或按Ctrl + 加速点左边按钮或按Ctrl + 减速$(btn).onclick = function()if(Snake.paused)Snake.move();Snake.paused = false;elseSnake.pause();Snake.paused = true;$(reset).onclick = function()Snake.restart();this.blur();$(upSpeed).onclick = function()Snake.speedUp(-20);$(downSpeed).onclick =

22、function()Snake.speedUp(20);参考文献1夏士兵,钱江.构建基于COM+的分布式Web应用J.微型机与应用,2001(6):8-9.2美Richard Anderson, Chris Blexrud著,刘福太,张立民,金慧琴,梁发麦等译.ASP3高级编程M.北京:机械工业出版社,2000.408-458.3耿祥义,张跃平.JSP实用教程. 清华大学出版社,2003年5月1日:1-354.4BruceEckel.JSP编程思想. 机械工业出版社,2003年10月:1-378.5FLANAGAN.JSP技术手册. 中国电力出版社,2002年6月:1-465.6孙一林,彭波.JSP数据库编程实例. 清华大学出版社,2002年8月:30-210.7LEE ANNE PHILLIPS.巧学活用HTML4.电子工业出版社,2004年8月:1-319.8飞思科技产品研发中心.JSP应用开发详解.电子工业出版社,2003年9月:32-300.

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!