图2.2 MemoryGame创建窗口
MemoryGame主类与其他类间的交互关系如图2.3所示:
6
图2.3 MemoryGame主类与其他类间交互关系
以下是UML图中有关数据和方法的详细说明。 1)成员变量
?bar是JMenuBar类创建的菜单条,可以向bar中添加菜单。
?menuGrade、menuResult、menuIcon是JMenu创建的三个菜单,这三个菜单的名称分别是“选择级别”、“查看排行榜”和“选择图标”。
?oneGradeItem、twoGradeItem、threeGradeIte是JMenuItem类创建的三个菜单项,被添加到menuGrade菜单中,这三个菜单项的名称分别是“初级”,“中级”和“高级”。
?oneGradeResult、twoGradeResult、threeGradeResult是JMenuItem类创建的三个菜单项,被添加到menuResult菜单中,这三个菜单项的名称分别是“初级排行榜”,“中级排行榜”和“高级排行榜”。
?carImageIcon、animalImageIcon是JMenuItem类创建的两个菜单项,被添加到menuIcon菜单中,这两个菜单项的名称分别是“汽车图标”和“动物图标”。 ?fileOneGrade、fileTwoGrade、fileThreeGrade和gradeFile是File类创建的四个文件对象。fileOneGrade、fileTwoGrade、fileThreeGrade所引用的文件分别是“初级记忆排行榜.txt”、“中级记忆排行榜.txt”、“高级记忆排行榜.txt”,分别用来写入三个级别的成绩。gradeFile可以是fileOneGrade、fileTwoGrade、fileThreeGrade中的某一个。
?imageName是String类型的组件,每个单元是一个图像文件的名字。 ?memoryArea是测试区对象,由MemoryArea类负责创建。
?showDiolag是负责显示成绩的对话框,由ShowRecordDialog类负责创建 ?m和n的int型数据,其值可以确定相应级别中测试区中方块的数量,例如,对于中级水平,m=6,n=7,测试区一个有42个方块。 2)方法
?actionPerformed(ActionEvent)方法是MemoryGame类实现ActionListener接口中的方法,负责执行菜单项发出的有关命令。用户选择菜单中的菜单项可触发ActionEvent事件,导致actionPerformed(ActionEvent)方法执行相应的操作。 ?MemoryGame()是构造方法,负责完成窗口的初始化。 ?main(String[])方法是软件运行的入口方法。
2.2 MemoryTestArea类
MemoryTestArea创建的测试区如图2.4所示
7
图2.4 MemoryTestArea创建的测试区
MemoryTestArea类与其他类间的交互关系如图2.5所示:
8
图2.5 MemoryTestArea类与其他类间交互关系
以下是UML图中有关数据和方法的详细说明。 1)成员变量
?row和col的值确定测试区中方块的数量。MemoryTestArea类创建的对象memoryArea是MemoryGame中的成员,memoryArea对象通过调用initBlock(int,int,String[],file)方法将MemoryGame类中m和n的值传递给row和col。
?usedTime是用户的用时,单位是秒。
?success的值是用户找到的具有同样的图标的方块的个数。
?gradeFile是级别文件,memoryArea对象通过调用initBlock(int,int,String[],file)方法将MemoryGame类中的gradeFile的引用传递给memoryArea对象中的 gradeFile。
?数组表allBlockList单元的个数是row和col的乘积,它的每个单元存放着一个Block对象。memoryArea对象在调用initBlock(int,int,String[],file)方法时完成对
9
allBlockList单元的初始化,即创建单元中的Block对象。
?字符串数组imageFileName中的每个单元是一幅图像文件的文字。memoryArea对象通过调用setImageName(String[])方法将MemoryGame中存放图像文件名字的imageName数组的引用传递给imageFileName。
?链表openIconList用来存放用户找到的图标相同的方块上的图标。 ?链表openBlockList用来存放用户找到的图标相同的方块。
?hintThread是用Thread类创建的线程对象,用来提示测试区中的Block上的图标,提示方式是将测试区中的各个Block上图标持续显示1200毫秒。 ?hintButton是注册了ActionEvent事件的监听器,当单击它时,启动hintThread线程。
?showUsedTime显示用户的用时,即显示usedTime的值。
?hintMessage根据不同的级别显示相应的提示信息,如该级别需要用户寻找的相同图标方块的数目。
?timer是计时器,负责改变usedTime的值。
?record负责提供保存成绩的界面,是一个对话框,默认不可见。当用户寻找出级别所要求的相同图标方块的数目后,该对话框可见,用户可以在该对话框中输入姓名,并保存所输入的姓名和usedTime的值到gradeFile指定的级别文件中。 2)方法
? MemoryTestArea()是构造方法,创建memoryArea对象时需使用该构造方法。 ?initBlock(int,int,String[],file)方法。memoryArea对象调用该方法将参数的值传递给row、col、imageFileName和gradeFile,并依据这些值设置allBlockList数组表的大小,然后创建allBlockList的单元中Block对象,并设置Block对象上的图标。
?setImageName(String[])方法。memoryArea对象调用该方法可以将MemoryGame中存放图像文件名字的imageName数组的引用传递给imageFileName。当用户单击MemoryGame主类窗口的cartImageIcon和animalImageIcon菜单项时,memoryArea对象将调用该方法把存放图像文件名字的imageName数组的引用传递给imageFileName。
?actionPerformed(ActionEvent)方法。该方法是MemoryArea类实现的ActionListener接口中的方法。memoryArea中的每个Block对象都注册了ActionEvent事件监听器,当用户单击memoryArea中的某个Block对象时,actionPerformed(ActionEvent)方法将被调用执行,所执行的主要操作是:如果该Block对象未显示图标,并且该Block对象设置的图标和openIconList的中存放的图标相同,就将该图标添加到链表openIconList中,同时将该Block对象上
10