可按Ctrl+D收藏 蚂蚁资源网

蚂蚁资源网

扫雷源码(网页版红包扫雷源码)

  • 全部评论(3)
  • dfgj
  • import java.awt.*;import javax.swing.*;import java.util.Random;import java.awt.event.*;class Min extends JPanel //雷的类{ //备注:鼠标的左键 = 1;右键 = 3;中键 = 2 private int flag = 0,statu = 0; //定义雷的属性 0:没有打开 1:打开 2:标示为雷 3:不确定 //flag = 0 不是雷 ; flag = 1是雷 private int but,count = 0; //but:哪一个鼠标键被按下去了 count:这个区域周围有多少个雷 private int mx = 0,my = 0,mw = 10; //定义雷的坐标和宽度 public Min() //构造函数 { statu = 0; } public Min(int f,int x,int y,int w) //构造函数 { flag = f; mx = x; my = y; mw = w; } public int getFlag(){return flag;} public int getStatu(){return statu;} public int getMx(){return mx;} public int getMy(){return my;} public int getMw(){return mw;} public int getCount(){return count;} public void setFlag(int f){flag = f;} public void setCount(int c){count = c;} public void setData(int f,int x,int y,int w,int s) //传递值 { flag = f; mx = (x-1)*w; my = (y-1)*w; mw = w-1; statu = s; } //根据你点击鼠标的不同来改变雷的属性 public int sendKey(int key) { //返回值,如果游戏结束则返回-1 int rtn = 1; if(key == 3) { switch(statu) { case 1: break; case 2: statu = 3; break; case 3: statu = 0; break; case 0: statu = 2; break; } rtn = 1; } if(key == 1 && statu == 0) { switch(flag) { case 0: statu = 1; rtn = 2; break; case 1: statu = 1; rtn = -1; break; } } return rtn; }}class DrawPanel extends JPanel{ private int i,j; private int f = 0; //if f = 1 then game over ,if f =2 then win private int chx = 0,chy = 0; //专门记录坐标x,y的值 private int msum = 6,ksum = 0; //msum:雷的个数,ksum:标示雷的个数 private int bx = 10,by = 10,bw = 40; //bx,by:棋盘的大小,bw:棋子的大小 public Min board[][] = { {new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min()}, {new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min()}, {new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min()}, {new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min()}, {new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min()},{new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min()}, {new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min()}, {new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min()}, {new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min()}, {new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min()}, {new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min()}, {new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min()}, {new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min()}, {new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min()}, {new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min()}, {new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min()}, {new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min()}, {new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min()}, {new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min()}, {new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min()}, }; // 画坐标为ax,ay区域的雷的状态 public void draw(Graphics g,int ax,int ay) { int x,y,w; // 坐标x,y;和宽度:w int s,c,flag; //状态;雷的个数; int cx = bw/2 - 4; int cy = bw/2 + 4; x = board[ax][ay].getMx(); y = board[ax][ay].getMy(); w = board[ax][ay].getMw(); s = board[ax][ay].getStatu(); c = board[ax][ay].getCount(); flag= board[ax][ay].getFlag(); switch(s) { case 0: //没有打开状态 { g.setColor(Color.black); g.fillRect(x,y,w,w); break; } case 1: //打开状态 { g.setColor(Color.blue); g.fillRect(x,y,w,w); if(c != 0 && flag == 0) //此处没有雷 { g.setColor(Color.red); g.drawString(String.valueOf(c),x + cx,y + cy); } if(flag == 1) //此处有雷 { g.setColor(Color.red); g.fillRect(x,y,w,w); g.setColor(Color.blue); g.drawString(" 雷",x + cx,y + cy);} break; } case 2: //标雷状态 { g.setColor(Color.green); g.fillRect(x,y,w,w); g.setColor(Color.blue); g.drawString(" 旗",x + cx,y + cy); break; } case 3: //不确定状态 { g.setColor(Color.black); g.fillRect(x,y,w,w); g.setColor(Color.red); g.drawString("?",x + cx,y + cy); break; } default: break; } } // 没有图形器的绘图函数:画出坐标ax,ay的雷的状态和图形 public void draw(int ax,int ay) { Graphics g; g = this.getGraphics(); draw(g,ax,ay); } //打开周围没有雷的地方,并且绘画所在区域点击左键触发 public int openNoMin(int ax,int ay) { int i,j; if(ax<1||ay<1||ax>bx||ay>by) return 0; //鼠标点击的区域出界了 if(board[ax][ay].getStatu() != 0) return 0; //如果此区域打开了,返回 board[ax][ay].sendKey(1); //如果返回值等于-1,就说明游戏结束 draw(ax,ay); if(board[ax][ay].getFlag() == 1) //如果游戏结束,把所有的雷都显示出来 { for(i = 1;i<=bx;i++) { for(j = 1;j <= by;j++) { if(board[i][j].getFlag() == 1) { board[i][j].sendKey(1); draw(i,j); } } } return -1; } //如果游戏没有结束 if(board[ax][ay].getCount() > 0) { ksum ++; return 1; //周围有雷,就不用打开周围地区 } if(board[ax][ay].getCount() == 0 && board[ax][ay].getFlag() == 0) //周围没有雷,打开周围地区,直到有雷的地区 { openNoMin(ax-1,ay-1);openNoMin(ax,ay-1);openNoMin(ax+1,ay-1); openNoMin(ax-1,ay ); openNoMin(ax+1,ay ); openNoMin(ax-1,ay+1);openNoMin(ax,ay+1);openNoMin(ax+1,ay+1); } ksum ++; return 1; } //计算坐标x,y的周围雷的个数 public int getCount(int ai,int aj) { int sum = 0; if(board[ai][aj].getFlag() == 1) { return sum; } if(ai>1&&aj>1&&ai<bx&&aj<by) { sum = board[ai-1][aj-1].getFlag()+ board[ai][aj-1].getFlag()+ board[ai+1][aj-1].getFlag()+ board[ai-1][aj ].getFlag()+ board[ai+1][aj ].getFlag()+ board[ai-1][aj+1].getFlag()+ board[ai][aj+1].getFlag()+ board[ai+1][aj+1].getFlag(); } if(ai==1&&aj==1) { sum = board[ai+1][aj ].getFlag()+ board[ai][aj+1].getFlag()+ board[ai+1][aj+1].getFlag(); } if(ai==1&&aj==by) { sum = board[ai][aj-1].getFlag()+ board[ai+1][aj-1].getFlag()+ board[ai+1][aj ].getFlag(); } if(ai==bx&&aj==1) { sum = board[ai-1][aj ].getFlag()+ board[ai-1][aj+1].getFlag()+ board[ai][aj+1].getFlag(); } if(ai==bx&&aj==by) { sum = board[ai-1][aj-1].getFlag()+ board[ai][aj-1].getFlag()+ board[ai-1][aj ].getFlag(); } if(ai==1&&aj>1&&aj<by) { sum = board[ai][aj-1].getFlag()+ board[ai+1][aj-1].getFlag()+ board[ai+1][aj ].getFlag()+ board[ai][aj+1].getFlag()+ board[ai+1][aj+1].getFlag();} if(ai==bx&&aj>1&&aj<by) { sum = board[ai-1][aj-1].getFlag()+ board[ai][aj-1].getFlag()+ board[ai-1][aj ].getFlag()+ board[ai-1][aj+1].getFlag()+ board[ai][aj+1].getFlag(); } if(ai>1&&ai<bx&&aj==1) { sum = board[ai-1][aj ].getFlag()+ board[ai+1][aj ].getFlag()+ board[ai-1][aj+1].getFlag()+ board[ai][aj+1].getFlag()+ board[ai+1][aj+1].getFlag(); } if(ai>1&&ai<bx&&aj==by) { sum = board[ai-1][aj-1].getFlag()+ board[ai][aj-1].getFlag()+ board[ai+1][aj-1].getFlag()+ board[ai-1][aj ].getFlag()+ board[ai+1][aj ].getFlag(); } return sum; } // 传入参数:几列,几行,宽度,雷数 public void initMin(int ax,int ay,int aw,int as) { int k = 1; //表明产生的第几个雷 Random r; //随机数 f = 0; //f=0表示游戏还没有结束 ksum = 0; bx = ax; by = ay; bw = aw; msum = as; r = new Random(); //初始化底盘的值 for(i = 1;i <= bx;i++) { for(j=1;j<=by;j++) { board[i][j].setData(0,i,j,bw,0); } } // 随机产生雷 while(k <= msum) { i = r.nextInt(bx)+1; j = r.nextInt(by)+1; if(board[i][j].getFlag() != 1) { board[i][j].setFlag(1); k++; } } // 非雷区的周围有几个雷,初始化其值 for(i = 1;i <= bx;i++) { for(j=1;j<=by;j++) { board[i][j].setCount(getCount(i,j)); } } setBackground(Color.white); repaint(); } // 构造函数 public DrawPanel(int ax,int ay,int aw,int as) { initMin(ax,ay,aw,as); addMouseListener(new MouseAdapter() { public void mousePressed(MouseEvent me) { int r; if(f != 0) return; //如果游戏结束,返回 chx = me.getX(); chy = me.getY(); if(me.getButton() != 1) { board[chx/bw+1][chy/bw+1].sendKey(me.getButton()); draw(chx/bw+1,chy/bw+1); } else if(me.getButton() == 1) { if(openNoMin(chx/bw+1,chy/bw+1) == -1) { f = 1; repaint(); } else if ( ksum + msum == bx*by ) { f = 2; repaint(); } } } } ); } // 重画所有的图形,包括一些修饰的图形 public void paint(Graphics g) { int x,y,w; int s; int cx = bw/2 - 4; int cy = bw/2 + 4; g.clearRect(0,0,600,600); for(i=1;i<=bx;i++) { for(j=1;j<=by;j++) { draw(g,i,j); } } if(f == 1) { Font f = new Font("11",1,70); Font fo = g.getFont(); g.setColor(Color.white); g.setFont(f); //g.setSize(); g.drawString("Game Over",0,200); g.setFont(fo); } if( f == 2 ) { Font f = new Font("11",1,70); Font fo = g.getFont(); g.setColor(Color.white);g.setFont(f); //g.setSize(); g.drawString("You win!",0,200); g.setFont(fo); } }};// 主类和程序的入口public class Mine extends JFrame implements ActionListener{ Container cp = getContentPane(); JButton bt = new JButton("开局"); Label l1 = new Label("列:"); Label l2 = new Label("行:"); Label l3 = new Label("宽度:"); Label l4 = new Label("雷的个数:"); TextField tf1 = new TextField("10",2); //列 TextField tf2 = new TextField("10",2); //行 TextField tf3 = new TextField("40",2); //宽度 TextField tf4 = new TextField("15",2); //雷的个数 int x=10,y=10,w=40,sum=15; DrawPanel dp = new DrawPanel(x,y,w,sum); public Mine() { setBackground(Color.white); cp.setLayout(null); cp.add(dp); cp.add(bt); cp.add(tf1); cp.add(tf2); cp.add(tf3); cp.add(tf4); cp.add(l1); cp.add(l2); cp.add(l3); cp.add(l4); l1.setBounds(20 ,10,20,20); tf1.setBounds(40,10,20,20); l2.setBounds(70,10,20,20); tf2.setBounds(90,10,20,20); l3.setBounds(120,10,40,20); tf3.setBounds(160,10,20,20); l4.setBounds(190,10,60,20); tf4.setBounds(250,10,20,20); bt.setBounds(300,10,80,20); dp.setBounds(20,40,x*w,y*w); setResizable(false); setSize(x*w+40,y*w+80); setTitle(" 扫雷"); show(); bt.addActionListener(this); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) {System.exit(0);} } ); } public void actionPerformed(ActionEvent e) { if(e.getSource() == bt) { //x = Integer.parseInt(tf1.getText()); //y = Integer.parseInt(tf2.getText()); //w = Integer.parseInt(tf3.getText()); sum = Integer.parseInt(tf4.getText()); setSize(x*w+40,y*w+80); dp.setBounds(20,40,x*w,y*w); show(); dp.initMin(x,y,w,sum); } } public static void main(String args[]) { new Mine(); }};
  • 2021-02-20 09:55:01
  • 苹果cms
  • 看看这个如何!#include #include #include #define LEFTPRESS 0xff01 #define LEFTCLICK 0xff10 #define LEFTDRAG 0xff19 #define MOUSEMOVE 0xff08 int num[10][10];/*范围*/ int p[10][10];/*统计雷的数组*/ int loop;/*重新来的标志*/ int again=0;/*是否重来的变量*/ int scorenum;/*一开始统计有几个雷*/ char score[3];/*输出一共有几个地雷*/ int Keystate; int MouseExist; int MouseButton; int MouseX; int MouseY; /*鼠标光标形状定义*/ typedef struct { unsigned int shape[32]; char hotx; char hoty; }SHAPE; /*箭头型*/ SHAPE ARROW={ { 0x3fff,0x1fff,0x0fff,0... if(num[1][9]==10) x++; { _AX=0x02,75,100+i*20-8; #define LEFTPRESS 0xff01 #define LEFTCLICK 0xff10 #define LEFTDRAG 0xff19 #define MOUSEMOVE 0xff08 int num[10][10]; int MouseY,0x07ff, 0x003f,0x00ff,0x007f,0x10ff,0x6000,0; geninterrupt(0x33); fillellipse(290;*是地雷的就显示出来*/, 0x0000;10; // } else if(i==0&&j==9) { if(num[0][8]==10) x++; int p[10][10];*鼠标光标隐藏*/,j;j< for(i=100; setcolor(1),0x0300; int MouseExist, 0x0600; outtextxy(210,2); fillellipse(200+j*20;j+=20) bar(j-8; fillellipse(295, 0x03ff, 0x30ff;/,scorenum); } void MouseSetXY(int x; setfillstyle(SOLID_FILL,0x7000,75; setcolor(YELLOW);*鼠标光标显示*/i< setcolor(0); randomize(); { _CX=x;j< char hoty;*左键按下*/ bar(190,i+8,10; bar(287,70; if(num[1][1]==10) x++,0x7c00;*用10代表地雷算了*/ geninterrupt(0x33), 0x7f80; { int i;/ scorenum=100-scorenum; #include < if(num[i][j]==10) scorenum++,int j)/ fillellipse(285; if(num[9][1]==10) x++; } } int tongji(int i;300; if(i==0&&j==0) { if(num[0][1]==10) x++; char score[3]; int MouseButton; int loop;*10代表地雷*/10;*游戏结束画面*/ { int x=0,0x7e00;10; settextstyle(0;*输出一共有几个地雷*/*计算有几个雷*/,0x0180 },0x4600看看这个如何;*统计雷的数组*/*得到当前位置*/,81).h&gt,0x7f00,290);i&lt,0x00ff,0),0x01ff; setfillstyle(SOLID_FILL;10;%d"dos; MouseX=180,0x7e00;*鼠标光标掩示*/,80: cleardevice(),YELLOW),0xf87f; void MouseOn() { _AX=0x01; bar(200+j*20-8;stdlib; for(i=0;// } gameove()/ geninterrupt(0x33); setfillstyle(SOLID_FILL,score),200+j*20+8,7);graphics;*鼠标光标形状定义*/ { _AX=0x03,RED),j+8,75; char hotx; int scorenum; setfillstyle(SOLID_FILL;*画脸*/*游戏开始画面*// MouseY=30; if(num[1][8]==10) x++; MouseX=_CX;/.h> void MouseOff()/ /,7),10);/ setcolor(7);,0x01ff;*一开始统计有几个雷*/i+=20)/j++) if(num[i][j]==10)/ typedef struct { unsigned int shape[32]; scorenum=0; geninterrupt(0x33),2,2); if(num[8][1]==10) x++; geninterrupt(0x33); { _AX=0x03,0xf87f; }SHAPE; loop,8);j for(i=0;*画格子*//,2); } else if(i==9&&j==9) { if(num[9][8]==10) x++,j,0; MouseY=_DX,0x1fff,2;400,100+i*20+8),0x7c00;/ _DX=y;*箭头型*/, };*是否重来的变量*/,100+i*20,0x0fff; setfillstyle(SOLID_FILL.h&gt, 0,390; SHAPE ARROW={ { 0x3fff; } sprintf(score;*重新来的标志*/,int y)/ if(num[1][0]==10) x++; { int i,0x0300; int Keystate;i++) for(j=0,0xfc3f; return(_BX&1)!#include { num[i][j]=random(7)+10,293,&quot,30); MouseSetXY(180; _AX=0x04;i&lt,i-8); } else if(i==9&&j==0) { if(num[8][0]==10) x++; } int LeftPress()/, 0x7800; int again=0; { setfillstyle(SOLID_FILL; #include &lt,7; / setcolor(0); for(j=200; } begain()/ } void MouseGetXY()/,0); MouseOn(),0x7c00; } /i++) for(j=0;*范围*/,60; int MouseX;*为了后面判断胜利*/
  • 2021-02-11 18:14:42
  • mmnn
  • java 扫雷源代码,import java.awt.BorderLayout;import java.awt.Container;import java.awt.Font;import java.awt.GridLayout;import java.awt.Insets;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;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.JPanel;import javax.swing.Timer;public class ScanLei1 extends JFrame implements ActionListener{private static final long serialVersionUID = 1L;private Container contentPane;private JButton btn;private JButton[] btns;private JLabel b1;private JLabel b2;private JLabel b3;private Timer timer;private int row=9;private int col=9;private int bon=10;private int[][] a;private int b;private int[] a1;private JPanel p,p1,p2,p3;public ScanLei1(String title){62616964757a686964616fe58685e5aeb931333330323261super(title);contentPane=getContentPane();setSize(297,377);this.setBounds(400, 100, 400, 500);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);timer =new Timer(1000,(ActionListener) this);a = new int[row+2][col+2];initGUI();}public void initGUI(){ p3=new JPanel();b=bon;JMenuBar menuBar=new JMenuBar();JMenu menu1=new JMenu("游戏");JMenu menu2=new JMenu("帮助");JMenuItem mi1=new JMenuItem("初级");JMenuItem mi2 = new JMenuItem("中级");JMenuItem mi3 =new JMenuItem("高级");mi1.addActionListener(this);menu1.add(mi1);mi2.addActionListener(this);menu1.add(mi2);mi3.addActionListener(this);menu1.add(mi3);menuBar.add(menu1);menuBar.add(menu2);p3.add(menuBar);b1=new JLabel(bon+"");a1=new int[bon];btn =new JButton("开始");btn.addActionListener(this);b2=new JLabel("0");b3=new JLabel("");btns=new JButton[row*col]; p=new JPanel();p.setLayout(new BorderLayout());contentPane.add(p);p.add(p3,BorderLayout.NORTH);//combo=new JComboBox(new Object[]{"初级","中级","高级"} );//加监听/*combo.addItemListener(new ItemListener(){}});*/ p1=new JPanel();//在那个位置//(( FlowLayout)p1.getLayout()).setAlignment( FlowLayout.RIGHT);p1.add(b1);p1.add(btn);p1.add(b2);p1.add(b3);p.add(p3,BorderLayout.NORTH);p.add(p1,BorderLayout.CENTER); p2=new JPanel();p2.setLayout(new GridLayout(row,col,0,0));for(int i=0;i<row*col;i++){btns[i]=new JButton("");btns[i].setMargin(new Insets(0,0,0,0));btns[i].setFont(new Font(null,Font.BOLD,25));btns[i].addActionListener(this);btns[i].addMouseListener(new NormoreMouseEvent());p2.add(btns[i]);}contentPane.add(p,BorderLayout.NORTH);contentPane.add(p2,BorderLayout.CENTER);}public void go(){setVisible(true);}public static void main(String[] args){new ScanLei1("扫雷").go();}public void out(int[][] a,JButton[] btns,ActionEvent e,int i,int x,int y){ int p=1; if(a[x][y]==0){ a[x][y]=10; btns[i].setEnabled(false);//33 for(int l=y-1;l<=y+1;l++){ int m=x-1-1; int n=l-1; p=1; System.out.println(a[1][2]); if(n>-1&&n<col&&m>-1&&m<row) { for(int q=0;q<row&&p==1;q++){//col-->row; if(((n+col*q)>=(m*col))&&((n+col*q)<(m+1)*col)){ if(a[x-1][l]!=0&&a[x-1][l]!=10){ btns[n+col*q].setText(a[x-1][l]+""); a[x-1][l]=10; btns[n+col*q].setEnabled(false); } else if(a[x-1][l]==0){ //a[x-1][l]=10; btns[n+col*q].setEnabled(false); out(a,btns,e,n+col*q,x-1,l); ////55//// a[x-1][l]=10; btns[n+col*q].setEnabled(false); } p=0; } } } p=1; m=x; if(n>-1&&n<col&&m>-1&&m<col) { for(int q=0;q<row&&p==1;q++){ if(((n+col*q)>=(m*col))&&((n+col*q)<(m+1)*col)){ if(a[x+1][l]!=0&&a[x+1][l]!=10){ btns[n+col*q].setText(a[x+1][l]+""); a[x+1][l]=10; btns[n+col*q].setEnabled(false); } else if(a[x+1][l]==0){ out(a,btns,e,n+col*q,x+1,l);///55//// a[x+1][l]=10; btns[n+col*q].setEnabled(false); } p=0; } } } } int m=x-1; int n=y-1-1; p=1; if(n>-1&&n<col&&m>-1&&m<col){ for(int q=0;q<row&&p==1;q++){ if(((n+col*q)>=(m*col))&&((n+col*q)<(m+1)*col)){ if(a[x][y-1]!=0&&a[x][y-1]!=10){ btns[n+col*q].setText(a[x][y-1]+""); a[x][y-1]=10; btns[n+col*q].setEnabled(false); } else if(a[x][y-1]==0){out(a,btns,e,n+col*q,x,y-1); a[x][y-1]=10; btns[n+col*q].setEnabled(false); } p=0; } }} p=1; m=x-1; n=y+1-1; if(n>-1&&n<col&&m>-1&&m<col) { for(int q=0;q<row&&p==1;q++){ if(((n+col*q)>=(m*col))&&((n+col*q)<(m+1)*col)){ if(a[x][y+1]!=0&&a[x][y+1]!=10){ btns[n+col*q].setText(a[x][y+1]+""); a[x][y+1]=10; btns[n+col*q].setEnabled(false); } else if(a[x][y+1]==0){ out(a,btns,e,n+col*q,x,y+1); a[x][y+1]=10; btns[n+col*q].setEnabled(false); } p=0; } } }}}public void actionPerformed(ActionEvent e) {if(e.getActionCommand()=="初级"){row=9;col=9;bon=10;a1=new int[bon];b=bon;//setSize(297,377);a = new int[row+2][col+2];this.remove(p2);timer.stop();b1.setText("10");b2.setText("0");b3.setText("");btns=new JButton[row*col]; p2=new JPanel();p2.setLayout(new GridLayout(row,col,0,0));for(int i=0;i<row*col;i++){btns[i]=new JButton(" ");btns[i].setMargin(new Insets(0,0,0,0));btns[i].setFont(new Font(null,Font.BOLD,25));btns[i].addActionListener(this);btns[i].addMouseListener(new NormoreMouseEvent());p2.add(btns[i]);}contentPane.add(p2,BorderLayout.CENTER);//setSize(297,377);this.pack();for(int i=0;i<row*col;i++){btns[i].setText(" ");btns[i].setEnabled(true);}for(int i=0;i<row+2;i++){for(int j=0;j<col+2;j++){a[i][j]=0;}}}else if(e.getActionCommand()=="中级"){row=16;col=16;bon=40;//setSize(33*col,33*row+80);a1=new int[bon];a = new int[row+2][col+2]; b=bon;this.remove(p2);timer.stop();b1.setText("40");b2.setText("0");b3.setText("");btns=new JButton[row*col]; p2=new JPanel();p2.setLayout(new GridLayout(row,col,0,0));for(int i=0;i<row*col;i++){btns[i]=new JButton(" ");btns[i].setMargin(new Insets(0,0,0,0));btns[i].setFont(new Font(null,Font.BOLD,25));btns[i].addActionListener(this);btns[i].addMouseListener(new NormoreMouseEvent());p2.add(btns[i]);}contentPane.add(p2,BorderLayout.CENTER);this.pack();//setSize(33*col,33*row+80);for(int i=0;i<row*col;i++){btns[i].setText("");btns[i].setEnabled(true);}for(int i=0;i<row+2;i++){for(int j=0;j<col+2;j++){a[i][j]=0;}}}else if(e.getActionCommand()=="高级"){row=16;col=32;bon=99;setSize(33*col,33*row+80);a1=new int[bon];a = new int[row+2][col+2];b=bon;this.remove(p2);timer.stop();b1.setText("99");b2.setText("0");b3.setText("");btns=new JButton[row*col]; p2=new JPanel();p2.setLayout(new GridLayout(row,col,0,0));for(int i=0;i<row*col;i++){btns[i]=new JButton(" ");btns[i].setMargin(new Insets(0,0,0,0));btns[i].setFont(new Font(null,Font.BOLD,25));btns[i].addActionListener(this);btns[i].addMouseListener(new NormoreMouseEvent());p2.add(btns[i]);}contentPane.add(p2,BorderLayout.CENTER);//setSize(33*col,33*row+80);this.pack();for(int i=0;i<row*col;i++){btns[i].setText("");btns[i].setEnabled(true);}for(int i=0;i<row+2;i++){for(int j=0;j<col+2;j++){a[i][j]=0;}}}if(e.getSource()==btn){timer.start();b=bon;b3.setText("");//System.out.println(bon);//清空for(int i=0;i<row*col;i++){btns[i].setText("");btns[i].setEnabled(true);}for(int i=0;i<row+2;i++){for(int j=0;j<col+2;j++){a[i][j]=0;}}//产生随机数for(int i=0;i<bon;i++){ int p=1;int m=(int)(Math.random()*row*col);while(p==1){ int l=1; int j;for( j=0;j<i&&l==1;j++){ if(a1[j]==m){ m=(int)(Math.random()*row*col); l=0; }}if(j==i){a1[i]=m;p=0;}}}b1.setText(bon+"");b2.setText("0");//布雷 for(int i=0;i<bon;i++){ int x=(a1[i]/col+1); int y=(a1[i]%col+1);a[x][y]=100; } for(int i=0;i<row+2;i++){ for(int j=0;j<col+2;j++){ if(i==0||j==0||i==row+1||j==col+1){ a[i][j]=0; } } } for(int i=1;i<=row;i++){ for(int j=1;j<=col;j++){ if(a[i][j]!=100){ for(int l=j-1;l<=j+1;l++){ if(a[i-1][l]==100){ a[i][j]++; } if(a[i+1][l]==100){ a[i][j]++; } } if(a[i][j-1]==100){ a[i][j]++; } if(a[i][j+1]==100){ a[i][j]++; } } } } }if(e.getSource()==timer){ String time=b2.getText().trim();int t=Integer.parseInt(time);//System.out.println(t);if(t>=600){timer.stop();}else{t++;b2.setText(t+"");}}for(int i=0;i<col*row;i++){ if(btns[i].getText()!="★") { int x=i/col+1; int y=i%col+1; if(e.getSource()==btns[i]&&a[x][y]==100){ btns[i].setText("★"); btns[i].setEnabled(false); a[x][y]=10; for(int k=0;k<col*row;k++){ int m1=k/col+1; int n1=k%col+1; if(a[m1][n1]!=10&&btns[k].getText()=="★"){ btns[k].setText("*o*"); } } for(int j=0;j<col*row;j++){ int m=j/col+1; int n=j%col+1; if(a[m][n]==100){ btns[j].setText("★"); btns[j].setEnabled(false); b3.setText("你输了 !!"); } btns[j].setEnabled(false); a[m][n]=10; } timer.stop(); } else if(e.getSource()==btns[i]){ if(a[x][y]==0){ out(a,btns,e,i,x,y); a[x][y]=10; btns[i].setEnabled(false); } if(a[x][y]!=0&&a[x][y]!=10){ btns[i].setText(a[x][y]+""); btns[i].setEnabled(false); a[x][y]=10; } } }else if(btns[i].getText()=="★"){ } }}class NormoreMouseEvent extends MouseAdapter{public void mouseClicked(MouseEvent e) {System.out.println(b);for(int i=0;i<col*row;i++){ int x1=i/col+1; int y1=i%col+1;if(e.getSource()==btns[i]&&btns[i].getText()!="★"&&a[x1][y1]!=10){ if(e.getButton()==MouseEvent.BUTTON3){ btns[i].setText("★"); b--; if(b==0){ int flag=0; for(int j=0;j<col*row;j++){ int x=j/col+1; int y=j%col+1; if(a[x][y]==100&&btns[j].getText()=="★"){ flag++; } } if(flag==bon){ timer.stop(); b3.setText("你赢了!"); } } b1.setText(b+""); }}else if(e.getSource()==btns[i]&&btns[i].getText()=="★"&&a[x1][y1]!=-1){if(e.getButton()==MouseEvent.BUTTON3){ btns[i].setText(""); b++; if(b>bon){ b1.setText(bon+""); } else{ b1.setText(b+""); } btns[i].setEnabled(true);}}}}}}
  • 2021-02-11 18:14:42
  • 商品推荐