基本信息
源码名称:游戏-Java扫雷 例子源码下载
源码大小:7.27KB
文件格式:.zip
开发语言:Java
更新时间:2015-01-26
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 2 元×
微信扫码支付:2 元
×
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
源码介绍
Java扫雷
Java扫雷
import java.awt.BorderLayout; import java.awt.Color; import java.awt.Container; import java.awt.FlowLayout; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import javax.swing.BoxLayout; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.Timer; public class Mine { // private static JFrame frame;//此处的static会导致 GridLayout无法正常显示 //private static final TimeCtrl tc=new TimeCtrl(); private JFrame frame; private JPanel p1,p2,p3; private JMenu degree,about; private JMenuBar menuBar1; private JMenuItem item1,item2,item3,item4,item5,item6,item7; public static JLabel label1; private JLabel label2,label3; private int row,col,sum; private int [][] data; private JButton start; private static int t=0,t0=0,t1=0,t2=0; private int[][] tag; private JButton[][] button; //TimeCtrl t; private int mineNum,mineCount;//the number of Mines and the number has be fined private boolean isOver,over;//End of game; private static Timer timer;//=new Timer(1000,new Time()); private ImageIcon imageIcon1,imageIcon2; private static Mine primary,intermediate,advanced; // private static Mine primary=new Mine(10,10,12), // intermediate=new Mine(15,15,30),advanced=new Mine(20,20,40),current; //private JContainer content; public Mine(){} public Mine(int r,int c,int n) { //row=10;col=10;mineNum=12; row=r;col=c;mineNum=n; frame=new JFrame("Mine"); imageIcon1=new ImageIcon("./res/success.gif"); imageIcon2=new ImageIcon("./res/failed.gif"); //p1=new JPanel(); p2=new JPanel(); p3=new JPanel(); menuBar1=new JMenuBar(); degree=new JMenu("等级"); about=new JMenu("关于"); item1=new JMenuItem("初级"); item2=new JMenuItem("中级"); item3=new JMenuItem("高级"); item4=new JMenuItem("关于"); item5=new JMenuItem("最高分"); item6=new JMenuItem("存档"); item7=new JMenuItem("载入"); label1=new JLabel("时间"); label2=new JLabel("剩余标记数"); start=new JButton("开始"); button =new JButton[row][col]; data=new int[row][col]; tag=new int[row][col]; timer=new Timer(1000,new Time()); //content = frame.getContentPane(); } public void init() { degree.add(item1); degree.add(item2); degree.add(item3); about.add(item5); about.add(item4); about.add(item6); about.add(item7); menuBar1.add(degree); menuBar1.add(about); frame.setLayout(new BorderLayout()); item1.addActionListener(new item1ActionListener()); item2.addActionListener(new item2ActionListener()); item3.addActionListener(new item3ActionListener()); item4.addActionListener(new item4ActionListener()); item5.addActionListener(new item5ActionListener()); item6.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent arg0) { // TODO Auto-generated method stub item6ActionListener1 A6=new item6ActionListener1(data,tag); }}); //p2.setLayout(new BoxLayout(p2,BoxLayout.LINE_AXIS));//这个不合适 p2.setLayout(new FlowLayout(FlowLayout.CENTER,10,0));//FlowLayout(int align,hgap.vgap) //The value of the alignment argument must be one of ///FlowLayout.LEFT, FlowLayout.RIGHT, FlowLayout.CENTER, FlowLayout.LEADING=3, or //FlowLayout.TRAILING=4.//后面的拖尾的int java.awt.FlowLayout.CENTER = 1 [0x1] //p2.setLayout(new GridLayout(1,3,20,20)); //label1.setSize(40,40); //label2.setSize(40,40); //start.setSize(40,40); p3.setLayout(new GridLayout(row,col,4,4)); p2.add(label1);//,BorderLayout.WEST);//后面的加不加没用 p2.add(start); p2.add(label2);//,BorderLayout.WEST); //p2.set(100,400); //p2.setBounds(0,50,100,400); //frame.add(label1);label1.setBounds(0,50,50,50);//<---这个有用 frame.add(menuBar1,BorderLayout.NORTH); frame.add(p2,BorderLayout.CENTER); frame.add(p3,BorderLayout.SOUTH); start.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent a) { for (int i = 0; i < row; i ) { for (int j = 0; j < col; j ) { button[i][j].setText(" "); button[i][j].setBackground(Color.WHITE); data[i][j]=0; p3.add(button[i][j]); isOver=false; } } Deploy d=new Deploy(); data=d.DeployMine(row,col,mineNum); mineCount=0; start.setIcon(null); label1.setText("GO");//t0=t2=t1=0; timer.start();t=0; //tc.setInit(); //t0=t2=t1=0; } }); for (int i = 0; i < row; i ) { for (int j = 0; j < col; j ) { button[i][j]=new JButton(" "); button[i][j].setName((i ":" j)); button[i][j].setBackground(Color.WHITE); button[i][j].addMouseListener(new MousePressed()); //button[i][j].setSize(40,40); //button[i][j].setPreferredSize(null); p3.add(button[i][j]); } } Deploy d=new Deploy(); data=d.DeployMine(row,col,mineNum);//tc.setInit(); timer.start();t=0;//t0=t2=t1=0;// //button[9][9].setText(); } public int [][] getData() { return data; } public int [][] getTag() { return tag; } public class MousePressed extends MouseAdapter {//监听button //public void actionPerformed(ActionEvent arg0) public void mousePressed(MouseEvent e) { try { if(isOver) return; if(e.getButton()==MouseEvent.BUTTON3) { JButton btn=(JButton)e.getSource(); //JOptionPane.showMessageDialog(null, btn.getBackground(), "警告!!!", JOptionPane.ERROR_MESSAGE); if(btn.getBackground()==Color.YELLOW)//如果已经排除 的地方右击 无反应 { return; } //Deploy d=new Deploy(); //d.mousePressR(btn);//当点击的是右键的时候 mousePressR(btn);//当点击的是右键的时候 } else { JButton btn=(JButton)e.getSource(); if(!btn.getText().equals("?"))// 当 已经被标记了之后就不可以在点击 mousePress(btn); } } catch (Exception e2) { // TODO: handle exception e2.printStackTrace(); } } } private void Check(JButton btn) { //JOptionPane.showMessageDialog(null, btn.getText(), "警告!!!", JOptionPane.ERROR_MESSAGE); String str[]=btn.getName().split(":"); int i=Integer.parseInt(str[0]); int j=Integer.parseInt(str[1]); if(data[i][j]==-1&&button[i][j].getText().equals("?")) { sum--;//当取消 真正雷上的标记时 //label1.setText("" sum); //JOptionPane.showMessageDialog(null, "sum--", "警告!!!", JOptionPane.ERROR_MESSAGE); return; } if(data[i][j]==-1) { sum ; } if(sum>=mineNum) { //label1.setText("Success"); //胜利了 timer.stop(); isOver=true; start.setIcon(imageIcon1); String nameTop=JOptionPane.showInputDialog(null,"请输入你的名字:","最高分录入",JOptionPane.PLAIN_MESSAGE); System.out.print("\n\n" nameTop "Time:" t); new Record(t,nameTop); } else { //label1.setText(" " sum); } } private void mousePressR(JButton btn) { //get the button object which has been marked String str[]=btn.getName().split(":"); int i=Integer.parseInt(str[0]); int j=Integer.parseInt(str[1]); if(btn.getText().equals("?")) {Check(btn); btn.setText(" "); tag[i][j]=0; mineCount--; label2.setText("剩余标记数" (mineNum-mineCount)); btn.setBackground(Color.WHITE); //if() } else {mineCount ;Check(btn); if(mineCount<=mineNum) { btn.setText("?"); btn.setBackground(Color.BLUE); tag[i][j]=2; } else { JOptionPane.showMessageDialog(null, "标记数不能大于地雷数", "警告!!!", JOptionPane.ERROR_MESSAGE); mineCount--; //label1.setText("标记数不能大于地雷数"); } label2.setText("剩余标记数" (mineNum-mineCount)); } } private void mousePress(JButton btn) { String str[]=btn.getName().split(":"); int i=Integer.parseInt(str[0]); int j=Integer.parseInt(str[1]); if(data[i][j]==-1) { gameOver(true); return; } else { tag[i][j]=1; if(data[i][j]==0){btn.setText("");} else { btn.setText(data[i][j] "");} btn.setBackground(Color.YELLOW); if(data[i][j]==0) { for (int k = -1; k <=1; k ) { for (int k2 = -1; k2 <=1; k2 ) { if(i k>=0&&j k2>=0&&i k<row&&j k2<col) if(button[i k][j k2].getText().equals(" ")) {mousePress(button[i k][j k2]);} } } } } } private void gameOver(boolean over) { if(over==true) { timer.stop(); //tc.Stop(); for (int i = 0; i < row; i ) { for (int j = 0; j < col; j ) { if(data[i][j]==-1) { button[i][j].setText("M"); button[i][j].setBackground(Color.RED); } } } start.setIcon(imageIcon2); //TimeCtrl tim=new TimeCtrl();tim.Stop(); //t.Stop(); //label2.setIcon(imageIcon2); //label1.setText(imageIcon1); timer.stop(); //tc.Stop(); isOver=true; return; } } /* public class Time1 implements ActionListener { int t0=0,t1=0,t2=0; String s=""; @Override public void actionPerformed(ActionEvent arg0) { // TODO Auto-generated method stub t0 ; if(t0>=60) { t1=t0/60; t0=t0%60; } if(t1>=60) { t2=t1/60; t1=t1%60; } if(t2>0) s="时间:" t2 "小时" t1 "分" t0 "秒"; if(t1>0) s="时间:" t1 "分" t0 "秒"; if(t0>=0) s="时间:" t0 "秒"; //Mine c=new Mine(); //label1.setText(s); } }*/ public class item1ActionListener implements ActionListener { @Override public void actionPerformed(ActionEvent arg0) { // TODO Auto-generated method stub timer.stop(); primary=new Mine(10,10,12); primary.init(); primary.start(500,400); //tc.setInit(); //primary.timer.stop(); //intermediate.timer.stop(); //advanced.timer.stop(); //t0=t2=t1=0; //System.gc(advanced); //primary.timer.start(); //intermediate=new Mine(); //primary.FrameClose(frame); intermediate.FrameClose(frame); advanced.FrameClose(frame); //primary.init(); } } public class item2ActionListener implements ActionListener { @Override public void actionPerformed(ActionEvent arg0) { // TODO Auto-generated method stub //timer.cancel(); timer.stop(); intermediate=new Mine(15,15,20); intermediate.init(); intermediate.start(750,600); //tc.setInit(); //t0=t2=t1=0; primary.FrameClose(frame); //intermediate.FrameClose(frame); advanced.FrameClose(frame); //primary.init(); } } public class item3ActionListener implements ActionListener { @Override public void actionPerformed(ActionEvent arg0) { // TODO Auto-generated method stub timer.stop(); advanced=new Mine(20,20,40); advanced.init(); advanced.start(1000,750); //tc.setInit(); //t0=t2=t1=0; primary.FrameClose(frame); intermediate.FrameClose(frame); //advanced.FrameClose(frame); //primary.init(); } } public class Time implements ActionListener { String s=""; @Override public void actionPerformed(ActionEvent arg0) { // TODO Auto-generated method stub t ; t2=(int)t/360; t1=(t/60)%60; t0=t%60; if(t2>0) s="时间:" t2 "小时" t1 "分" t0 "秒"; else if(t1>0) s="时间:" t1 "分" t0 "秒"; else if(t0>=0) s="时间:" t0 "秒"; label1.setText(s); } } public void FrameClose(JFrame frame) { //if(b==true) frame.setVisible(false); //primary.setVisible(false); //frame.exit(0); // System.exit(0); } public void start(int x,int y) { frame.setSize(x,y); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } public static void main(String[] args) { primary=new Mine(10,10,12); primary.init(); primary.start(500,450); //TimeCtrl t=new TimeCtrl();//t.start(); //Mine.frame.setSize(500,400); //Mine.frame.setVisible(true); } }