📄 bumb.java
字号:
bw.readLine();
int temp=Integer.parseInt(bw.readLine());
if(time<temp)//打破记录
{
fm=new JFrame("win");
fm.setSize(140,200);
fm.setLayout(null);
JTextArea t1=new JTextArea();
t1.setText("你已经破初级记录\n请输入尊姓大名");
t2=new JTextField("匿名");
t1.setEditable(false);
t1.setSize(200,40);
t2.setEditable(true);
t2.setForeground(Color.CYAN);
t2.setSize(100,20);
fm.setVisible(true);
fm.add(t1);
fm.add(t2);
t1.setLocation(20,40);
t2.setLocation(20,80);
JButton b=new JButton("确定 ");
b.addActionListener(this);
b.setSize(70,20);
fm.add(b);
b.setLocation(20,110);
}
}//判断是否打破记录
catch(FileNotFoundException f)
{
}
catch(IOException f)
{
}
}
ImageIcon win=new ImageIcon("image/win.jpg");
b.setIcon(win);
for(int k=0;k<81;k++)
label[k].removeMouseListener(this);
}
}
}
//*******************************************************************************//定义结束
//*******************************************************************************//实现KeyListener接口的方法
public void keyPressed(KeyEvent e)
{
if(e.getKeyCode() == KeyEvent.VK_K && e.isControlDown())
System.out.println("OK");
}
public void keyReleased(KeyEvent e)
{
System.out.println("ikkk");
}
public void keyTyped(KeyEvent e)
{
System.out.println("ikkk");
}
//*******************************************************************************//完成对KeyListener接口接口方的定义
public void mouseEntered(MouseEvent e)//鼠标进入某一区域事件
{
}
public void mouseExited(MouseEvent e)//鼠标退出某一区域事件
{
}
public void mouseClicked(MouseEvent e)//鼠标单击事件
{
}
//***********************************************************************************************//定义结束
//***********************************************************************************************//扫雷数据的初始化以及产生雷的坐标
public void start()
{
for(int i=0;i<9;i++)//清空原来的雷区
for(int j=0;j<9;j++)
position[i][j]=0;
Random r=new Random();
int temp[]=new int[10];
for(int i=0;i<10;i++)
{
temp[i]=r.nextInt(81);
judge: for(int j=0;j<i&&i!=0;j++)
{
if(temp[i]==temp[j])
{
temp[i]=r.nextInt(81);
continue judge;
}
}
int x=temp[i]%9;
int y=temp[i]/9;
position[y][x]=1;//产生雷的坐标
}
for(int i=0;i<81;i++)
{
System.out.print(position[i/9][i%9]);
if((i+1)%9==0)
System.out.println();
}
for(int i=0;i<9;i++)
for(int j=0;j<9;j++)
isAlive[i][j]=true;
for(int i=0;i<81;i++)
haveFlag[i]=false;
for(int i=0;i<81;i++)
haveSign[i]=false;
label1.setText("010");
label2.setText("000");
time=1;//将时间置为1
timeThread=null;//重新建立时间线程
}
//***********************************************************************************************// 方法定义结束
//************************************************************************************************//探寻雷周围的情况
public void search(int x,int y)
{
int amount=0;
ImageIcon unknown=new ImageIcon("image/unknown.jpg");
if(x==0&&y==0)
{
amount=position[0][1]+position[1][0]+position[1][1];
}
else if(x==8&&y==8)
{
amount=position[7][7]+position[8][7]+position[7][8];
}
else if(x==8&&y==0)
{
amount=position[0][7]+position[1][7]+position[1][8];
}
else if(x==0&&y==8)
{
amount=position[7][0]+position[7][1]+position[8][1];
}
else if(x==0&&y!=0&&y!=8)
{
amount=position[y-1][0]+position[y+1][0]+position[y-1][1]+position[y][1]+position[y+1][1];
}
else if(x==8&&y!=0&&y!=8)
{
amount=position[y-1][8]+position[y-1][7]+position[y][7]+position[y+1][7]+position[y+1][8];
}
else if(y==0&&x!=0&&x!=8)
{
amount=position[0][x-1]+position[1][x-1]+position[1][x]+position[1][x+1]+position[0][x+1];
}
else if(y==8&&x!=0&&x!=8)
{
amount=position[8][x-1]+position[7][x-1]+position[7][x]+position[7][x+1]+position[8][x+1];
}
else
{
amount=position[y-1][x-1]+position[y-1][x]+position[y-1][x+1]+position[y][x+1]+position[y+1][x+1]+position[y+1][x]+position[y+1][x-1]+position[y][x-1];
}
switch(amount)
{
case 0:
label[y*9+x].setIcon(unknown);
label[y*9+x].removeMouseListener(this);
isAlive[y][x]=false;
if(x==0&&y==0)
{
if(isAlive[0][1]&&haveFlag[1]==false)
search(1,0);
if(isAlive[1][0]&&haveFlag[9]==false)
search(0,1);
if(isAlive[1][1]&&haveFlag[10]==false)
search(1,1);
}
else if(x==0&&y==8)
{
if(isAlive[7][0]&&haveFlag[72]==false)
search(0,7);
if(isAlive[7][1]&&haveFlag[64]==false)
search(1,7);
if(isAlive[8][1]&&haveFlag[73]==false)
search(1,8);
}
else if(x==8&&y==8)
{
if(isAlive[8][7]&&haveFlag[79]==false)
search(7,8);
if(isAlive[7][7]&&haveFlag[70]==false)
search(7,7);
if(isAlive[7][8]&&haveFlag[71]==false)
search(8,7);
}
else if(x==8&&y==0)
{
if(isAlive[0][7]&&haveFlag[7]==false)
search(7,0);
if(isAlive[1][7]&&haveFlag[16]==false)
search(7,1);
if(isAlive[1][8]&&haveFlag[17]==false)
search(8,1);
}
else if(x==0&&y!=0&&y!=8)
{
if(isAlive[y-1][0]&&haveFlag[9*y-9]==false)
search(0,y-1);
if(isAlive[y-1][1]&&haveFlag[9*y-8]==false)
search(1,y-1);
if(isAlive[y][1]&&haveFlag[9*y+1]==false)
search(1,y);
if(isAlive[y+1][1]&&haveFlag[9*y+10]==false)
search(1,y+1);
if(isAlive[y+1][0]&&haveFlag[9*y+9]==false)
search(0,y+1);
}
else if(x==8&&y!=0&&y!=8)
{
if(isAlive[y-1][8]&&haveFlag[9*y-1]==false)
search(8,y-1);
if(isAlive[y-1][7]&&haveFlag[9*y-2]==false)
search(7,y-1);
if(isAlive[y][7]&&haveFlag[9*y+7]==false)
search(7,y);
if(isAlive[y+1][7]&&haveFlag[9*y+16]==false)
search(7,y+1);
if(isAlive[y+1][8]&&haveFlag[9*y+17]==false)
search(8,y+1);
}
else if(y==0&&x!=0&&x!=8)
{
if(isAlive[0][x-1]&&haveFlag[x-1]==false)
search(x-1,0);
if(isAlive[1][x-1]&&haveFlag[x+8]==false)
search(x-1,1);
if(isAlive[1][x]&&haveFlag[9+x]==false)
search(x,1);
if(isAlive[1][x+1]&&haveFlag[x+10]==false)
search(x+1,1);
if(isAlive[0][x+1]&&haveFlag[x+1]==false)
search(x+1,0);
}
else if(y==8&&x!=0&&x!=8)
{
if(isAlive[8][x-1]&&haveFlag[x+71]==false)
search(x-1,8);
if(isAlive[7][x-1]&&haveFlag[x+62]==false)
search(x-1,7);
if(isAlive[7][x]&&haveFlag[x+63]==false)
search(x,7);
if(isAlive[7][x+1]&&haveFlag[x+64]==false)
search(x+1,7);
if(isAlive[8][x+1]&&haveFlag[x+73]==false)
search(x+1,8);
}
else
{
if(isAlive[y-1][x-1]&&haveFlag[9*y+x-10]==false)
search(x-1,y-1);
if(isAlive[y-1][x]&&haveFlag[9*y+x-9]==false)
search(x,y-1);
if(isAlive[y-1][x+1]&&haveFlag[9*y+x-8]==false)
search(x+1,y-1);
if(isAlive[y][x+1]&&haveFlag[9*y+x+1]==false)
search(x+1,y);
if(isAlive[y+1][x+1]&&haveFlag[9*y+x+10]==false)
search(x+1,y+1);
if(isAlive[y+1][x]&&haveFlag[9*y+x+9]==false)
search(x,y+1);
if(isAlive[y+1][x-1]&&haveFlag[9*y+x+8]==false)
search(x-1,y+1);
if(isAlive[y][x-1]&&haveFlag[9*y+x-1]==false)
search(x-1,y);
}
break;
case 1:
label[y*9+x].setIcon(unknown);
label[y*9+x].setForeground(Color.blue);
label[y*9+x].setFont(new Font("Arial Black",Font.PLAIN,15));
label[y*9+x].setText("1");
label[y*9+x].setHorizontalTextPosition(SwingConstants.CENTER);
label[y*9+x].removeMouseListener(this);
isAlive[y][x]=false;
break;
case 2:
label[y*9+x].setIcon(unknown);
label[y*9+x].setForeground(Color.green);
label[y*9+x].setFont(new Font("Arial Black",Font.PLAIN,15));
label[y*9+x].setText("2");
label[y*9+x].setHorizontalTextPosition(SwingConstants.CENTER);
label[y*9+x].removeMouseListener(this);
isAlive[y][x]=false;
break;
case 3:
label[y*9+x].setIcon(unknown);
label[y*9+x].setForeground(Color.red);
label[y*9+x].setFont(new Font("Arial Black",Font.PLAIN,15));
label[y*9+x].setText("3");
label[y*9+x].setHorizontalTextPosition(SwingConstants.CENTER);
label[y*9+x].removeMouseListener(this);
isAlive[y][x]=false;
break;
case 4:
label[y*9+x].setIcon(unknown);
label[y*9+x].setForeground(Color.pink);
label[y*9+x].setFont(new Font("Arial Black",Font.PLAIN,15));
label[y*9+x].setText("4");
label[y*9+x].setHorizontalTextPosition(SwingConstants.CENTER);
label[y*9+x].removeMouseListener(this);
isAlive[y][x]=false;
break;
case 5:
label[y*9+x].setIcon(unknown);
label[y*9+x].setForeground(Color.orange);
label[y*9+x].setFont(new Font("Arial Black",Font.PLAIN,15));
label[y*9+x].setText("5");
label[y*9+x].setHorizontalTextPosition(SwingConstants.CENTER);
label[y*9+x].removeMouseListener(this);
isAlive[y][x]=false;
break;
case 6:
label[y*9+x].setIcon(unknown);
label[y*9+x].setForeground(Color.black);
label[y*9+x].setFont(new Font("Arial Black",Font.PLAIN,15));
label[y*9+x].setText("6");
label[y*9+x].setHorizontalTextPosition(SwingConstants.CENTER);
label[y*9+x].removeMouseListener(this);
isAlive[y][x]=false;
break;
case 7:
label[y*9+x].setIcon(unknown);
label[y*9+x].setForeground(Color.cyan);
label[y*9+x].setFont(new Font("Arial Black",Font.PLAIN,15));
label[y*9+x].setText("7");
label[y*9+x].setHorizontalTextPosition(SwingConstants.CENTER);
label[y*9+x].removeMouseListener(this);
isAlive[y][x]=false;
break;
case 8:
label[y*9+x].setIcon(unknown);
label[y*9+x].setForeground(Color.blue);
label[y*9+x].setFont(new Font("Arial Black",Font.PLAIN,15));
label[y*9+x].setText("8");
label[y*9+x].setHorizontalTextPosition(SwingConstants.CENTER);
label[y*9+x].removeMouseListener(this);
isAlive[y][x]=false;
break;
}
}
//************************************************************************************************//方法体结束
//*************************************************************************************************//实现timeThread里面的抽象方法
public void run()
{
while(timeThread!=null)
{
try{
InputStream in=new FileInputStream("Sound/time.WAV");//建立声音数据流
AudioStream astime=new AudioStream(in);
if(haveSound)
{
AudioPlayer.player.start(astime);
}
timeThread.sleep(1000);
AudioPlayer.player.stop(astime);
time++;
if(0<=time&&time<=9)
label2.setText("00"+String.valueOf(time));
else if(time>=10&&time<=99)
label2.setText("0"+String.valueOf(time));
}
catch(InterruptedException i)
{
}
catch(FileNotFoundException e)
{
}
catch(IOException e)
{
}
}
}
public void stop()
{
timeThread=null;
}
//**************************************************************************************************//
public static void main(String args[])
{
new Bomb();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -