扫雷项目源代码详解.doc_第1页
扫雷项目源代码详解.doc_第2页
扫雷项目源代码详解.doc_第3页
扫雷项目源代码详解.doc_第4页
扫雷项目源代码详解.doc_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

主函数所在处package saolei.frame;import java.awt.BorderLayout;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import javax.swing.ImageIcon;import javax.swing.JFrame;import javax.swing.JPanel;import saolei.tools.Tools;import saolei.menubar.Mymenubar;import saolei.panel.MybompPanel;import saolei.panel.MyfacePanel;public class MymineFrame extends JFrameprivate Mymenubar mymenubar;/菜单栏private MyfacePanel myfacePanel;/笑脸lableprivate MybompPanel mybompPanel;/雷面板private JPanel jPanel;/主面板 用来装笑脸面板和雷面板public Mymenubar getMymenubar() return mymenubar;public void setMymenubar(Mymenubar mymenubar) this.mymenubar = mymenubar;public MyfacePanel getMyfacePanel() return myfacePanel;public void setMyfacePanel(MyfacePanel myfacePanel) this.myfacePanel = myfacePanel;public MybompPanel getMybompPanel() return mybompPanel;public void setMybompPanel(MybompPanel mybompPanel) this.mybompPanel = mybompPanel;public MymineFrame(String s)super(s);init();this.add(jPanel);/将主面板装到这个Framethis.pack();/自动设置大小this.setVisible(true);/设置Frame可见private void init() mymenubar=new Mymenubar(this);myfacePanel=new MyfacePanel();mybompPanel=new MybompPanel(this);jPanel=new JPanel();jPanel.setLayout(new BorderLayout();/将主面板设置为边框布局Tools.faceLabel.addMouseListener(new MouseAdapter() /对笑脸添加监听public void mousePressed(MouseEvent e) Tools.faceLabel.setIcon(Tools.faceIcon1);/未释放时笑脸凹下去public void mouseReleased(MouseEvent e) Tools.faceLabel.setIcon(Tools.faceIcon0);/释放时重新开局rePlay(););this.setIconImage(new ImageIcon(./images/icon.gif).getImage();/设置扫雷图标this.setLocationRelativeTo(null);/设置窗口相对于指定组件的位置,因为参数为nul,所以此窗口将置于屏幕的中央this.setDefaultCloseOperation(EXIT_ON_CLOSE);/设置在关闭时退出this.setResizable(false);/设置不可变大小this.setJMenuBar(mymenubar);/放入菜单jPanel.add(myfacePanel,BorderLayout.NORTH);/放笑脸jPanel.add(mybompPanel,BorderLayout.CENTER);/放雷区public void rePlay()/重新开局函数Tools.timer.stop();/时间开始,因为只能有一个计时器所以将它写在静态区Tools.myTimerTask.time = 0;/设置开始时间为0Tools.timeLabelB.setIcon(Tools.numberIcon0);Tools.timeLabelS.setIcon(Tools.numberIcon0);Tools.timeLabelG.setIcon(Tools.numberIcon0);this.remove(jPanel);/移除主面板然后重新new一个jPanel = new JPanel();mymenubar = new Mymenubar(this);/重新定义里面元素myfacePanel = new MyfacePanel();Tools.setMineCount(Tools.mineCount);Tools.faceLabel.setIcon(Tools.faceIcon0);mybompPanel = new MybompPanel(this);jPanel.setLayout(new BorderLayout();jPanel.add(myfacePanel, BorderLayout.NORTH);jPanel.add(mybompPanel, BorderLayout.CENTER);/重新装载组件this.add(jPanel);this.pack();this.validate();/确保组件具有有效的布局public static void main(String args) MymineFrame mymineFrame=new MymineFrame(扫雷);/主函数 ,函数入口雷面板package saolei.panel;import java.awt.Color;import java.awt.GridLayout;import javax.swing.BorderFactory;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.border.BevelBorder;import javax.swing.border.Border;import saolei.frame.MymineFrame;import saolei.lable.MymineLable;import saolei.listener.MyListener;import saolei.tools.Tools;public class MybompPanel extends JPanelpublic MymineFrame mymineFrame;private int leftClick;public int getLeftClick() return leftClick;public void setLeftClick(int leftClick) this.leftClick = leftClick;private MymineLablemymineLables;public MymineLable getMymineLables() return mymineLables;public void setMymineLables(MymineLable mymineLables) this.mymineLables = mymineLables;public MybompPanel(MymineFrame m)this.mymineFrame=m;init();private void init() this.setBackground(Color.LIGHT_GRAY);Border border1 = BorderFactory.createEmptyBorder(5, 5, 5, 5);Border border2 = BorderFactory.createBevelBorder(BevelBorder.LOWERED);this.setBorder(BorderFactory.createCompoundBorder(border1, border2);MyListener myListener=new MyListener(this);this.setLayout(new GridLayout(Tools.rowCount,Tools.colCount);mymineLables = new MymineLableTools.rowCountTools.colCount;for (int i = 0; i Tools.rowCount; i+) for (int j = 0; j Tools.colCount; j+) mymineLablesij = new MymineLable(i, j);mymineLablesij.addMouseListener(myListener);this.add(mymineLablesij);public void setMine(int rowx,int coly)for(int i=0;iTools.mineCount;i+)int x=(int)(Math.random()*Tools.rowCount);int y=(int)(Math.random()*Tools.colCount);if(x=rowx&y=coly)i-;if(mymineLablesxy.isIsmine()i-;elsemymineLablesxy.setIsmine(true);mymineLablesxy.setIcon(Tools.blank);for (int i = 0; i Tools.rowCount; i+) /算雷for (int j = 0; j Tools.colCount; j+) int count = 0;if (mymineLablesij.isIsmine() = false) for (int x =i - 1; x = i + 1; x+) for (int y =j - 1; y =0 & x=0 & yTools.colCount) if (mymineLablesxy.isIsmine() count+;mymineLablesij.setCount(count);笑脸面板package saolei.panel;import java.awt.BorderLayout;import java.awt.Color;import java.awt.Image;import javax.swing.BorderFactory;import javax.swing.Box;import javax.swing.ImageIcon;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.border.BevelBorder;import javax.swing.border.Border;import saolei.tools.Tools;public class MyfacePanel extends JPanelprivate Box box;public MyfacePanel()init();public void init() this.setLayout(new BorderLayout();box = Box.createHorizontalBox();box.add(Box.createHorizontalStrut(5);box.add(Tools.mineLabelB);box.add(Tools.mineLabelS);box.add(Tools.mineLabelG);box.add(Box.createHorizontalGlue();box.add(Tools.faceLabel);box.add(Box.createHorizontalGlue();box.add(Tools.timeLabelB);box.add(Tools.timeLabelS);box.add(Tools.timeLabelG);box.add(Box.createHorizontalStrut(5);this.add(box);this.setBackground(Color.LIGHT_GRAY);Border border1 = BorderFactory.createEmptyBorder(5,5,5,5);Border border2 = BorderFactory.createBevelBorder(BevelBorder.LOWERED);this.setBorder(BorderFactory.createCompoundBorder(border1,border2);关于扫雷对话框package saolei.dialog;import java.awt.BorderLayout;import java.awt.Dimension;import java.awt.FlowLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.BorderFactory;import javax.swing.Box;import javax.swing.BoxLayout;import javax.swing.ImageIcon;import javax.swing.JButton;import javax.swing.JDialog;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.border.Border;import saolei.frame.MymineFrame;public class AboutSweeping extends JDialog /* * */private static final long serialVersionUID = 1L;private JLabel labelIcon;private JLabel labelOne;private JLabel labelTwo;private JLabel labelThree;private JLabel labelFour;private JLabel labelFive;private Box boxOne;private Box boxTwo;private Box boxThree;private Box boxFour;private Box boxFive;private JPanel panelT;AboutSweeping sweep = null;public AboutSweeping() public AboutSweeping(MymineFrame mainFrame) super(mainFrame);sweep = this;this.setTitle(关于 扫雷);init();this.setSize(new Dimension(300, 200);this.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);this.setLocationRelativeTo(mainFrame);/this.setResizable(false);this.setModal(true);this.setVisible(true);private void init() JPanel panel = new JPanel();labelIcon = new JLabel(new ImageIcon(./images/icon.gif);labelOne = new JLabel(Java 扫雷智慧的挑战!);boxOne = Box.createHorizontalBox();boxOne.add(labelIcon);boxOne.add(Box.createHorizontalStrut(20);boxOne.add(labelOne);labelTwo = new JLabel(主要运用技术:swing和对象型数组);boxTwo = Box.createHorizontalBox();boxTwo.add(labelTwo);labelThree = new JLabel(主要知识:抽象类,继承,接口);boxThree = Box.createHorizontalBox();boxThree.add(labelThree);labelFour = new JLabel(版权所有:阿kiang);boxFour = Box.createHorizontalBox();boxFour.add(labelFour);labelFive = new JLabel(制作时间:2011.08.16);boxFive = Box.createHorizontalBox();boxFive.add(labelFive);panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS);panel.add(boxOne);panel.add(boxTwo);panel.add(boxThree);panel.add(boxFour);panel.add(boxFive);JButton button = new JButton(确定);button.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) sweep.dispose(););JPanel pl = new JPanel(new FlowLayout(FlowLayout.RIGHT);pl.add(button);panel.add(pl);Border border = BorderFactory.createEtchedBorder();panel.setBorder(border);panelT = new JPanel(new BorderLayout();Border b = BorderFactory.createEmptyBorder(10, 10, 10, 10);panelT.add(panel);panelT.setBorder(b);this.add(panel);扫雷英雄版package saolei.dialog;import java.awt.BorderLayout;import java.awt.Dimension;import java.util.SortedSet;import java.util.TreeSet;import javax.swing.JDialog;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTextArea;import javax.swing.table.DefaultTableModel;import saolei.frame.MymineFrame;import saolei.lable.HeroBean;import saolei.tools.Tools;public class HeroDialog extends JDialog /* * */private static final long serialVersionUID = 1L;private JPanel panel = null;private JTextArea area;private SortedSet heroSet;DefaultTableModel dataModel;private int level = 0;public HeroDialog(int level, MymineFrame mainFrame) /* * 设置拥有者 */super(mainFrame);this.level = level;init();this.setSize(new Dimension(220, 150);this.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);this.setLocationRelativeTo(mainFrame);this.setResizable(false);this.setModal(true);this.setVisible(true);private void init() heroSet = new TreeSet();area = new JTextArea();if (level = 1) heroSet = Tools.setB;this.setTitle(初级英雄榜); else if (level = 2) heroSet = Tools.setI;this.setTitle(中级英雄榜); else if (level = 3) heroSet = Tools.setE;this.setTitle(高级英雄榜);for (HeroBean bean : heroSet) area.append(bean.toString() + n);area.setEditable(false);JScrollPane jsp = new JScrollPane(area);panel = new JPanel(new BorderLayout();panel.add(jsp,BorderLayout.CENTER);this.add(panel);扫雷英雄版积分版package saolei.dialog;import java.awt.Dimension;import javax.swing.BorderFactory;import javax.swing.Box;import javax.swing.BoxLayout;import javax.swing.JButton;import javax.swing.JDialog;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JTextField;import javax.swing.border.Border;import saolei.frame.MymineFrame;import saolei.listener.HeroInputListener;import saolei.tools.Tools;public class HeroInputDialog extends JDialog/* * */private static final long serialVersionUID = 1L;private JTextField jtfN;private JLabel jlL;private JButton buttonY;private JButton buttonN;private JPanel panel;private Box box1;private Box box2;private Box box3;private HeroInputListener listen;public HeroInputDialog(MymineFrame mainFrame) /*固定拥有者*/super(mainFrame);listen = new HeroInputListener(this); init();this.setTitle(请输入英雄大名);this.setSize(new Dimension(200, 150);this.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);this.setLocationRelativeTo(mainFrame);this.setResizable(false);this.setModal(true);this.setVisible(true);private void init() jlL = new JLabel();if(Tools.mineCount=10)jlL.setText(完成初级扫雷, 请留下大名!);if(Tools.mineCount=40)jlL.setText(完成中级扫雷, 请留下大名!);if(Tools.mineCount=99)jlL.setText(完成高级扫雷,请留下大名!);panel = new JPanel();panel.setLayout(new BoxLayout(panel,BoxLayout.Y_AXIS);jtfN = new JTextField(匿名);jtfN.setPreferredSize(new Dimension(20,10);buttonY = new JButton(确定);buttonY.addActionListener(listen);buttonN = new JButton(取消);buttonN.addActionListener(listen);box1 = Box.createHorizontalBox();box1.add(jlL);box2 = Box.createHorizontalBox();box2.add(Box.createHorizontalStrut(30);box2.add(jtfN);box2.add(Box.createHorizontalStrut(30);box3 = Box.createHorizontalBox();box3.add(buttonY);box3.add(Box.createHorizontalStrut(10);box3.add(buttonN);panel.add(box1);panel.add(Box.createVerticalStrut(13);panel.add(box2);panel.add(Box.createVerticalStrut(13);panel.add(box3);Border border = BorderFactory.createEmptyBorder(15, 5, 10, 5);panel.setBorder(border);this.add(panel);public JButton getButtonN() return buttonN;public JButton getButtonY() return buttonY;public JTextField getJtfN() return jtfN;扫雷英雄版自定义对话框package saolei.dialog;import java.awt.BorderLayout;import java.awt.Dimension;import javax.swing.Box;import javax.swing.JButton;import javax.swing.JDialog;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JTextField;import saolei.frame.MymineFrame;import saolei.listener.SelfMineListener;import saolei.tools.Tools;public class Selfdefinedia extends JDialogprivate JPanel mianJPanel;private JPanel jPaneln;private JPanel jPanelc;private JPanel jPanels;private JLabel lx;private JLabel ly;private JLabel ll;private JTextField tx;private JTextField ty;private JTextField tl;private JButton sureButton;private JButton exitButton;public JPanel getMianJPanel() return mianJPanel;public void setMianJPanel(JPanel mianJPanel) this.mianJPanel = mianJPanel;public JPanel getjPaneln() return jPaneln;public void setjPaneln(JPanel jPaneln) this.jPaneln = jPaneln;public JPanel getjPanelc() return jPanelc;public void setjPanelc(JPanel jPanelc) this.jPanelc = jPanelc;public JPanel getjPanels() return jPanels;public void setjPanels(JPanel jPanels) this.jPanels = jPanels;public JLabel getLx() return lx;public void setLx(JLabel lx) this.lx = lx;public JLabel getLy() return ly;public void setLy(JLabel ly) this.ly = ly;public JLabel getLl() return ll;public void setLl(JLabel ll) this.ll = ll;public JTextField getTx() return tx;public void setTx(JTextField tx) this.tx = tx;public JTextField getTy() return ty;public void setTy(JTextField ty) this.ty = ty;public JTextField getTl() return tl;public void setTl(JTextField tl) this.tl = tl;public JButton getSureButton() return sureButton;public void setSureButton(JButton sureButton) this.sureButton = sureButton;public JButton getExitButton() return exitButton;public void setExitButton(JButton exitButton) this.exitButton = exitButton;public MymineFrame mymineFrame;public Selfdefinedia(MymineFrame mymineFrame)super(mymineFrame,自定义扫雷,true);init();this.mymineFrame=mymineFrame;this.setLocationRelativeTo(mymineFrame);this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);this.setResizable(false);this.pack();this.setVisible(true);private void init() lx = new JLabel(行数:);ly = new JLabel(列数:);ll = new JLabel(雷数:);tx = new JTextField(Tools.rowCount+);tx.setPreferredSize(new Dimension(40,20);ty = new JTextField(Tools.colCount+);ty.setPreferredSize(new Dimension(40,20);tl = new JTextField(Tools.mineCount+);tl.setPreferredSize(new Dimension(40,20);sureButton = new JButton(确定);sureButton.addActionListener(new SelfMineListener(this);exitButton = new JButton(取消);exitButton.addActionListener(new SelfMineListener(this);jPaneln = new JPanel();jPaneln.add(lx);jPaneln.add(tx);jPaneln.add(sureButton);jPanelc = new JPanel();jPanelc.add(ly);jPanelc.add(ty);jPanelc.add(Box.createHorizontalStrut(57);jPanels = new JPanel();jPanels.add(ll);jPanels.add(tl);jPanels.add(exitButton);mianJPanel = new JPanel();mianJPanel.setLayout(new BorderLayout();mianJPanel.add(jPaneln,BorderLayout.NORTH);mianJPanel.add(jPanelc,BorderLayout.CENTER);mianJPanel.add(jPanels,BorderLayout.SOUTH);this.add(mianJPanel);package saolei.lable;public class HeroBean implements Comparableprivate String name = null;private String level = null;private int time = 0;public String getLevel() return level;public void setLevel(String level) this.level = level;public String getName() return name;public void setName(String name) = name;public i

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论