当前位置:文档之家› 蜘蛛纸牌详细设计说明书

蜘蛛纸牌详细设计说明书

蜘蛛纸牌概要设计说明书南昌航空大学软件学院2011年10月1.引言1.1编写目的1.1编写目的本详细设计说明书是针对蜘蛛纸牌游戏的课程作业而编写。

目的是对该软件进行详细设计,在概要设计的基础上进一步明确系统结构,详细地介绍系统的各个模块,为进行后面的实现和测试作准备。

本详细设计说明书的预期读者为本项目小组的成员以及对该系统感兴趣,在以后想对系统进行扩展和维护的人员。

1.2背景a.待开发的系统的名称:蜘蛛纸牌游戏软件b.本项目的任务提出者: 周璇、罗书惟、罗剑、王天宇开发者:周璇、罗书惟、罗剑、王天宇用户:所有对该软件感兴趣,并且对该游戏熟悉的用户]1.3定义AboutDialog:游戏关于类;Frame1:游戏界面设计;PKCard:扑克牌的排列算法;Spider:游戏规则;SpiderMenuBar:游戏菜单栏1.4参考资料《Java实用教程》清华大学出版社张跃平耿祥义著《Java实用教程》2. 系统的结构3.模块1(Frame1)设计说明3.1模块描述实现用户界面的类,含有1个类3种方法,是本系统中最简单的代码3.2功能实现用户友好界面。

3.3性能负责接受用户输入,显示系统输出,其他模块功能的协调调用。

3.4输入项选择游戏的难度系数(简单、中等、高等)、显示可行性操作、统计战况、发牌、保存游戏等。

3.5输出项得出游戏的结果界面。

3.6接口import javax.swing.JMenuBar;import javax.swing.JMenu;import javax.swing.JMenuItem;import javax.swing.JRadioButtonMenuItem;import javax.swing.ButtonGroup。

3.7注释设计ImageIcon icon = new ImageIcon("images/测试.gif"); //gif,jpg 格式能用,bmp格式不能用3.8 限制条件扑克牌的图画格式只能是gif,jpg。

3.9尚未解决的问题图画的格式应该让所有的格式都适用。

4.模块2(SpiderMenuBar)设计说明4.1模块描述实现游戏上所有的按钮的类,含有2个类14种方法,是本系统中较难的代码4.2功能实现游戏中所有游戏中的按钮的功能。

4.3性能游戏中所有功能的按钮,方便用户使用。

4.4输入项选择游戏的难度系数(简单、中等、高等)、显示可行性操作、统计战况、发牌、保存游戏等。

4.5输出项得出游戏的结果界面。

4.6接口import javax.swing.JMenuBar;import javax.swing.JMenu;import javax.swing.JMenuItem;import javax.swing.JRadioButtonMenuItem;import javax.swing.ButtonGroup;。

4.7注释设计/**为生成蜘蛛纸牌游戏的菜单栏,*实现菜单栏中各个组件的事件监听***/jNewGame.addSeparator(); //将新分隔符追加到菜单的末尾5.模块3(AboutDialog)设计说明5.1模块描述实现游戏上有关说明的类,含有1个类2种方法,是本系统中较简单的代码5.2功能实现游戏中游戏的有关说明的功能。

5.3性能游戏的相关说明,方便用户使用。

5.4输入项无。

5.5输出项得出游戏的相关说明。

5.6接口import javax.swing.*;import java.awt.*。

5.7注释设计/**主要功能是为生成蜘蛛纸牌游戏的帮助栏***/6.模块3(PKCard)设计说明6.1模块描述定义纸牌的属性,包括名称、位置等相关信息。

并通过相关方法实现纸牌的移动等,含有2个类21种方法,是本系统中非常难的代码6.2功能实现游戏中纸牌的定义,包括名称、位置等相关信息。

实现纸牌移动的相关方法。

6.3性能游戏的主要算法实现和关键代码段。

6.4输入项移动鼠标实现纸牌的移动。

6.5输出项得出移动过后纸牌的摆放位置。

6.6接口import java.awt.*;import java.awt.event.*;import javax.swing.*。

