📄 example.java
字号:
}
class MyWindow extends JFrame implements ActionListener,ItemListener,MouseListener //搜猪主体窗口
{
JMenuBar menubar;
JMenu menu1,menu2;
JMenuItem item1,item2,item3,item4,item5,item6,item7,item8;
JPanel p1,p2,p3,p1_1;
JTextField text3,txet4,text1_2;
JLabel l1;
Icon icon0,icon1,icon2,icon3,icon4,icon5,icon6,icon7,icon8,icon,icon13;
ButtonGroup g1=new ButtonGroup();
BorderLayout bord=new BorderLayout();
JButton c;
Icon ico1,ico2;
Border bor2=BorderFactory.createBevelBorder(0);
Border bor1=BorderFactory.createLineBorder(Color.gray,1);
Border bor3=BorderFactory.createBevelBorder(1);
JButton bu[][];
JPanel p[][];
int bj[][],bj2[][],bj3[][],d,m,n,u,q,t,th=0,Dengji;
int le,qi;static int dio2B=0;
MyDialog dio;
MyDia dio1;
MyDia1 dio2;
MyDia2 dio3;
Bang bang;
Font f=new Font("System",Font.BOLD,23);
Random ran1;
Thread threa;
MyWindow(String s,int x,int z,int q1,int dengji)
{
super(s);
Dengji=dengji;
this.setLayout(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setBackground(Color.lightGray);
dio=new MyDialog(this,"自由设定",true);
dio1=new MyDia(this,"挑战失败",true);
dio2=new MyDia1(this,"剧情",false);
dio3=new MyDia2(this,"挑战成功",true,Dengji);
bang=new Bang(this,"搜猪英雄榜",false);
setLocation(new Point(100,100));
q=q1; m=x+2;n=z+2;qi=le=q;
this.setSize(new Dimension((m-2)*16+30,(n-2)*16+136));
bj=new int[m][n];
bj2=new int[m][n];
bj3=new int[m][n];
bu=new JButton[m][n];
p=new JPanel[m][n];
ico1=new ImageIcon("11.jpg");
ico2=new ImageIcon("12.jpg");
menubar=new JMenuBar();
menu1=new JMenu("游戏(G)");
menu2=new JMenu("帮助(H)");
item1=new JMenuItem("开局(N)");
item2=new JRadioButtonMenuItem("初级");
item3=new JRadioButtonMenuItem("中级");
item4=new JRadioButtonMenuItem("高级");
item7=new JRadioButtonMenuItem("自由设定");
item8=new JMenuItem("捉猪英雄榜");
item5=new JMenuItem("退出(X)");
item6=new JMenuItem("关于本人");
icon0=new ImageIcon("lei.jpg");
icon1=new ImageIcon("1.jpg");
icon2=new ImageIcon("2.jpg");
icon3=new ImageIcon("3.jpg");
icon4=new ImageIcon("4.jpg");
icon5=new ImageIcon("5.jpg");
icon6=new ImageIcon("6.jpg");
icon7=new ImageIcon("7.jpg");
icon8=new ImageIcon("uiui.jpg");
icon=new ImageIcon("12.jpg");
icon13=new ImageIcon("13.jpg");
p1=new JPanel();
p1_1=new JPanel();
p2=new JPanel();
p3=new JPanel();
g1.add(item2);
g1.add(item3);
g1.add(item4);
g1.add(item7);
menu1.add(item1);
menu1.addSeparator();
menu1.add(item2);
menu1.add(item3);
menu1.add(item4);
menu1.add(item7);
menu1.addSeparator();
menu1.add(item8);
menu1.addSeparator();
menu1.add(item5);
menu2.add(item6);
menubar.add(menu1);
menubar.add(menu2);
item1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,InputEvent.CTRL_MASK));
item5.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,InputEvent.CTRL_MASK));
this.setJMenuBar(menubar);
this.add(p3);
dio2.setVisible(false);
if(dio2B==0){ dio2B=1;
dio2.setVisible(true);}
p1.setLayout(new GridLayout(1,3));
p3.setLayout(null);
p2.setLayout(null);
p3.setBackground(Color.lightGray);
p2.setBackground(Color.lightGray);
p1.setBackground(Color.lightGray);
c=new JButton();
c.setIcon(ico1);
c.addActionListener(this);
if(le>=0&&le<=9) l1=new JLabel(" 00"+le);
if(le>=10&&le<=99) l1=new JLabel(" 0"+le);
if(le>=100&&le<=999) l1=new JLabel(" "+le);
l1.setFont(f);
l1.setForeground(Color.RED);
p1_1.add(l1);
p1.add(p1_1);
p1.add(c);
text1_2=new JTextField("000");
text1_2.setFont(f);
text1_2.setForeground(Color.RED);
p1.add(text1_2);
p1.setBorder(bor3);
p2.setBorder(bor3);
for(int i=0;i<m;i++)
for(int j=0;j<n;j++)
{
p[i][j]=new JPanel();
bu[i][j]=new JButton();
if(i==0||j==0||i==(m-1)||j==(n-1)) {bj[i][j]=-20;}
else{ bu[i][j].setBounds(0,0,16,16);
bj[i][j]=0;bj2[i][j]=0;bj3[i][j]=0;
bu[i][j].addActionListener(this);
bu[i][j].addMouseListener(this);
}
}
p3.setBounds(0,0,(m-2)*16+30,(n-2)*16+136);
for(int i=1;i<m-1;i++)
for(int j=1;j<n-1;j++)
{
p[i][j].setBounds(4+(i-1)*16,4+(j-1)*16,16,16);
p[i][j].setLayout(null);
p[i][j].add(bu[i][j]);
bu[i][j].setBorder(bor2);
p2.add(p[i][j]);
}
p1.setBounds(5,5,(m-2)*16+16,45);
p2.setBounds(8,55,(m-2)*16+8,(n-2)*16+8);
ran1=new Random();
for(int i=0;i<q;)
{
t=ran1.nextInt()%(m-1);
u=ran1.nextInt()%(n-1);
if(t>0&&t<m-1)
if(u>0&&u<n-1)
{if(bj[t][u]!=-1)
{ bj[t][u]=-1;
i++;}
}
}
for(int i=1;i<m-1;i++)
for(int j=1;j<n-1;j++)
{
if(bj[i][j]!=-1)
{
if(bj[i-1][j-1]==-1) bj[i][j]++;
if(bj[i-1][j]==-1) bj[i][j]++;
if(bj[i-1][j+1]==-1) bj[i][j]++;
if(bj[i][j-1]==-1) bj[i][j]++;
if(bj[i][j+1]==-1) bj[i][j]++;
if(bj[i+1][j-1]==-1) bj[i][j]++;
if(bj[i+1][j]==-1) bj[i][j]++;
if(bj[i+1][j+1]==-1) bj[i][j]++;
}
}
p3.add(p2);p3.add(p1);
item5.addActionListener(this);
item1.addActionListener(this);
item8.addActionListener(this);
item2.addItemListener(this);
item3.addItemListener(this);
item4.addItemListener(this);
item7.addItemListener(this);
p3.validate();
p2.validate();
p1.validate();
threa=new Threa(text1_2);
validate();
setVisible(true);
setResizable(false);
}
public void actionPerformed(ActionEvent e)
{
if (e.getSource()==item1) {
dispose();
this.setVisible(false);
MyWindow win=new MyWindow("捉猪",m-2,n-2,q,Dengji);
win.validate(); } //item1
if(e.getSource()==item5)
{
dispose();
System.exit(0);
} //item5
if(e.getSource()==c)
{
dispose();
this.setVisible(false);
MyWindow win=new MyWindow("捉猪",m-2,n-2,q,Dengji);
win.validate();
} //c
for(int i=1;i<m-1;i++)
for(int j=1;j<n-1;j++)
{
if(e.getSource()==bu[i][j])
{if(bj2[i][j]==0){
if(bj[i][j]==-1)
{bj2[i][j]=1; threa.stop();
for(int chang=1;chang<m-1;chang++) //雷场显示
for(int kuan=1;kuan<n-1;kuan++)
if(bj[chang][kuan]==-1)
bu[chang][kuan].setIcon(icon0);
c.setIcon(ico2);
dio1.setVisible(true);
if(dio1.getMessage()==MyDialog.YES)
{ dispose();
this.setVisible(false);
MyWindow win=new MyWindow("捉猪",m-2,n-2,q,Dengji);
win.validate();
}
else
if(dio1.getMessage()==MyDialog.NO)
{ dispose();
System.exit(0);
}
if(dio.getMessage()==MyDialog.CLOSE)
{ dispose();
this.setVisible(false);
MyWindow win=new MyWindow("捉猪",m-2,n-2,q,Dengji);
win.validate();
}
}
else
f(i,j );
}
}
} //button
if(e.getSource()==item8)
{
bang.setVisible(true);
} //item8
}
public void itemStateChanged(ItemEvent e) //等级选择
{
if(e.getSource()==item2)
{ dispose(); this.setVisible(false);
MyWindow win=new MyWindow("捉猪",9,9,10,1);
win.validate();}
else if(e.getSource()==item3)
{ dispose(); this.setVisible(false);
MyWindow win=new MyWindow("捉猪",18,18,40,2);
win.validate();}
else if(e.getSource()==item4)
{ dispose(); this.setVisible(false);
MyWindow win=new MyWindow("捉猪",36,25,98,3);
win.validate();}
else if (e.getSource()==item7) {
dio.setVisible(true);
if(dio.getMessage()==MyDialog.YES)
{ m=Integer.parseInt(dio.t1.getText());
n=Integer.parseInt(dio.t2.getText());
q=Integer.parseInt(dio.t3.getText());
dispose();
this.setVisible(false);
if(q>m*n) q=(m*n)-2;
MyWindow win=new MyWindow("捉猪",m,n,q,0);
win.validate();
}
else
if(dio.getMessage()==MyDialog.NO)
{ dio.setModal(false);
}
if(dio.getMessage()==MyDialog.CLOSE)
{ dio.setModal(false);
}
}
}
void f(int i,int j) //雷区扫描
{ if(bj2[i][j]==0)
{ if(i>0&&j>0&&i<m-1&&j<n-1) {bj2[i][j]=1;bj3[i][j]=1;
if(bj[i][j]==1) {bu[i][j].setIcon(icon1);}
else if(bj[i][j]==2) {bu[i][j].setIcon(icon2);}
else if(bj[i][j]==3) {bu[i][j].setIcon(icon3);}
else if(bj[i][j]==4) {bu[i][j].setIcon(icon4);}
else if(bj[i][j]==5) {bu[i][j].setIcon(icon5);}
else if(bj[i][j]==6) {bu[i][j].setIcon(icon6);}
else if(bj[i][j]==7) {bu[i][j].setIcon(icon7);}
else if(bj[i][j]==0) {
bu[i][j].setBorder(bor1);
bu[i][j].setBackground(Color.darkGray);
f(i-1,j); f(i,j-1); f(i,j+1); f(i+1,j);
if(bj[i-1][j]==0||bj[i][j-1]==0) f(i-1,j-1);
if(bj[i-1][j]==0||bj[i][j+1]==0) f(i-1,j+1);
if(bj[i+1][j]==0||bj[i][j-1]==0) f(i+1,j-1);
if(bj[i][j+1]==0||bj[i+1][j]==0) f(i+1,j+1);
}
}
}
}
public void mousePressed(MouseEvent e){}
public void mouseReleased(MouseEvent e){}
public void mouseEntered(MouseEvent e){}
public void mouseExited(MouseEvent e){}
public void mouseClicked(MouseEvent e){
if(th==0){th=1;threa.start();}
for(int i=1;i<m-1;i++)
for(int j=1;j<n-1;j++)
{
if(e.getSource()==bu[i][j])
{
if(e.getModifiers()==InputEvent.BUTTON3_MASK)
{ if(bj3[i][j]==0){
if(bu[i][j].getIcon()==icon8) {bu[i][j].setIcon(icon13); }
else if(bu[i][j].getIcon()==icon13){ qi++;
if(bj[i][j]==-1) {le++;}
p1_1.remove(l1);
if(qi<0) l1=new JLabel(" "+qi+" ");
if(qi>=0&&qi<=9) l1=new JLabel(" 00"+qi);
if(qi>=10&&qi<=99) l1=new JLabel(" 0"+qi);
if(qi>=100&&qi<=999) l1=new JLabel(" "+qi);
l1.setFont(f);
l1.setForeground(Color.RED);
p1_1.add(l1);
bj2[i][j]=0;
p[i][j].remove(bu[i][j]);
bu[i][j]=new JButton();
p[i][j].add(bu[i][j]);
bu[i][j].setBorder(bor2);
bu[i][j].setBounds(0,0,16,16);
bu[i][j].addActionListener(this);
bu[i][j].addMouseListener(this);
}
else {bu[i][j].setIcon(icon8);
bj2[i][j]=1;qi--;
if(bj[i][j]==-1) {le--;}
p1_1.remove(l1);
if(qi<0) l1=new JLabel(" "+qi+" ");
if(qi>=0&&qi<=9) l1=new JLabel(" 00"+qi);
if(qi>=10&&qi<=99) l1=new JLabel(" 0"+qi);
if(qi>=100&&qi<=999) l1=new JLabel(" "+qi);
l1.setFont(f);
l1.setForeground(Color.RED);
p1_1.add(l1);
}
}
if(le==0&&qi==0){ threa.stop();
dio3.shijian.setText(text1_2.getText());
dio3.setVisible(true);
if(dio3.getMessage()==MyDia2.YES)
{ dispose();
this.setVisible(false);
MyWindow win=new MyWindow("捉猪",m-2,n-2,q,Dengji);
win.validate();
}
}
}
}
}
} //mouse
} //class MyWindow
public class Example
{
public static void main(String args[])
{
MyWindow win;
win=new MyWindow("捉猪",9,9,10,1);
win.setVisible(true);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -