蜘蛛纸牌游戏单机版java的代码,打开后有界面但是点了“开局”后没有反应

 上传我的文档
 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
正在努力加载中...
基于java开发的蜘蛛纸牌程序设计
下载积分:1000
内容提示:基于java开发的蜘蛛纸牌程序设计
文档格式:DOC|
浏览次数:52|
上传日期: 14:16:13|
文档星级:
该用户还上传了这些文档
基于java开发的蜘蛛纸牌程序设计
官方公共微信我的世界Java安装了,路径也对了,但点启动后启动界面消失,然后就啥都没有了。为什么啊_百度知道当前位置:
java蜘蛛纸牌游戏
来源: 联系QQ: 作者: 网学
发布时间: 09/06/28
java蜘蛛纸牌游戏源程序AboutDialog.javaimport javax.swing.*;import java.awt.*;
/*&**“关于”窗口&*/public class AboutDialog extends JDialog{&JPanel jMainPane = new JPanel();
&JTabbedPane jTabbedPane = new JTabbedPane();&private JPanel jPanel1 = new JPanel();&private JPanel jPanel2 = new JPanel();
&private JTextArea jt1 = new JTextArea("将电脑多次分发给你的牌按照相同的花色由大至小排列起来。直到桌面上的牌全都消失。"); &private JTextArea jt2 = new JTextArea("该游戏中,纸牌的图片来自于Windows XP的纸牌游戏,权属于原作者所有!");
&/*& **构造函数& */&public AboutDialog()&{&&setTitle("蜘蛛牌");&&setSize(300,200);&&setResizable(false);&&setDefaultCloseOperation (WindowConstants.DISPOSE_ON_CLOSE); &&&&Container c = this.getContentPane();&&&&jt1.setSize(260,200);&&jt2.setSize(260,200);&&&&jt1.setEditable(false);&&jt2.setEditable(false);&&&&jt1.setLineWrap(true); &&jt2.setLineWrap(true);&&&&jt2.setForeground(Color.black);&&&&jPanel1.add(jt1);&&jPanel2.add(jt2);&&&&jTabbedPane.setSize(300,200);&&jTabbedPane.addTab("游戏规则", null, jPanel1, null);&&jTabbedPane.addTab("声明", null, jPanel2, null);&&&&jMainPane.add(jTabbedPane);&&c.add(jMainPane);
&&pack();&&this.setVisible(true);&}} import java.awt.*;import java.awt.event.*;import javax.swing.*;
public class PKCard extends JLabel implements MouseListener,&&&&&&& MouseMotionListener{
&&& //纸牌的位置&Point point =&&& Point initPoint =&&& &int value = 0;&&& int type = 0;&&& &String name =&&& Container pane =&&& &Spider main =&&& &boolean canMove =&&& boolean isFront =&&& PKCard previousCard =
&&& public void mouseClicked(MouseEvent arg0){&}&&& &&& public void flashCard(PKCard card){&&//启动Flash线程&&new Flash(card).start();&&//不停的获得下一张牌,直到完成&&if(main.getNextCard(card) != null){&&&card.flashCard(main.getNextCard(card));&&}&}
&&& class Flash extends Thread{&&private PKCard card =&&&&public Flash(PKCard card){&&&this.card =&&}&&&&/*&& **线程的run()方法&& **为纸牌的正面设置白色&& */&&public void run(){&&&boolean is =&&&ImageIcon icon = new ImageIcon("images/white.gif");&&&for (int i = 0; i < 4; i++){&&&&try{&&&&&Thread.sleep(200);&&&&}&&&&catch (InterruptedException e){&&&&&e.printStackTrace();&&&&}&&&&&&&&if (is){&&&&&this.card.turnFront();&&&&&is = !&&&&}&&&&else{&&&&&this.card.setIcon(icon);&&&&&is = !&&&&}&&&&// 根据当前外观将card的UI属性重置&&&&card.updateUI();&&&}&&}&}
&&& /**& **点击鼠标& */&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();&&//判断可行列&&int n = this.whichColumnAvailable(point);&&if (n == -1 || n == this.whichColumnAvailable(this.initPoint)){&&&this.setNextCardLocation(null);&&&main.table.remove(this.getLocation());&&&this.setLocation(this.initPoint);&&&main.table.put(this.initPoint, this);&&&&&}&&&&point = main.getLastCardLocation(n);&&boolean isEmpty =&&PKCard card =&&if (point == null){&&&point = main.getGroundLabelLocation(n);&&&isEmpty =&&}&&else{&&&card = (PKCard) main.table.get(point);&&}&&&&if (isEmpty || (this.value + 1 == card.getCardValue())){&&&point.y += 40;&&&if (isEmpty) point.y -= 20;&&&this.setNextCardLocation(point);&&&main.table.remove(this.getLocation());&&&point.y -= 20;&&&this.setLocation(point);&&&main.table.put(point, this);&&&this.initPoint =&&&if (this.previousCard != null){&&&&this.previousCard.turnFront();&&&&this.previousCard.setCanMove(true);&&&}&&&&&&this.setCanMove(true);&&}&&else{&&&this.setNextCardLocation(null);&&&main.table.remove(this.getLocation());&&&this.setLocation(this.initPoint);&&&main.table.put(this.initPoint, this);&&&&&}&&&&&&& point = main.getLastCardLocation(n);&&&&&&& card = (PKCard) main.table.get(point);&&&&&&& if (card.getCardValue() == 1){&&&point.y -= 240;&&&card = (PKCard) main.table.get(point);&&&if (card != null && card.isCardCanMove()){&&&&main.haveFinish(n);&&&}&&}&}&&/*& **方法:放置纸牌& */&public void setNextCardLocation(Point point){&&PKCard card = main.getNextCard(this);&&if (card != null){&&&if (point == null){&&&&card.setNextCardLocation(null);&&&&main.table.remove(card.getLocation());&&&&card.setLocation(card.initPoint);&&&&main.table.put(card.initPoint, card);&&&}&&&else{&&&&point = new Point(point);&&&&point.y += 20;&&&&card.setNextCardLocation(point);&&&&point.y -= 20;&&&&main.table.remove(card.getLocation());&&&&card.setLocation(point);&&&&main.table.put(card.getLocation(), card);&&&&card.initPoint = card.getLocation();&&&}&&}&}
&&& /**& **返回值:int& **方法:判断可用列& */&public int whichColumnAvailable(Point point){&&int x = point.x;&&int y = point.y;&&int a = (x - 20) / 101;&&int b = (x - 20) % 101;&&if (a != 9){&&&if (b > 30 && b
71){&&&&a++;&&&}&&}&&else if (b > 71){&&&a = -1;&&}&&&&if (a != -1){&&&Point p = main.getLastCardLocation(a);&&&if (p == null) p = main.getGroundLabelLocation(a);&&&b = y - p.y;&&&if (b = 96){&&&&a = -1;&&&}&&}&&&}
&&& public void mouseEntered(MouseEvent arg0){&&& }
&&& public void mouseExited(MouseEvent arg0){&&& }
&&& /**& **用鼠标拖动纸牌& */&public void mouseDragged(MouseEvent arg0){&&&&&&& if (canMove){&&&int x = 0;&&&int y = 0;&&&Point p = arg0.getPoint();&&&x = p.x - point.x;&&&y = p.y - point.y;&&&this.moving(x, y);&&}&}
&&& /**& **返回值:void& **方法:移动(x,y)个位置& */&public void moving(int x, int y){&&&&&&& PKCard card = main.getNextCard(this);&&&&&&& Point p = this.getLocation();&&&&&&& &&//将组件移动到容器中指定的顺序索引。 &&pane.setComponentZOrder(this, 1);&&&&&&& &&//在Hashtable中保存新的节点信息&&main.table.remove(p);&&&&&&& p.x +=&&&&&&& p.y +=&&&&&&& this.setLocation(p);&&&&&&& main.table.put(p, this);&&&&&&& if (card != null) card.moving(x, y);&&& }
&&& public void mouseMoved(MouseEvent arg0){&&& }
&&& /**&&&& **构造函数&&&& */&&& public PKCard(String name, Spider spider){&&&&&&& super();&&&&&&& this.type = new Integer(name.substring(0, 1)).intValue();&&&&&&& this.value = new Integer(name.substring(2)).intValue();&&&&&&& this.name =&&&&&&& this.main =&&&&&&& this.pane = this.main.getContentPane();&&&&&&& this.addMouseListener(this);&&&&&&& this.addMouseMotionListener(this);&&&&&&& this.setIcon(new ImageIcon("images/rear.gif"));&&&&&&& this.setSize(71, 96);&&&&&&& this.setVisible(true);&&& }
&&& /**& **返回值:void& **方法:令纸牌显示正面& */&public void turnFront(){&&&&&&& this.setIcon(new ImageIcon("images/" + name + ".gif"));&&&&&&& this.isFront =&&& }
&&& /**& **返回值:void& **方法:令纸牌显示背面& */&public void turnRear(){&&&&&&& this.setIcon(new ImageIcon("images/rear.gif"));&&&&&&& this.isFront =&&&&&&& this.canMove =&&& }
&&& /**& **返回值:void& **方法:将纸牌移动到点point& */&public void moveto(Point point){&&&&&&& this.setLocation(point);&&&&&&& this.initPoint =&&& }
&&& /**& **返回值:void& **方法:判断牌是否能移动& */&public void setCanMove(boolean can){&&&&&&& this.canMove =&&&&&&& PKCard card = main.getPreviousCard(this);&&&&&&& if (card != null && card.isCardFront()){&&&&&&&&&&& if (!can){&&&&&&&&&&&&&&& if (!card.isCardCanMove()){&&&&&&&&&&&&&&&&&&&&&&&}&&&&&&&&&&&&&&& else{&&&&&card.setCanMove(can);&&&&}&&&}&&&&&&&&&&& else{&&&&&&&&&&&&&&& if (this.value + 1 == card.getCardValue()&&&&&&&&&&&&&&&&&&&&&&& && this.type == card.getCardType()){&&&&&card.setCanMove(can);&&&&}&&&&else{&&&&&card.setCanMove(false);141
java蜘蛛纸牌游戏源代码&&&&}&&&&&&&&&&& }&&&&&&& }&&& }
&&& /**& **返回值:boolean& **方法:判断card是否是正面& */&public boolean isCardFront(){&&&&&&& return this.isF&&& }
&&& /*& **返回值:boolean& **方法:返回是否能够移动& */&public boolean isCardCanMove(){&&&&&&& return this.canM&&& }
&&& /**& **返回值:int& **方法:获得card的内容值& */&public int getCardValue(){&&&&&&&&&& }
&&& /**& **返回值:int& **方法:获得card的类型& */&public int getCardType(){&&&&&&&&&& }}import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.util.*;
public class Spider extends JFrame{&&//整型变量,表示难度等级为:简单&public static final int EASY = 1;&&& //整型变量,表示难度等级为:普通&public static final int NATURAL = 2;&&& //整型变量,表示难度等级为:难&public static final int HARD = 3;&&& //设定初始难度等级为简单&private int grade = Spider.EASY;&&& private Container pane =&&& //生成纸牌数组&private PKCard cards[] = new PKCard[104];&&& private JLabel clickLabel =&&& private int c = 0;&&& private int n = 0;&&& private int a = 0;&&& private int finish = 0;&&& Hashtable table =&&& private JLabel groundLabel[] =
&&& public static void main(String[] args){&&&&&&& Spider spider = new Spider();&&spider.setVisible(true);&&& }
&&& /**&&&& **构造函数&&&& */&&& public Spider(){&&setTitle("蜘蛛牌");&&&&&&& setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE);&&&&&&& //设置框架的大小&&setSize();&&&&&&& &&//生成SpiderMenuBar对象,并放置在框架之上&&setJMenuBar(new SpiderMenuBar(this));&&&&&&& pane = this.getContentPane();&&&&&&& //设置背景颜色&&pane.setBackground(new Color(0, 112, 26));&&&&&&& //将布局管理器设置成为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();&&&&}&&&&&&&&&&& }&&&&&&& });&&&&&&& &&this.initCards();&&&&&&& this.randomCards();&&&&&&& this.setCardsLocation();&&&&&&& groundLabel = new JLabel[10];&
java蜘蛛纸牌游戏源代码&&&&&&&&&&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();&&&&&&& &&this.addKeyListener(new KeyAdapter(){&&&&&&&&&&& class Show extends Thread{&&&&&&&&&&&&&&& public void run(){&&&&&&&&&&&&&&&&&&& Spider.this.showEnableOperator();&&&&&&&&&&&&&&& }&&&&&&&&&&& }
&&&&&&&&&&& public void keyPressed(KeyEvent e){&&&&&&&&&&&&&&& if (finish != 8) if (e.getKeyCode() == KeyEvent.VK_D && c < 60){&&&&&&&&&&&&&&&&&&& Spider.this.deal();&&&&&&&&&&&&&&& }&&&&&&&&&&&&&&& else if (e.getKeyCode() == KeyEvent.VK_M){&&&&&&&&&&&&&&&&&&& new Show().start();&&&&&&&&&&&&&&& }&&&&&&&&&&& }&&&&&&& });&&& }
&&& /**& **开始新游戏& */&public void newGame(){&&&&&&& this.randomCards();&&&&&&& this.setCardsLocation();&&&&&&& this.setGroundLabelZOrder();&&&&&&& this.deal();&&& }
&&& /**& **返回值:int& **返回牌的数量&& */&public int getC(){&&&&&&&&&& }
&&& /**& **设置等级& */&public void setGrade(int grade){&&&&&&& this.grade =&&& }
&&& /**& **纸牌初始化& */&public void initCards(){&&&&&&& //如果纸牌已被赋值,即将其从框架的面板中移去&&if (cards[0] != null){&&&&&&&&&&& for (int i = 0; i < 104; i++){&&&&&&&&&&&&&&& pane.remove(cards[i]);&&&&&&&&&&& }&&&&&&& }&&&&&&& &&int n = 0;&&&&&&& //通过难度等级,为n赋值&&if (this.grade == Spider.EASY){&&&&&&&&&&& n = 1;&&&&&&& }&&&&&&& else if (this.grade == Spider.NATURAL){&&&&&&&&&&& n = 2;&&&&&&& }&&&&&&& else{&&&&&&&&&&& n = 4;&&&&&&& }&&&&& //为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(){&&&&&&& PKCard temp =&&&&&&& //随机生成牌号&&for (int i = 0; i < 52; i++){&&&&&&&&&&& int a = (int) (Math.random() * 104);&&&&&&&&&&& int b = (int) (Math.random() * 104);&&&&&&&&&&& temp = cards[a];&&&&&&&&&&& cards[a] = cards[b];&&&&&&&&&&& cards[b] =&&&&&&& }&&& }
&&& /**& **设置还原& */&public void setNA(){&&&&&&& a = 0;&&&&&&& n = 0;&&& }
&&& /**& **设置纸牌的位置& */&public void setCardsLocation(){&&&&&&& table = new Hashtable();&&&&&&& c = 0;&&&&&&& finish = 0;&&&&&&& n = 0;&&&&&&& a = 0;&&&&&&& int x = 883;&&&&&&& int y = 580;&&//初始化待展开的纸牌&&&&&&& for (int i = 0; i < 6; i++){&&&&&&&&&&& for (int j = 0; j
5; i--){&&&&&&&&&&& for (int j = 0; j = 104)&&&&&&&&&&&&&&& pane.add(cards[n]);&&&&&&&&&&&&&&& cards[n].turnRear();&&&&&&&&&&&&&&& cards[n].moveto(new Point(x, y));&&&&&&&&&&&&&&& table.put(new Point(x, y), cards[n]);&&&&&&&&&&&&&&& x += 101;&&&&&&&&&&& }&&&&&&&&&&& x = 20;
java蜘蛛纸牌游戏源代码&&&&&&&&&&& y -= 5;&&&&&&& }&&& }
&&& /**& **返回值:void& **方法:显示可移动的操作& */&public void showEnableOperator(){&&&&&&& int x = 0;&&&&&&& out: while (true){&&&&&&&&&&& Point point =&&&&&&&&&&& PKCard card =&&&&&&&&&&& do{&&&&&&&&&&&&&&& if (point != null){&&&&&n++;&&&&}&&&&&&&&&&&&&&& point = this.getLastCardLocation(n);&&&&&&&&&&&&&&& while (point == null){&&&&&&&&&&&&&&&&&&& point = this.getLastCardLocation(++n);&&&&&&&&&&&&&&&&&&& if (n == 10) n = 0;&&&&&&&&&&&&&&&&&&& x++;&&&&&&&&&&&&&&&&&&& if (x == 10)&&&&&&&&&&&&&&& }&&&&&&&&&&&&&&& card = (PKCard) this.table.get(point);&&&&&&&&&&& }&&&&&&&&&&& while (!card.isCardCanMove());&&&&&&&&&&& while (this.getPreviousCard(card) != null&&&&&&&&&&&&&&&&&&& && this.getPreviousCard(card).isCardCanMove()){&&&&&&&&&&&&&&& card = this.getPreviousCard(card);&&&&&&&&&&& }&&&&&&&&&&& if (a == 10){&&&&a = 0;&&&}&&&&&&&&&&& for (; a < 10; a++){&&&&&&&&&&&&&&& if (a != n){&&&&&&&&&&&&&&&&&&& Point p =&&&&&&&&&&&&&&&&&&& PKCard c =&&&&&&&&&&&&&&&&&&& do{&&&&&&&&&&&&&&&&&&&&&&& if (p != null){&&&&&&&a++;&&&&&&}&&&&&&p = this.getLastCardLocation(a);&&&&&&&&&&&&&&&&&&&&&&& int z = 0;&&&&&&&&&&&&&&&&&&&&&&& while (p == null){&&&&&&&&&&&&&&&&&&&&&&&&&&& p = this.getLastCardLocation(++a);&&&&&&&&&&&&&&&&&&&&&&&&&&& if (a == 10) a = 0;&&&&&&&&&&&&&&&&&&&&&&&&&&& if (a == n) a++;&&&&&&&&&&&&&&&&&&&&&&&&&&& z++;&&&&&&&&&&&&&&&&&&&&&&&&&&& if (z == 10)&&&&&&&&&&&&&&&&&&&&&&& }&&&&&&&&&&&&&&&&&&&&&&& c = (PKCard) this.table.get(p);&&&&&&&&&&&&&&&&&&& }&&&&&&&&&&&&&&&&&&& while (!c.isCardCanMove());&&&&&&&&&&&&&&&&&&& if (c.getCardValue() == card.getCardValue() + 1){&&&&&&&&&&&&&&&&&&&&&&& card.flashCard(card);&&&&&&&&&&&&&&&&&&&&&&& try{&&&&&&&&&&&&&&&&&&&&&&&&&&& Thread.sleep(800);&&&&&&&&&&&&&&&&&&&&&&& }&&&&&&&&&&&&&&&&&&&&&&& catch (InterruptedException e){&&&&&&&&&&&&&&&&&&&&&&&&&&& e.printStackTrace();&&&&&&&&&&&&&&&&&&&&&&& }&&&&&&&&&&&&&&&&&&&&&&& c.flashCard(c);&&&&&&&&&&&&&&&&&&&&&&& a++;&&&&&&&&&&&&&&&&&&&&&&& if (a == 10){&&&&&&&n++;&&&&&&}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& }&&&&&&&&&&&&&&& }&&&&&&&&&&& }&&&&&&&&&&& n++;&&&&&&&&&&& if (n == 10){&&&&n = 0;&&&}&&&&&&&&&&& x++;&&&&&&&&&&& if (x == 10){&&&&&&&}&&&&&&& }&&& }
&&& /*& **返回值:void& **方法:游戏运行& */&public void deal()&&& {&&&&&&& this.setNA();&&&&&&& //判断10列中是否空列&&for (int i = 0; i < 10; i++){&&&&&&&&&&& if (this.getLastCardLocation(i) == null){&&&&&&&&&&&&&&& JOptionPane.showMessageDialog(this, "有空位不能发牌!", "提示",&&&&&&&&&&&&&&&&&&&&&&& JOptionPane.WARNING_MESSAGE);&&&&&&&&&&&&&&&&&&&&&&&&&& }&&&&&&& }&&&&&&& int x = 20;&&&&&&& &&for (int i = 0; i < 10; i++){&&&&&&&&&&& Point lastPoint = this.getLastCardLocation(i);&&&&&&&&&&& //这张牌应“背面向上”&&&if (c == 0){&&&&&&&&&&&&&&& lastPoint.y += 5;&&&}&&&&&&&&&&& //这张牌应“正面向上”&&&else{&&&&&&&&&&&&&&& lastPoint.y += 20;&&&}&&&&&&&&&&& &&&table.remove(cards[c + i].getLocation());&&&&&&&&&&& cards[c + i].moveto(lastPoint);&&&&&&&&&&& table.put(new Point(lastPoint), cards[c + i]);&&&&&&&&&&& cards[c + i].turnFront();&&&&&&&&&&& cards[c + i].setCanMove(true);&&&&&&&&&&& &&&//将组件card移动到容器中指定的顺序索引。 &&&this.pane.setComponentZOrder(cards[c + i], 1);&&&&&&&&&&& &&&Point point = new Point(lastPoint);&&&&&&&&&&& if (cards[c + i].getCardValue() == 1){&&&&&&&&&&&&&&& int n = cards[c + i].whichColumnAvailable(point);&&&&&&&&&&&&&&& point.y -= 240;&&&&&&&&&&&&&&& PKCard card = (PKCard) this.table.get(point);&&&&&&&&&&&&&&& if (card != null && card.isCardCanMove()){&&&&&&&&&&&&&&&&&&& this.haveFinish(n);&&&&&&&&&&&&&&& }&&&&&&&&&&& }&&&&&&&&&&& x += 101;&&&&&&& }&&&&&&& c += 10;&&& }
&/*& **返回值:PKCard对象& **方法:获得card上面的那张牌& */&public PKCard getPreviousCard(PKCard card){&&&&&&& Point point = new Point(card.getLocation());&&&&&&& point.y -= 5;&&&&&&& card = (PKCard) table.get(point);&&&&&&& if (card != null){&&&&&}&&&&&&& point.y -= 15;&&&&&&& card = (PKCard) table.get(point);&&&&&&&&&& }
&&& /**& **返回值:PKCard对象& **方法:取得card下面的一张牌& */&public PKCard getNextCard(PKCard card){&&&&&&& Point point = new Point(card.getLocation());&&&&&&& point.y += 5;&&&&&&& card = (PKCard) table.get(point);&&&&&&& if (card != null)&&&&&&&&&& point.y += 15;&&&&&&& card = (PKCard) table.get(point);&&&&&&&&&& }
&&& /**& **返回值:Point对象& **方法:取得第column列最后一张牌的位置& */&public Point getLastCardLocation(int column){&&&&&&& Point point = new Point(20 + column * 101, 25);&&&&&&& PKCard card = (PKCard) this.table.get(point);&&&&&&& if (card == null)&&&&&&& while (card != null){&&&&&&&&&&& point = card.getLocation();&&&&&&&&&&& card = this.getNextCard(card);&&&&&&& }&&&&&&&&&& }
&&& public Point getGroundLabelLocation(int column){&&&&&&& return new Point(groundLabel[column].getLocation());&&& }
&&& /*& **返回值:void& **方法:放置groundLable组件& */&public void setGroundLabelZOrder(){&&&&&&& for (int i = 0; i < 10; i++){&&&&&&&&&&& //将组件groundLable移动到容器中指定的顺序索引。顺序(105+i)确定了绘制组件的顺序;具有最高顺序的组件将第一个绘制,而具有最低顺序的组件将最后一个绘制。在组件重叠的地方,具有较低顺序的组件将覆盖具有较高顺序的组件。 &&&pane.setComponentZOrder(groundLabel[i], 105 + i);&&&&&&& }&&& }
&&& /*& **返回值:void& **方法:判断纸牌的摆放是否完成& */&public void haveFinish(int column){&&&&&&& Point point = this.getLastCardLocation(column);&&&&&&& PKCard card = (PKCard) this.table.get(point);&&&&&&& do{&&&&&&&&&&& this.table.remove(point);&&&&&&&&&&& card.moveto(new Point(20 + finish * 10, 580));&&&&&&&&&&& //将组件移动到容器中指定的顺序索引。 &&&pane.setComponentZOrder(card, 1);&&&&&&&&&&& //将纸牌新的相关信息存入Hashtable&&&this.table.put(card.getLocation(), card);&&&&&&&&&&& card.setCanMove(false);&&&&&&&&&&&&&&&&&&&&&&& card = (PKCard) this.table.get(point);&&&&&&& }&&&&&&& while (card != null && card.isCardCanMove());&&&&&&& finish++;&&&&&&& //如果8付牌全部组合成功,则显示成功的对话框&&if (finish == 8){&&&&&&&&&&& JOptionPane.showMessageDialog(this, "恭喜你,顺利通过!", "成功",&&&&&&&&&&&&&&&&&&& JOptionPane.PLAIN_MESSAGE);&&&&&&& }&&&&&&& if (card != null){&&&&&&&&&&& card.turnFront();&&&&&&&&&&& card.setCanMove(true);&&&&&&& }&&& }}import javax.swing.JMenuBimport javax.swing.JMimport javax.swing.JMenuIimport javax.swing.JRadioButtonMenuIimport javax.swing.ButtonG
public class SpiderMenuBar extends JMenuBar{&&& &//生成spider框架对象&&& Spider main =&& &&& //生成菜单组&&& JMenu jNewGame = new JMenu("游戏");&&& JMenu jHelp = new JMenu("帮助");&&& &&& //生成菜单项&&& JMenuItem jItemAbout = new JMenuItem("关于");&&& JMenuItem jItemOpen = new JMenuItem("开局");&&& JMenuItem jItemPlayAgain = new JMenuItem("重新发牌");&& &&& //生成单选框&&& JRadioButtonMenuItem jRMItemEasy = new JRadioButtonMenuItem("简单:单一花色");&&& JRadioButtonMenuItem jRMItemNormal = new JRadioButtonMenuItem("中级:双花色");&&& JRadioButtonMenuItem jRMItemHard = new JRadioButtonMenuItem("高级:四花色");;&&& &&& JMenuItem jItemExit = new JMenuItem("退出");&&& JMenuItem jItemValid = new JMenuItem("显示可行操作");&&& &&& &&& /**&&&& **构造函数,生成JMenuBar的图形界面&&&& */&&& public SpiderMenuBar(Spider spider){&&&&&&& &&&&&&& this.main =&&&&&&& &&&&&&& /**&&&&&&&& **初始化“游戏”菜单栏&&&&&&&& */&&&&&&& jNewGame.add(jItemOpen);&&&&&&& jNewGame.add(jItemPlayAgain);&&&&&&& jNewGame.add(jItemValid);&&&&&&& &&&&&&& jNewGame.addSeparator();&&&&&&& jNewGame.add(jRMItemEasy);&&&&&&& jNewGame.add(jRMItemNormal);&&&&&&& jNewGame.add(jRMItemHard);&&&&&&& &&&&&&& jNewGame.addSeparator();&&&&&&& &&&&&&& jNewGame.add(jItemExit);&&&&&&& &&&&&&& ButtonGroup group = new ButtonGroup();&&&&&&& group.add(jRMItemEasy);&&&&&&& group.add(jRMItemNormal);&&&&&&& group.add(jRMItemHard);
&&&&&&& jHelp.add(jItemAbout);
&&&&&&& this.add(jNewGame);&&&&&&& this.add(jHelp);
&&//为组件添加事件监听并实现&&&&&&& //“开局”&&jItemOpen.addActionListener(new java.awt.event.ActionListener() { &&&&&&&&&&& public void actionPerformed(java.awt.event.ActionEvent e) {&&& &&&&&&&&&&&&&&& main.newGame();&&&&&&&&&&& }&&&&&&& });
&&&&&&& //“重新发牌”&&jItemPlayAgain.addActionListener(new java.awt.event.ActionListener() { &&&&&&&&&&& public void actionPerformed(java.awt.event.ActionEvent e) {&&& &&&&&&&&&&&&&&& if(main.getC() < 60){&&&&&&&&&&&&&&&&&&& main.deal();&&&&&&&&&&&&&&& }&&&&&&&&&&& }&&&&&&& });
&&&&&&& //"显示可行操作"&&jItemValid.addActionListener(new java.awt.event.ActionListener() { &&&&&&&&&&& public void actionPerformed(java.awt.event.ActionEvent e) {&&& &&&&&&&&&&&&&&& new Show().start();&&&&&&&&&&& }&&&&&&& });&&&&&&& &&&&&&& //“退出”&&jItemExit.addActionListener(new java.awt.event.ActionListener() { &&&&&&&&&&& public void actionPerformed(java.awt.event.ActionEvent e) {&&& &&&&&&&&&&&&&&& main.dispose();&&&&&&&&&&&&&&& System.exit(0);&&&&&&&&&&& }&&&&&&& });&&&&//“简单级别”默认已选&&jRMItemEasy.setSelected(true);&&&&&&& &&//“简单级别”&&jRMItemEasy.addActionListener(new java.awt.event.ActionListener() { &&&&&&&&&&& public void actionPerformed(java.awt.event.ActionEvent e) {&&& &&&&&&&&&&&&&&& main.setGrade(Spider.EASY);&&&&&&&&&&&&&&& main.initCards();&&&&&&&&&&&&&&& main.newGame();&&&&&&&&&&& }&&&&&&& });&&&&&&& &&&&&&& //“中级”&&jRMItemNormal.addActionListener(new java.awt.event.ActionListener() { &&&&&&&&&&& public void actionPerformed(java.awt.event.ActionEvent e) {&&& &&&&&&&&&&&&&&& main.setGrade(Spider.NATURAL);&&&&&&&&&&&&&&& main.initCards();&&&&&&&&&&&&&&& main.newGame();&&&&&&&&&&& }&&&&&&& });
&&&&&&& //“高级”&&jRMItemHard.addActionListener(new java.awt.event.ActionListener() { &&&&&&&&&&& public void actionPerformed(java.awt.event.ActionEvent e) {&&& &&&&&&&&&&&&&&& main.setGrade(Spider.HARD);&&&&&&&&&&&&&&& main.initCards();&&&&&&&&&&&&&&& main.newGame();&&&&&&&&&&& }&&&&&&& });
&&jNewGame.addMenuListener(new javax.swing.event.MenuListener() { &&&&&&&&&&& public void menuSelected(javax.swing.event.MenuEvent e) {&&& &&&&&&&&&&&&&&& if(main.getC() < 60){&&&&&&&&&&&&&&&&&&& jItemPlayAgain.setEnabled(true);&&&&&&&&&&&&&&& }&&&&&&&&&&&&&&& else{&&&&&&&&&&&&&&&&&&& jItemPlayAgain.setEnabled(false);&&&&&&&&&&&&&&& }&&&&&&&&&&& }&&&&&&&&&&& public void menuDeselected(javax.swing.event.MenuEvent e) {} &&&&&&&&&&& public void menuCanceled(javax.swing.event.MenuEvent e) {} &&&&&&& });&&&&&&& &&&&&&& //“关于”&&jItemAbout.addActionListener(new java.awt.event.ActionListener() { &&&&&&&&&&& public void actionPerformed(java.awt.event.ActionEvent e) {&&& &&&&&&&&&&&&&&& new AboutDialog();&&&&&&&&&&& }&&&&&&& });&&& }
&&& /**&&&& **构造线程:显示可以执行的操作&&&& */&&& class Show extends Thread{&&&&&&& public void run(){&&&&&&&&&&& main.showEnableOperator();&&&&&&& }&&& }&}
上一篇资讯:
下一篇资讯:
文章排行榜

我要回帖

更多关于 蜘蛛纸牌官方下载 的文章

 

随机推荐