贪吃蛇游戏.docx
《贪吃蛇游戏.docx》由会员分享,可在线阅读,更多相关《贪吃蛇游戏.docx(10页珍藏版)》请在冰豆网上搜索。
![贪吃蛇游戏.docx](https://file1.bdocx.com/fileroot1/2023-1/5/50b40dc0-a1f8-4574-98ce-361d3b2467bc/50b40dc0-a1f8-4574-98ce-361d3b2467bc1.gif)
贪吃蛇游戏
_2015-2016_学年实践学期学生实践报告
2016年8月22日—2016年9月19日
项目名称:
小型游戏开发
指导教师:
课题:
贪吃蛇
系别:
计算机系
专业班级:
学号:
学生姓名:
目录
目录2
第1章开发背景3
1.1课题背景3
1.2设计目的3
1.3开发计划3
1.4实践环境3
第2章总体设计方案2
2.1程序功能2
2.2设计思想2
2.3总体设计框图2
第3章具体实现3
3.1背景的设计3
3.2战机设计3
第4章系统测试4
第5章实践总结与体会5
第1章开发背景
1.1课题背景
随着科技的发展,现在手机的功能已不仅仅是简单的打接电话、收发短信了。
更多的手机用户希望在工作、学习之余通过方便灵巧可随身携带的仪器休闲娱乐。
因此,为了迎合众多用户的需求并适应现在手机的规模,我们开发出一套适合各阶层人士的具有很强的娱乐性和交互性的贪吃蛇小游戏。
贪吃蛇,之所以取这样的名字,去用意还是很明显的.贪吃蛇其实并不贪,它是人不断向前追求的象征.就像现代的人只有不断努力向前才能得到自己想要的。
而食物也是随机出现的,就像现在社会存在的机会,而我们只有找好自己的目标才能成功。
虽然现在市面上存在着各种各样的游戏版本,可是贪吃蛇其市场还是相当大的。
因为它的特殊在于它能吸引人更深入,爱不释手.随着游戏速度不断加快,其刺激性也更强。
可以说该游戏的优势在于它的简单易行,不论是手机,还是小游戏机,都能很快顺利的运行。
对于在外忙碌的人,不可能花费大量时间在娱乐上,大型游戏是行不通的。
这样的小游戏刚好迎合了他们的需求。
1.2设计目的
通过该款游戏的开发,将所学的面向对象的程序设计思想应用到实际具体的学习与工作中。
本课程的程序设计专题实际是计算机相关专业学生学习完JAVA课程后,进行的一次全面的综合训练,JAVA程序设计的设计目的是加深对理论教学内容的理解和掌握,使学生较系统地掌握程序设计及其在网络开发中的广泛应用,基本方法及技巧,为学生综合运用所学知识,利用软件工程为基础进行软件开发、并在实践应用方面打下一定基础。
游戏的主界面应该力求美观,爽心悦目,以提高玩家对游戏的兴趣。
游戏的控制模块应该做到易懂、易操作,以给玩家一个很好的游戏环境。
1.3开发计划
编写java程序实现贪吃蛇游戏。
在游戏中,背景不断变化,蛇可以上下左右移动,可以吃到食物后,身体变长。
当蛇没有吃到食物且碰到墙壁或自己的身体时游戏结束
第一周:
设计贪吃蛇的大体框架
第二周:
完成游戏的基本功能制作
第三周:
保证游戏的有效运行
第四周:
游戏的功能完善
1.4实践环境
操作系统:
Windows8
开发工具:
MyEclipse10
第2章总体设计方案
2.1程序功能
本程序是一个利用Java应用软件制作的贪食蛇小游戏。
在游戏过程中,用户通过点击小键盘区的方向键来控制蛇的运行方向,当蛇没有吃到食物且碰到墙壁或自己的身体时游戏结束。
本程序的另一个功能是在程序运行窗口的左上角显示,用户在游戏过程中所得的分数
2.2设计思想
这个游戏的关键点是设计蛇移动过程中吃到食物,当贪吃蛇吃到食物后,身体变长,增加一节。
a)在窗口能正确显示食物、贪吃蛇、背景格子等信息。
raphics绘图技术
能使用Graphics类进行绘制字符串、图片、矩形等,如游戏中的背景、食物、贪吃蛇等。
b)能接收键盘输入的方向键信息,根据不同的方向进行不同的反应,如按下上下左右键控制贪吃蛇的移动方向等。
c)当贪吃蛇吃到食物后,身体变长,增加一节。
d)游戏胜负判断功能。
当游戏达到一定程度(撞墙或蛇头碰到蛇身)时,要有一定的动作。
如显示胜利窗口,或显示是否继续游戏的提示等。
2.3总体设计框图
(1)主控模块:
由mian函数调用,依次调用各个层次模块
(2)游戏界面:
由Frame构造的窗体
(3)游戏过程:
键盘上下左右控制蛇移动,吃到食物后增长
(4)结束处理:
当蛇没有吃到食物且碰到边界或碰撞到自己的身体时,游戏结束。
(5)结束提示显示:
提示用户游戏已结束
(6)结束提示显示:
提示用户游戏已结束退出:
可以直接点击游戏窗体关闭
第3章具体实现
3.1背景的设计
背景采用灰色第底面,,设计如下图所示:
具体实现代码如下:
(粘贴主要代码)
publicstaticfinalintROWS=40;
publicstaticfinalintCOLS=40;
publicstaticfinalintBLOCK_SIZE=20;
publicvoidlaunch(){
this.setLocation(200,200);
this.setSize(COLS*BLOCK_SIZE,ROWS*BLOCK_SIZE);
publicvoidpaint(Graphicsg){
Colorc=g.getColor();
g.setColor(Color.GRAY);
g.fillRect(0,0,COLS*BLOCK_SIZE,ROWS*BLOCK_SIZE);
g.setColor(Color.BLACK);
//画出横线
for(inti=1;ig.drawLine(0,BLOCK_SIZE*i,COLS*BLOCK_SIZE,BLOCK_SIZE*i);
}
//画出竖线
for(inti=1;ig.drawLine(BLOCK_SIZE*i,0,BLOCK_SIZE*i,BLOCK_SIZE*ROWS);
}
g.setColor(Color.YELLOW);
g.drawString("score:
"+score,10,60);
if(gameOver){
g.setFont(fontGameOver);
g.drawString("游戏结束",260,250);
g.drawString("得分:
"+this.score,260,350);
}
g.setColor(c);
s.eat(e);
e.draw(g);
s.draw(g);
}
3.2贪吃蛇设计
蛇身刚开始的时候只有一节,吃到食物后增长一节
具体实现代码如下:
(粘贴主要代码)
privateclassNode{
intw=Yard.BLOCK_SIZE;
inth=Yard.BLOCK_SIZE;
introw,col;
Dirdir=Dir.L;
Nodenext=null;
Nodeprev=null;
publicvoidaddToHead(){
Nodenode=null;
switch(head.dir){
caseL:
node=newNode(head.row,head.col-1,head.dir);
break;
caseU:
node=newNode(head.row-1,head.col,head.dir);
break;
caseR:
node=newNode(head.row,head.col+1,head.dir);
break;
caseD:
node=newNode(head.row+1,head.col,head.dir);
break;
}
node.next=head;
head.prev=node;
head=node;
size++;
}
第4章系统测试
运行该程序,效果如下图所示:
键盘上下左右控制蛇移动,吃到食物后增长
界面右侧能够出现分数显示
当蛇没有吃到食物且碰到边界或碰撞到自己的身体时,游戏结束。
界面中间能够出现游戏结束提示和分数显示
程序运行正常,没有发现什么错误,可以运行自如。
第5章实践总结与体会
这次贪吃蛇的设计,我做的不是很完美,也没想象中的那么好,但也获得了许多宝贵的经验:
1) 在设计程序之前,务必要对自己所要设计的题目和内容有一个系统的,大概的了解,知道所设计的题目和内容包含哪些资源。
2) 设计程序采用什么编程语言并不是非常重要,关键是要有一个清晰的思路和一个完整的软件流程图,所有要先把设计原理与思路搞清楚,再把流程图画出来,这样设计起来就简单多了。
3) 在设计程序时,不能妄想一次就将整个程序设计好,“反复修改,不断改进”是程序设计的必经之路,发现错误也是取得成绩及成绩的一种必经之路。
4) 要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而 应该让人一看就能明白自己的思路,这样也为资料的保存和交流提供了方便。
在以后的工作中,我希望我能把这些经验应用起来。
为以后的工作顺利进行,也让自己获得一定的能力,能够拥有一份好的工作。
通过这次试验,让我学到很多没有接触过的很多知识,完成一个贪吃蛇的项目;第一步就是先理清思路,设计主界面,主界面是以一块封闭的画布,并在画布内设计蛇体和食物。
蛇头如果碰到墙或者与蛇身的某一部分碰到就会死亡;如果蛇头碰到食物,就会自动增加一节蛇身,并更改得分。
想要写出好的程序,还是要有扎实的基础,这样遇到问题就不会一筹莫展来。
在编程时我们要有想象力,不要拘泥于现有的贪吃蛇游戏,而是要把自己想到的再加上所学的知识,遇到问题不能怕,而是要专心找出问题的原因,再回来看看书本的知识,不懂的还可以问问老师。
编程过程还要养成良好的编程习惯,这样不仅自己能够很好看懂自己的代码,也让人家容易看懂自己的代码,而不至于代码知识自己会看,出来问题只有自己会解决而其他人都不会解决;遇到问题时要考虑最简单的解决方案,只有简单的方案不能满足要求时再考虑复杂的方案。
最主要编程还是要多与人沟通,不会的不能立即问别人,但是一段时间后解决不了时还是应该向别人请教请教,“三人行必有我师”正是这个意思。
通过这次课程设计,我对这学期所学的JAVA语言程序设计有一个更深刻的了解,将所学的知识应用于实践,由于所学知识有限,为了使游戏能够实现自己预先的构想,我通过上网和去图书馆找程序,比较好的流程图及功能模块,不断阅读修改代码使程序达到预期所要实现的目标,完成课程设计后,可以感觉到自己对Java程序的又有了新的认识。
总之,通过本次的课程设计,使我平时学到的理论知识得到了很好地升华,理论与实际得到一次很好的结合,为我今后参加工作打下了坚实的基础,使我受益匪浅。