疯狂贪吃蛇java实现课程设计报告.docx
- 文档编号:1898368
- 上传时间:2023-05-02
- 格式:DOCX
- 页数:24
- 大小:172.63KB
疯狂贪吃蛇java实现课程设计报告.docx
《疯狂贪吃蛇java实现课程设计报告.docx》由会员分享,可在线阅读,更多相关《疯狂贪吃蛇java实现课程设计报告.docx(24页珍藏版)》请在冰点文库上搜索。
疯狂贪吃蛇java实现课程设计报告
)
安阳工学院
计算机科学与信息工程学院
-
JAVA程序设计课程综合项目报告
项目题目:
疯狂贪吃蛇
专业班级:
11计科信息
&
学生姓名:
潘强
学生学号:
0005
指导教师姓名:
许研
2013年12月
一、系统目标3
"
二、系统设计思路3
三、系统详细设计4
四、系统实现8
五、系统设计总结14
六、参考文献15
《
&
—
疯狂贪吃蛇
一、系统目标
运用java技术开发出贪吃蛇游戏,这个程序是用一个小矩形表示蛇的一节身体,身体每长一节,增加一个矩形块。
移动时必须从蛇头开始,也就是蛇尾不能改作蛇头。
当游戏者按了方向键后,蛇头朝着指定的方向移动,一步移动一节身体。
图形的实现是从蛇头的新位置开始画出蛇。
用户可以用上下左右键控制蛇头的方向。
非常简单!
可以实现如下功能:
1.贪吃蛇游戏是大家很常见的小游戏,在生活工作之余大家可以玩它,已达到放松各种压力的目的。
】
2.游戏可以进行升级,也就是增加吃食物的难度,以便使大家更有挑战性,不觉得太无趣。
3.游戏界面大小可以任意指定,数据从文件读入。
4.利用swing实现良好的GUI界面。
二、系统设计思路
1.贪吃蛇是很经典的格子游戏。
所谓格子游戏就是在设计游戏时的主要思想是每个设对象都是由格子组成,游戏运行界面也是由格子组成。
格子思想决定了此类游戏在设计时的算法思想。
2.方向键控制一个方块的移动的方法,一个方块的移动是靠移动其坐标位置来实现的。
3.方向键控制是上下左右对一个方块的控制,用四个判断语句实现。
4.蛇的移动算法思想可以看成是第一个方块移动,第二个方块移到第一个方块的位置,第三个方块移动到第二个方块的位置⋯⋯第N个方块移动到第N-1个方块的位置。
这样连续的移动就是蛇的移动了。
方向控制键控制了第一个方块的移动后,后面方块跟着移动,这样也实现了方向键控制对长蛇的移动。
?
5.食物的随机产生的方法食物的随机产生需要一个随机种子函数然后利用系统时间做为随机种子。
6.蛇的身体变长的方法当然要当蛇吃到食物时才能使身体变长。
因此有两个需要解决的问题:
问题一:
如何知道是否吃到食物问题二:
吃到食物后身体变长解决问题一的方法是需要一个判断语句,当蛇头即构成蛇的第一个方块跟食物所在方块的坐标一样时判断吃到食物。
解决问题二则要相对复杂一些,需要多个判断语句构成。
7.游戏结束的方法,当蛇碰到边框时或者吃到自己时游戏结束。
根据这个思想可以用判断语句实现。
然后是游戏结束后的处理,比如显示继续玩游戏还是退出游戏,并显示所吃到的食物的个数和时间等。
三、系统详细设计
【类的设计】
1>.创建的类的描述。
1.Login类,登陆界面要求输入登陆者输入用户名和密码,分别设Go和Cancel两个登陆选项。
Login
&
属性:
用户名密码
Go(进入游戏)Cancel(取消)
操作:
Enter()Close()
类,创建游戏窗口主界面。
采用图形界面设计,有窗体,菜单栏和游戏操作界面。
类,此类为蛇的初始化状态及模型,所有的游戏的开始都通过此类初始化及对蛇的操作。
SnakeModel
'
属性:
rows,cols,snakeHead,runingDiriction,locRO,snake,playBlocks
snakeFood,gameScore,AddScore
操作:
LocationROgetSnakeHead(),LocationROgetSnakeTail(),
LocationgetRuningDiriction(),LinkedListgetSnake(),
LinkedListgetOthers(),getScore(),getAddScore(),
setSnakeHead(LocationsnakeHead),LocationROgetSnakeFood(),setSnakeFood(),moveTo(Objecta,LinkedListfromlist,LinkedListtolist),
init(),SnakeModel(introws1,intcols1),move(Locationdirection)
4.SnakePanel类,此类为游戏界面创建蛇的面板和蛇的移动控制实现。
@
SnakePanel
属性:
gridsPanel,row;col;gridsPanel;direction;snake;snakeBody;otherBlocks;snakeHead;snakeFood;gameScore=0;speed;
AddScore;t;isEnd;notExit;
操作:
SnakePanel(SnakeFrameparent,introw,intcol),newGame(longspeed)
stopGame(),returnGame(),getGameScore(),updateTextFiled(Stringstr)
updateColors(),run(),keyPressed(KeyEventevent)
keyReleased(KeyEventevent),keyTyped(KeyEventevent)
}
change(SnakeFrameparent,introw2,intcol2)
5.LocationRO类,随机生成的食物位置。
用来随机生成食物。
引导蛇的移动方向。
6.Location类,对蛇的位置的描述类。
Location
属性:
xy
?
操作:
Location(intx,inty),getX(),getY(),setX(intx),
setY(inty),equalOrRev(Locatione),equals(Locatione),
reverse(Locatione)
2>.类之间的调用关系。
】
】
【用户界面】
1.登陆界面2.游戏主界面
/
【程序技巧】
1.为游戏设置权限,为游戏设置登陆界面。
2.游戏界面采用图形界面美观大方易操作。
3.功能齐全,可以选择开始,暂停,继续可以随时操控游戏状态,方便易操作,人性化设计。
4.设置菜单功能齐全,可以让界面显示网格和取消显示网格,还可以根据自己的实际能力情况选择游戏的等级。
5.窗口大小菜单可以根据自己的需要和爱好调整窗体的大小,可以选择大中小三种窗体。
适合不同的需要。
6.本程序设置了作者信息菜单可以查询程序的制作人的信息等。
/
7.对于新手用户,我为他们设置了操作指南菜单,帮助他们方便快捷的学会游戏的操作步骤。
【模块划分及调用关系】
主要模块
?
·
【模块流程图】
1.…
2.
游戏界面模块和登陆模块流程图。
,
*
>
2.游戏模块
【
否是
否
"
是
否
、
是
¥
四、系统实现
【测试数据】
1.游戏登陆测试,用户名:
杨文,密码:
123456.
2.进入主界面。
3.测试文件菜单;游戏开始,贪吃蛇窗墙则游戏结束;退出提示。
4.测试设置菜单。
5.测试窗口大小菜单。
6.测试作者信息菜单。
7.测试帮助菜单。
【输出结果】
1.登陆测试2.进入主界面
/
3.测试文件菜单
文件主界面1>.菜单/开始
2>.贪吃蛇窗墙则游戏结束3>.退出提示。
文件/退出。
)
4.测试设置菜单.5.测试窗口大小菜单。
6.测试作者信息菜单。
7.测试帮助菜单。
五、系统设计总结
通过一学期的学习,我自己认为自己学java没学好,而在整个新技术专题中我觉得贪吃蛇的游戏应该是最简单的。
通过这次课程设计,我对java又有了更深刻的认识。
也有了更深一步的喜爱,决定一定要努力学好java,并能更好的应用于以后的工作中。
这次贪吃蛇的设计,我做的不是很完美,也没想象中的那么好,但也获得了许多宝贵的经验:
1)在设计程序之前,务必要对自己所要设计的题目和内容有一个系统的,大概的了解,知道所设计的题目和内容包含哪些资源。
、
2)设计程序采用什么编程语言并不是非常重要,关键是要有一个清晰的思路和一个完整的软件流程图,所有要先把设计原理与思路搞清楚,再把流程图画出来,这样设计起来就简单多了。
3)在设计程序时,不能妄想一次就将整个程序设计好,“反复修改,不断改进”是程序设计的必经之路,发现错误也是取得成绩及成绩的一种必经之路。
4)要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而
应该让人一看就能明白自己的思路,这样也为资料的保存和交流提供了方便。
在以后的学习和工作中,我希望我能把这些经验应用起来。
为以后的工作顺利进行,也让自己获得一定的能力,能够拥有一份好的工作。
六、参考文献
[1]魏伟译.JBuilder开发人员指南[M].北京:
机械工业出版社,.
[2]胡雷,叶曙光,徐饪.JBuilder入门与提高[M].北京:
机械工业出版社,2004.
&
[3]田勇,孙新.Jbuilder开发人员指南[M].北京:
机械工业出版社,2001.
[4]李尊朝,苏军.Java语言程序设计(第二版)[M].北京:
中国铁道出版社2009.
[5]黄晓东.Java课程设计案例精编(第二版)[M].北京:
中国水利水电出版社,2008.
[6]陆光义,宋现锋.Java游戏编程导学[M].北京:
清华大学出版社.2004.
附件:
详细代码
1.Login类
packageSnakeGameDemo;
&
import登陆界面
publicclassLoginextendsJFrame{
privateTextFieldf1;quals("潘强")&&()).equals("123456")
&&bt==b1)
{
(true);
SnakeFrameframe=newSnakeFrame();etImage("imgs/");SnakeFrame类
|
packageSnakeGameDemo;
import;
publicclassSnakeFrameextendsJFrameimplementsActionListener{
introw=20;
intcol=30;
:
SnakePanelp=newSnakePanel(this,row,col);
JMenuBarmenubar=newJMenuBar();finalJCheckBoxMenuItemshowGridItem=newJCheckBoxMenuItem("显示网格");
JLabelscorelabel;+
"\n2:
单击菜单'文件->开始'开始游戏."+
"\n3:
单击菜单'文件->暂停'或者单击键盘空格键暂停游戏."+
"\n4:
单击菜单'文件->继续'继续游戏."+
"\n5:
单击菜单'设置->等级'可以设置难度等级."+
"\n6:
单击菜单'设置->显示网格'可以设置是否显示网格."+
(
"\n7:
红色为食物,吃一个得10分同时蛇身加长."+
"\n8:
蛇不可以出界或自身相交,否则结束游戏.";
SnakeFrame(){
setJMenuBar(menubar);
(newgameitem);
(stopitem);
(runitem);
)
(exititem);
(fileMenu);
(true);str);
}
etBackground(bodyColor);
}
etBackground(headColor);
etBackground(othersColor);
¥
}
etBackground(foodColor);
}
publicbooleanisFocusTraversable()
{
~
returntrue;
}
etBackground(othersColor);
add(gridsPanel[i][j]);
}
}
addKeyListener(this);
—
}
}
5.LocationRO
packageSnakeGameDemo;
publicclassLocationRO{
privateintx;
privateinty;
、
LocationRO(intx,inty){
=x;
=y;
}
intgetX(){
returnx;
}
/
intgetY(){
returny;
}
publicbooleanequalOrRev(LocationROe){
return(()==getX())&&()==getY()))
||(()==getX())&&()==-1*getY()))
《
||(()==-1*getX())&&()==getY()));
}
publicbooleanequals(LocationROe){
return()==getX())&&()==getY());
}
publicbooleanreverse(LocationROe){
return(()==getX())&&()==-1*getY()))
||(()==-1*getX())&&()==getY()));
}
}
6.Location类
packageSnakeGameDemo;
publicclassLocation{
privateintx;
privateinty;
Location(intx,inty){
=x;
=y;
}
intgetX(){
returnx;
}
intgetY(){
returny;
}
voidsetX(intx){
=x;
}
voidsetY(inty){
=y;
}
publicbooleanequalOrRev(Locatione){
return(()==getX())&&()==getY()))
||(()==getX())&&()==-1*getY()))
||(()==-1*getX())&&()==getY()));
}
publicbooleanequals(Locatione){
return()==getX())&&()==getY());
}
publicbooleanreverse(Locatione){
return(()==getX())&&()==-1*getY()))
||(()==-1*getX())&&()==getY()));
}
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 疯狂 贪吃 java 实现 课程设计 报告