栏。
public void pane.setBackground(Color c)设置面板的背景颜色。 public void pane.setLayout(布局对象)设置面板的布局。
public Container getContentPane()方法可得到窗口的内容面板容器。 public void setBounds(int a,int b,int weidth, int heigth)设置出现在屏幕中的组件距离屏幕的左面a个像素,距屏幕上面b个像素,组件宽为weidth,高为heigth。
public void newGame()方法开始新游戏。 public int getC()方法返回纸牌的数量。
public void setGrade(int grade)方法设置纸牌游戏的等级。 public void initCards()方法进行初始化纸牌 public void randomCards()方法令纸牌随机分配。 public void setNA()方法设置还原纸牌游戏。
public void setCardsLocation()方法设置待展开纸牌级表面初始化纸牌的位置。
public void showEnableOperator()方法进行显示是否有可以移动的纸牌。 public void deal()方法开始运行游戏。
public PKCard getPreviousCard(PKCard card)方法获取当前纸牌上面的那一张纸牌。
public PKCard getNextCard(PKCard card)方法获取当前纸牌的下面的那一张纸牌。
public Point getLastCardLocation(int n)方法获取第n列纸牌最后一张纸牌的位置。
public Point getGroundLabelLocation(int n)方法获取第n列纸牌的背景框架的位置。
public void setGroundLabelZOrder()放置groundLable组件。将组件groundLable移动到容器中指定的顺序索引。顺序(105+i)确定了绘制组件的顺序;具有最高顺序的组件将第一个绘制,具有最低顺序的组建将最后一个绘制。在组建重叠的地方,具有较低顺序的组建将覆盖具有较高顺序的组件。
public void haveFinish(int column)判断纸牌的摆放是否成功。
4.功能设计:
4.1需要实现的主要功能:
(1)游戏主界面的设计包括背景颜色、框架大小、玩牌区域、发牌区域、 回收纸牌的区域组件的设置。
(2)点击鼠标、释放鼠标、拖动鼠标时纸牌需要实现的事件处理程序。 (3)移动放置一组或者单个纸牌时。需要纸牌按照由小到大的顺序排列,并列类型相同。
(4)当某列的纸牌按照从A到K得顺序排列时,程序会自动回收这组纸牌到回收纸牌的区域。
(5)当用鼠标单击发牌区域的纸牌时,如果10列纸牌中没有空白列,则顺
13
序把纸牌发到每列纸牌的最下面。否则,弹出有空位不能发牌对话框。
(6)当玩家不知道当前游戏如何进行时,可以点击菜单项显示可行的操作提示玩家下一步该移动哪一张纸牌。
(7)等级设置,玩家通过单击游戏菜单里相应的等级菜单项来设置游戏的难度等级。游戏的默认等级是简单等级。
4.2功能设计流程图:
4.3主要功能的代码实现:
4.3.1游戏菜单栏内游戏菜单及帮助菜单功能展示:
14
4.3.2主界面的设计:
代码实现如下: public Spider(){
setTitle(\蜘蛛牌\
setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE); //设置框架的大小 setSize(1024, 742);
//生成SpiderMenuBar对象,并放置在框架之上 setJMenuBar(new SpiderMenuBar(this)); pane = this.getContentPane(); //设置背景颜色
pane.setBackground(new Color(0, 139, 69)); //将布局管理器设置成为null pane.setLayout(null);
clickLabel = new JLabel();
clickLabel.setBounds(883, 606, 121, 96);\\\\设置发牌区组件的位置 pane.add(clickLabel);
clickLabel.addMouseListener(new MouseAdapter(){ public void mouseReleased(MouseEvent me){ if (c < 60){
Spider.this.deal(); } }
15
});
this.initCards(); this.randomCards();
this.setCardsLocation();\\\\为纸牌设置位置
groundLabel = new JLabel[10];\\\\创建背景框组件数组
int x = 20;
for (int i = 0; i < 10; i++) {
groundLabel[i] = new JLabel();\\\\创建背景框组件 groundLabel[i]
.setBorder(javax.swing.BorderFactory
.createEtchedBorder(javax.swing.border.EtchedBorder.RAISED));
groundLabel[i].setBounds(x, 25, 71, 96);\\\\设置组件的大小 x += 101;
this.pane.add(groundLabel[i]);\\\\向容器添加组件 }
this.setVisible(true);
this.deal();\\\\运行程序,从发牌去发出一组纸牌
...
16