贪吃蛇课程设计Word文档下载推荐.docx
《贪吃蛇课程设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《贪吃蛇课程设计Word文档下载推荐.docx(26页珍藏版)》请在冰豆网上搜索。
![贪吃蛇课程设计Word文档下载推荐.docx](https://file1.bdocx.com/fileroot1/2022-10/17/f41627b2-8fa5-48fb-ac93-af0bef1b7509/f41627b2-8fa5-48fb-ac93-af0bef1b75091.gif)
内容:
玩家可以通过键盘或鼠标控制游戏区。
游戏设定不同级别,级别越高难度越大,玩家可以根据自己的需要自由设定初始游戏级别,当玩家取得的分数到达一定水平时游戏自动进入下一个级别。
游戏以最终玩家获得的分数来判断玩家水平的高低。
使用Eclipse和JDK1.6工具,操作系统为WINDOWS,采用面向对象方法完成,包括总体设计、详细设计、编码实现、测试。
设计要求如下:
①游戏由模块组成:
游戏区模块,游戏控制模块,级别设置模块和帮助模块。
②游戏区模块,为玩家提供主体游戏功能,能够处理玩家的各种游戏操作,
显示得分情况,并最终显示游戏结果。
③游戏控制模块,该模块为玩家提供游戏控制功能,应包括开始游戏,暂停游戏和退出游戏三部分功能。
④级别设置模块为玩家提供自行设置游戏的初始级别功能,主要提供初级,中级和高级三个游戏初始级别设置。
三、原始资料
1.《面向对象程序设计课程设计》指导书
2.耿祥义.JAVA大学实用教程.北京:
清华大学出版社,2009.
四、要求的设计(调查/论文)成果
1.课程设计报告
2.课程设计软件
五、进程安排
布置任务,查找资料、需求分析2天
总体设计1天
详细设计2天
编制源程序实现4天
测试与修改1天
撰写课设报告2天
六、主要参考资料
[1]张广彬.Java课程设计案例精编(第二版).北京:
清华大学出版社,2011.
[2]耿祥义.Java课程设计(第二版).北京:
清华大学出版社,2008.
[3]耿祥义.JAVA大学实用教程.北京:
[4]邹林达.陈国君Java2程序设计基础.北京:
清华大学出版社,2010.
指导教师(签名):
20年月日
1需求与总体设计
1.1总体设计思路
本系统要进行的是贪吃蛇游戏的开发。
这个游戏是在窗口的平台上进行相关操作的。
为了满足大部分用户的要求,本游戏必须实现的功能有如下要求:
(1)贪吃蛇游戏是大家很常见的小游戏,在生活工作之余大家可以玩它,已达到放松各种压力的目的。
(2)游戏可以进行升级,也就是增加吃食物的难度,以便使大家更有挑战性,不觉得太无趣。
(3)游戏界面大小可以任意指定,数据从文件读入。
(4)利用swing实现良好的GUI界面。
(5)基本功能与要求:
给出1条小蛇和随机出一个食物当小蛇吃到食物时就加分.良好的用户界面,有分数显示,并且可调节小蛇运动速度。
良好的方块形状设计,绘制小蛇和食物,小蛇有六个方块组成,食物由1个方块组成。
小蛇可通过键盘方向键(上、下、左、右键)进行向上、向下、向左、向右移动。
当小蛇吃掉一个食物后会变长,并且吃完食物时食物会消失,并立即随即生成一个新的食物
.
1.2系统主要功能图
贪吃蛇实现的基本功能:
生成登录窗口界面,登录进入游戏,可以设置游戏的窗口大小和难度等级~游戏途中有暂停继续开始等基本功能。
同时还设有游戏帮助等具体游戏操作指示、在加入了软件开发人员的相关信息介绍~结束游戏之后得分在窗口下自动统计得出~
图1-1系统功能图
1.3系统主要类图
图1-2类图
2详细设计
2.1Login类
Login类,登陆界面要求输入登陆者输入用户名和密码,分别设Go和Cancel两个登陆选项。
2.1.1
Login
属性:
用户名密码
Go(进入游戏)Cancel(取消)
操作:
Enter()Close()
2.2SnakeFrame类
创建游戏窗口主界面。
采用图形界面设计,有窗体,菜单栏和游戏操作界面。
2.3SnakeModel类
此类为蛇的初始化状态及模型,所有的游戏的开始都通过此类初始化及对蛇的操作。
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)
2.4SnakePanel类
此类为游戏界面创建蛇的面板和蛇的移动控制实现
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)
2.5LocationRO类
随机生成的食物位置。
用来随机生成食物。
引导蛇的移动方向。
2.6Location类
对蛇的位置的描述类
Location
xy
Location(intx,inty),getX(),getY(),setX(intx),
setY(inty),equalOrRev(Locatione),equals(Locatione),
reverse(Locatione)
3编码实现
1.Login类
//登陆界面
publicclassLoginextendsJFrame{
privateTextFieldf1;
//创建文本框
privateTextFieldf2;
privateJButtonb1;
//创建按钮
privateJButtonb2;
publicLogin(){//登陆界面
Containercp=getContentPane();
//获取容器
cp.setLayout(newGridLayout(4,1));
//设置布局管理为网格四行一列
Labell1=newLabel("
用户名"
);
//创建标签了l1,l2
Labell2=newLabel("
密码"
Panelp1=newPanel();
//创建面板,p1,p2,p3,p4
Panelp2=newPanel();
Panelp3=newPanel();
MyPanel1p4=newMyPanel1();
//创建插入图片平面p4
f1=newTextField(10);
f2=newTextField(10);
f2.setEchoChar('
*'
//回显字符为*用于输入密码,设置为不可见
b1=newJButton("
确定"
//新建按钮b1,b2
b2=newJButton("
取消"
p1.add(l1);
//第一行添加label1
p1.add(f1);
p2.add(l2);
p2.add(f2);
p3.add(b1);
p3.add(b2);
cp.add(p4);
//面板p4,p1,p2,p3分别加入容器cp
cp.add(p1);
cp.add(p2);
cp.add(p3);
b1.addActionListener(newEnter());
//添加按钮事件响应
b2.addActionListener(newClose());
JFrame.setDefaultLookAndFeelDecorated(true);
SnakeFrameframe=newSnakeFrame();
//创建游戏主界面
frame.setSize(frame.col*11+11,frame.row*11+100);
frame.setResizable(false);
frame.setLocation(500,200);
//设置窗体位置
frame.setTitle("
疯狂贪吃蛇"
frame.setVisible(true);
}
elseJOptionPane.showMessageDialog(null,"
用户名或密码错误,请重新登录!
"
//错误用户提示
classCloseimplementsActionListener{//关闭登陆按钮响应
publicvoidactionPerformed(ActionEvente){
JButtonbt=(JButton)e.getSource();
if(bt==b2){
System.exit(0);
//退出
//主函数程序开始
publicstaticvoidmain(String[]args){
Loginlog=newLogin();
log.setTitle("
疯狂贪吃蛇界面登陆"
log.setBounds(500,200,300,300);
log.setBackground(Color.blue);
log.setVisible(true);
}
classMyPanel1extendsJPanel{//插入登陆界面图片
Imageimg=Toolkit.getDefaultToolkit().getImage("
imgs/201.jpg"
//添加图片
publicvoidpaint(Graphicsg){
g.drawImage(img,0,0,this);
2.SnakeFrame类
publicclassSnakeFrameextendsJFrameimplementsActionListener{
introw=30;