《Java程序设计》课程设计
2需求分析和总体设计
2.1 需求分析与设计思路 2.1.1关键技术说明
贪吃蛇游戏是一种简单的大众的游戏,自从计算机实现以来,深受广大电脑玩家的喜爱,做一个简单的贪吃蛇小游戏。
贪吃蛇的核心算法时如何实现移动和吃掉食物,没有碰到食物的时候,把当前运动方向上的下个节点入队,并以蛇节点的颜色绘制这个节点,然后把头指针所指的节点出队,并以游戏框架内部背景色重绘出队的节点,这样就可以达到移动的效果。而在吃到食物的时候,则只需把食物入队即可。实现贪吃蛇的基本的蛇身移动、吃到食物身体增长、和碰到墙壁或自身死亡,能够暂停和开始。 本次设计我将主要运用java语言来完成。Java语言是一种跨平台,适合于分布式计算环境的面向对象编程语言,用Java写的应用程序不用修改就可在不同的软硬件平台上运行。
2.1.2需求分析
本软件是针对贪吃蛇小游戏的Java程序,利用方向键来改变蛇的运行方向,空格键暂停或继续游戏,并在随机的地方产生食物,吃到食物就变成新的蛇体,碰到壁或自身则游戏结束,否则正常运行。
2.1.3系统目录结构说明
对系统包结构、文件结构列表说明,如表2-1、2-2所示。 表2-1 文件名 Dir.java Egg.java Snack.java Yard.java 作用 指蛇的运动方向 代表食物,实现组成蛇身的单位---食物 代表蛇,该文件实现蛇类 代表蛇的活动区域 2.2 系统功能设计 2.2.1 蛇、食物的表示
2
《Java程序设计》课程设计
我们可以把显示区域想象成一个大大地表格,里面的格子就是组成蛇的基本单位,一个格子代表一个食物,也可以代表蛇身的一部分,几块连在一起就是一条蛇。
2.2.2 蛇的移动
蛇向前移动一步,可以看作是蛇头前面增加了一个节点,蛇的尾巴上少了一个节点(即去尾部加头部)
2.2.3 蛇的移动方向
这里讨论蛇的移动方向控制。蛇的下一步移动到哪里,是由方向来控制的。这里我们用L,U,R,D代表蛇运动的4个方向。
2.2.4 如何显示蛇身
显示蛇身,其实就是填充,即用颜色填充格子。
2.2.5 蛇身的移动方向
(1)相反方向
和上一次移动的方向相反的方向是相反方向,这种输入应该被忽略。这样可以防止蛇从自己的身体中穿过。
(2)无效方向
在蛇的这一次移动之后和下一次移动之前这个时间间隔内输入多个非相反方向,只是最后一个是有效方向,其他的都是无效方向。 蛇的最终运动方向以有效方向为准。
2.2.6 吃到食物的判定
这里是判定蛇头是否和食物重合就可以了,因为蛇的身体都是走蛇头走过的地方。
3
《Java程序设计》课程设计
3详细设计
3.1 系统模块实现 3.1.1 英雄榜模块实现 一、 实现原理
点击游戏菜单下的扫雷英雄榜,弹出排行榜,有相应等级(初级、中级、高级)和成绩(扫雷完成时间)及玩家姓,开始时成绩都为999,玩家都为匿名,顺利完成一局扫雷后会自动弹出 提示框提示输入姓名,提交后再次打开排行榜,刚刚提交的等级,成绩和玩家会改变和保存。
二、 关键代码分析
public class ShowWin extends JDialog {
private JLabel jlabel1;//级别、成绩、玩家标签
private JLabel jlabel2; private JLabel jlabel3;
private JLabel jlabel4;//初、中、高三个级别标签 private JLabel jlabel5; private JLabel jlabel6;
private JLabel time1;//初、中、高三个最短时间 private JLabel time2; private JLabel time3;
private JLabel name1;//初、中、高三个最短时间玩家姓名 private JLabel name2; private JLabel name3;
private JButton jbutton1;//确定和重新设置2个按钮 private JButton jbutton2; private SartFrame sartsrame; private JPanel jpanel;
public ShowWin(SartFrame sartsrame){ }
4
this.sartsrame=sartsrame;
this.setTitle(\扫雷排行榜\);//左上角对话框名字 this.setVisible(true);
this.setSize(220,210);//设置对话框长和宽 this.setResizable(false);
this.setLocationRelativeTo(sartsrame);
this.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); init();
《Java程序设计》课程设计
public JLabel getJLabel1() { }
public void setJLabel1(JLabel jlabel1) { }
public JLabel getJLabel2() { }
public void setJLabel2(JLabel jlabel2) { }
public JLabel getJLabel3() { }
public void setJLabel3(JLabel jlabel3) { }
public JLabel getJLabel4() { }
public void setJLabel4(JLabel jlabel4) { }
public JLabel getJLabel5() { }
public void setJLabel5(JLabel jlabel5) { }
public JLabel getJLabel6() { }
public void setJLabel6(JLabel jlabel6) { }
public JLabel getTime1() { }
public void setTime1(JLabel time1) { }
public JLabel getTime2() {
return time2;
5
return jlabel1;
this.jlabel1 = jlabel1;
return jlabel2;
this.jlabel2 = jlabel2;
return jlabel3;
this.jlabel3 = jlabel3;
return jlabel4;
this.jlabel4 = jlabel4;
return jlabel5;
this.jlabel5 = jlabel5;
return jlabel6;
this.jlabel6 = jlabel6;
return time1;
this.time1 = time1;