6.7注释设计/**该类的作用为定义纸牌的属性,包括名称、位置等相关信息。

*并通过相关方法实现纸牌的移动等。

*/public class PKCard extends JLabel implementsMouseListener,MouseMotionListener{//纸牌的位置public void flashCard(PKCard card){//启动Flash线程new Flash(card).start();//不停地获得下一张牌,直到完成//点击鼠标public void mousePressed(MouseEvent mp){point = mp.getPoint();main.setNA();this.previousCard = main.getPreviousCard(this);}//释放鼠标public void mouseReleased(MouseEvent mr){Point point = ((JLabel)mr.getSource()).getLocation(); //判断可行列//放置纸牌public void setNextCardLocation(Point point)//判断可用列public int whichColumnAvailable(Point point)//用鼠标拖动纸牌public void mouseDragged(MouseEvent argO)//移动(x,y)个位置public void moving(int x,int y)//将主件移动到容器中指定的顺序索引pane.setComponentZOrder(this,1);//在Hashtable中保存新的节点信息main.table.remove(p);//令纸牌显示正面public void turnFront()//令纸牌显示背面public void turnRear()//将纸牌移动到点pointpublic void moveto(Point point)//判断牌是否移动public void setCanMove(boolean can)//判断card是否是正面public boolean isCardFront()//返回是否能够移动public boolean isCardCanMove()//获得card的内容值public int getCardValue()//获得card的类型public int getCardType()7.模块3(Spider)设计说明7.1模块描述蜘蛛纸牌的主类文件,其中包含1个类17种方法,是本系统中最难实现的代码段。

7.2功能实现游戏中生成蜘蛛纸牌游戏的框架,实现游戏中的方法。

包括:纸牌的随机生成、位置的摆放等6.3性能游戏的主类文件,实现游戏中的框架,游戏的方法。

6.4输入项移动鼠标实现纸牌的移动。

6.5输出项得出移动过后纸牌的摆放位置。

6.6接口import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.util.*。

6.7注释设计/**蜘蛛牌的主类文件*其主要功能是为生成蜘蛛纸牌游戏的框架,实现游戏中的方法。

*包括:纸牌的随机生成、位置的摆放等。

*/public static final int EASY = 1; //表示难度等级try {UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");//设置显示皮肤} catch (UnsupportedLookAndFeelException ex) {} catch (IllegalAccessException ex) {} catch (InstantiationException ex) {} catch (ClassNotFoundException ex) {}//生成SpiderMenuBar对象,并放置在框架之上 //释放鼠标public Spider()//开始游戏public void newGame()//返回牌的数量public int getC()//设置等级public void setGrade(int grade)//纸牌初始化public void initCards(){//如果纸牌已被赋值,即将其从框架的面板中移去if(cards[0] != null){for(int i=0;i<104;i++){pane.remove(cards[i]);}}//为card赋值for(int i=1;i<=8;i++){for(int j=1;j<=13;j++){cards[(i-1)*13+j-1] = new PKCard((i%n+1)+"-"+j,this);}}//随机纸牌初始化this.randomCards();//纸牌随机分配public void randomCards()//设置还原public void setNA()//设置纸牌的位置public void setCardsLocation()//初始化待展开的纸牌for(int i=0;i<6;i++){for(int j=0;j<10;j++){int n = i*10+j;pane.add(cards[n]);//将card转向背面cards[n].turnRear();//将car的放在固定的位置上cards[n].moveto(new Point(x,y));//将card的位置及相关信息存入table.put(new Point(x,y),cards[n]);}//判断牌是否移动public void setCanMove(boolean can)//显示可移动的操作public void showEnableOperator()//将组件card移动到容器中指定的顺序索引this.pane.setComponentZOrder(cards[c+i],1); //获得card上面的那张牌public PKCard getPreviousCard(PKCard card)//取得card下面的一张牌public PKCard getNextCard(PKCard card)//取得第column列最后一张牌的位置public Point getLastCardLocation(int column)//放置groundLable组件public void setGroundLabelZOrder(){for(int i=0;i<10;i++){//将组件groundLable移动到容器中指定的顺序索引。

相关主题