贪吃蛇课程设计报告.doc_第1页
贪吃蛇课程设计报告.doc_第2页
贪吃蛇课程设计报告.doc_第3页
贪吃蛇课程设计报告.doc_第4页
贪吃蛇课程设计报告.doc_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

hunan city universityweb应用与开发课程设计报告实验题目: 贪吃蛇 专 业: 信息管理与信息系统 学生姓名: 班级学号: 分组成员: 指导教师: 2012 年 6月8 日 web应用与开发课程设计报告xxxx一、设计时间 2012年6月4日-6月8日二、设计地点 信息科学与工程学院机房(新校区510机房)三、设计目的 综合运用在校期间所学理论知识和技能,设计开发贪吃蛇游戏,使自己熟悉应用系统的开发过程,培养独立思考能力,检验学习效果和动手能力,提高工程实践能力。四、设计小组成员xxxxx五、指导老师 xxxxxxxxxx六、设计课题 经过小组组员的讨论,决定选取选题8、贪吃蛇; 理由:1、整个系统简洁明了,适于初学者; 2、界面美观、功能较齐全; 3、操作简单、娱乐性强。七、基本思路及关键问题的解决方法;本系统主要是完成贪吃蛇游戏的基本操作。用户可以自己练习和娱乐。本系统需要满足以下几点要求:(1) 利用方向键来改变蛇的运行方向。 (2) 空格键暂停或继续游戏,并在随机的地方产生食物。 (3) 吃到食物就变成新的蛇体,碰到壁或自身则游戏结束,否则正常运行。八、算法及流程图1. 小蛇撞到自己2. 小蛇撞到墙小蛇是否吃到食物游戏开始显示小蛇于屏幕中检查小蛇是否发生阻碍游戏结束是在规定范围内随机产生食物接受按钮的控制信息小蛇移动时是否有阻碍加分移动小蛇九、调试过程中出现的问题及相应解决办法;在蛇的移动的表示上也不太清楚,找了一些资料后发现蛇身由一串基本图形构成,每过一秒,检测前面是什么,如果是空的,那么把头画成普通身体的样子,再在前方(或侧面,如果转弯的话)再画一个头,并将其坐标记入数组,数组要足够大,再把尾巴画成背景色;如果前面是食物,尾巴就不删除,这里的难点是数组里的操作和坐标的表示:把头添在最后一个元素,把第一个元素提取(也就是尾巴)。最后在排行榜和存档的读取问题上遇到了困难,在同学的帮助下解决了这个难题。十、课程设计心得体会;这次java课程设计让我重新认识到了编程的艺术,在学习、使用java的过程中,通过与以前所学的c/c+内容的对比,让我进一步巩固了c/c+的知识,并更进一步在总体上让我对编程语言有了更新的认识。在不断的设计、调试、修改的过程当中,我对程序的设计与构架在整体上有了长足的进步。在做java课程设计以前,我对java游戏开发只是停留在理论知识的水平上,是“纸上谈兵”,缺乏实际的软件开发经验。这次通过做java课程设计,我完成了贪吃蛇游戏的软件开发任务。在整个开发过程中遇到了很多问题,如蛇的移动的表示、排行榜和存档的读取问题、屏幕太闪烁的问题、图形化界面的设计问题,但最终都被我一一解决(本人有完整的项目需要的话发邮件给我491990141)十一、源程序(每句语言要有详细解释);贪吃蛇v.10 0906601-01、07、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, 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 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.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(!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 = 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(snake.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.speed); , /移动一节身体 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(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(); 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-; /向右 else 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+) 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.bodyi.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; , /用于调试 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: 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: 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 = colorscolorindex; ;点左边按钮或按enter开始/暂停游戏点左边按钮或按ctrl + 加速点左边按钮或按ctrl + 减速$(b

温馨提示

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

评论

0/150

提交评论