结对项目

https://github.com/kongxiangyu/test/blob/master/tanchishe

一、题目简介:

贪吃蛇游戏设计与实现,主要分为以下二个模块:游戏主界面模块和游戏控制模块。在此只实现游戏的游戏主界面模块、游戏控制模块。并且只是实现移动速度、暂停、重新开始等功能。

二、github地址:

https://github.com/kongxiangyu/test/blob/master/tanchishe

 

三、程序流程图

本次游戏设计的处理流程如图1所示。

 

 

 

 

 

 

 

 

 

 

 

 

 

四、总设计模块的划分

根据游戏需求中游戏所要实现的功能,整个游戏分为二个模块进行具体的设计,如图2所示。

 

 

 

 


 

 

 

 

 

 

 

 

 

 

   游戏控制模块的主要框架如图3所示。

 

 

 

 

 

 

 

 

 

 

 

 

游戏暂停控制:点击“F3”按钮,游戏暂停;再单击,游戏继续。

游戏重新开始控制:点击“F2”键后,点击确定,即游戏重新开始。

游戏退出控制:点击“F4”键好,点击确定,退出游戏界面。

 

五、类、方法、属性说明

(1)成员变量

表1 主要成员变量(属性)

成员变量描述

变量类型

名称

文件菜单中子菜单“新建”

JMenuItem

mFile_New

编辑菜单中子菜单“撤消”

JMenuItem

mEdit_Undo

格式菜单中子菜单“颜色”

JMenu

formatMenu_Color

帮助菜单中子菜单“帮助主题”

MenuItem

mHelp_HelpTopics

(2)方法

表2 主要方法

方法名

功能

备注

Notepad4()

描述记事本

Text.setBackground(Color.black)

设置编辑区默认背景色

Text.setForeground(Color.black)

设置编辑区默认前景色

六、设计结果与分析

本程序在运行后,能够正常的相应按键事件。由于程序的主要部分已经集成为一个对象SnakeModel,所以利用键盘就可以实现操作。蛇前行的过程中,可以任意向其左或右方向改变方向。点击F3键后游戏就暂停了。点击F2键游戏重新开始。点击F4游戏退出。运行结果如下图4所示:

 

 

 

 

 

 

 

 

 

 

 

   图4 程序运行图  

当蛇没有吃到食物且碰到边界或碰撞到自己的身体时,游戏结束。如果想重新开始即点击“确定”后按F2键,运行结果如下图5所示:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

七、程序异常处理

在蛇的运行线程过程中,当蛇撞到墙或自己的身体时,将抛出一个Exception类的异常对象,然后使用try-catch去捕捉这个异常,

异常的处理如下:

try{  Thread.sleep(timeInterval); } catch(Exception e)  {  break; 

}

八、junit-4测试

1.首先新建一个项目叫JUnit_Test1,我们编写一个Calculator

 

public class Calculator ...{

    private static int result; // 静态变量,用于存储运行结果

    public void add(int n) ...{

        result = result + n;

    }

    public void substract(int n) ...{

        result = result - 1;  //Bug: 正确的应该是 result =result-n

    }

    public void multiply(int n) ...{

    }         // 此方法尚未写好

    public void divide(int n) ...{

        result = result / n;

    }

    public void square(int n) ...{

        result = n * n;

    }

    public void squareRoot(int n) ...{

        for (; ;) ;            //Bug : 死循环

    }

    public void clear() ...{     // 将结果清零

        result = 0;

    }

    public int getResult() ...{

        return result;

    }

}

 

2.第二步,将JUnit4单元测试包引入这个项目:在该项目上点右键,点属性,如图:

 

在弹出的属性窗口中,首先在左边选择“Java Build Path”,然后到右上选择“Libraries”标签,之后在最右边点击“Add Library…”按钮,如下

然后在新弹出的对话框中选择JUnit4并点击确定,如上图所示,JUnit4软件包就被包含进我们这个项目了。

 

    第三步,生成JUnit测试框架:在EclipsePackage Explorer中用右键点击该类弹出菜单,选择“New à JUnit Test Case”。如下图所示:

点击下一步后,系统会自动列出你这个类中包含的方法,选择你要进行测试的方法。

第四步,运行测试代码:按照上述代码修改完毕后,我们在CalculatorTest类上点右键,选择“Run As à JUnit Test”来运行我们的测试,如下图所示:

进度条是红颜色表示发现错误,具体的测试结果在进度条上面有表示

测试代码:

import static org.junit.Assert.*;

import org.junit.Before; import org.junit.Test;

public class CalculatorTest {

 @Before  public void setUp() throws Exception {  }

 @Test  public void test() {   fail("Not yet implemented");  }

}

九:结对人:王海玲 孔祥玉

王海玲的博客地址:

http://home.cnblogs.com/u/wanghailing/ 

心得体会

通过这次课程设计,我对这学期所学的JAVA语言程序设计有一个更深刻的了解,将所学的知识应用于实践,由于所学知识有限。为了使游戏能够实现自己预先的构想,通过和王海玲同学上网和去图书馆找程序,比较好的流程图及功能模块,不断阅读修改代码使程序达到预期所要实现的目标,完成课程设计。王海玲同学负责代码部分,而我负责观察找出问题,总之,通过本次的课程设计,使我平时学到的理论知识得到了很好地升华,理论与实际得到一次很好的结合,为我今后参加工作打下了坚实的基础,使我受益匪浅

 

 

 

 

  

  

 

  

 

  

 

 

 

 

 

   

 

posted @ 2015-05-10 16:19  孔祥玉  阅读(187)  评论(11编辑  收藏  举报