📄 clear_bomb.java
字号:
case 0:
px = index % 30;
py = (int)(index / 30);
free_landmine(px,py);
break;
case 9:
but[index].setIcon(img2);
game_status = 0;
start_button.setVisible(false);
win_button.setVisible(false);
stop_button.setVisible(true);
replay_button.setVisible(true);
for(n=0;n<480;n++)
{ if(n != index && llist[n] == 9)
{ but[n].setIcon(img5);}
else if(llist[n] != 9 && flag_list[n] == 2)
{ but[n].setIcon(img4);}
}
break;
default:
but[index].setVisible(false);
lb[index].setVisible(true);
flag_list[index] = 1;
break;
}
}
if(bt == 2 && flag_list[index] != 1) //在该格处按下右键
{
flag_list[index] = 2 - flag_list[index];
if(flag_list[index] == 0) //撤销插旗
{ but[index].setIcon(img0);
mine=mine+1;
if((int)p_time/10 == 0)
{ count1.setText("00" + p_time + " s " + String.valueOf(mine));}
else if((int)p_time/100 == 0)
{ count1.setText("0" + p_time + " s " + String.valueOf(mine));}
else { count1.setText(p_time + " s " + String.valueOf(mine));}
for(fg1=0;fg1<=s;fg1++)
{ if(replay[fg1]==index)
{ for(fg2=fg1+1;fg2<=s;fg2++)
{ replay[fg2]=replay[fg2-1];
vflag[fg2]=vflag[fg2-1];
s=s-1;
}
}
}
}
else {
but[index].setIcon(img1); //插旗
mine=mine-1;
if((int)p_time/10 == 0)
{ count1.setText("00" + p_time + " s " + String.valueOf(mine));}
else if((int)p_time/100 == 0)
{ count1.setText("0" + p_time + " s " + String.valueOf(mine));}
else { count1.setText(p_time + " s " + String.valueOf(mine));}
replay[s] = index;
vflag[s] = 2;
s++;
}
}
if(check_finish() == false) //成功结束
{ game_status = 0;
load();
if(p_time < Integer.parseInt(timer3))
{ String title = "Record Broken!";
JLabel message1 = new JLabel("You have broken the record!");
JLabel message2 = new JLabel("Please input your name:");
JTextField nameField = new JTextField();
// 重新设置菜单的字体
Font font = new Font(message1.getFont().getName(), Font.PLAIN, 12);
message1.setFont(font);
message2.setFont(font);
nameField.setFont(font);
JOptionPane.showMessageDialog(null,new Object[] { message1, message2, nameField},title,JOptionPane.INFORMATION_MESSAGE);
if(p_time < Integer.parseInt(timer1))
{ name3=name2;
timer3=timer2;
name2=name1;
timer2=timer1;
name1=nameField.getText();
timer1=String.valueOf(p_time);
}
else if(p_time >= Integer.parseInt(timer1) && p_time < Integer.parseInt(timer2))
{ name3=name2;
timer3=timer2;
name2=nameField.getText();
timer2=String.valueOf(p_time);
}
else { name3=nameField.getText();
timer3=String.valueOf(p_time);
}
save();
showToplist();
}
start_button.setVisible(false);
stop_button.setVisible(false);
win_button.setVisible(true);
replay_button.setVisible(true);
}
}
//显示安全区
void free_landmine(int px, int py)
{ int i;
i = px + py * 30;
flag_list[i] = 1;
but[i].setVisible(false);
if((px - 1) >= 0 && (py - 1) >= 0) //左上方(-1,-1)
{ i = (px - 1) + (py - 1) * 30;
if(flag_list[i] == 0)
{ if(llist[i] != 0)
{ but[i].setVisible(false);
lb[i].setVisible(true);
flag_list[i] = 1;
}
else { free_landmine(px - 1,py - 1);}
}
}
if((py - 1) >= 0) //上方(0,-1)
{ i = px + (py - 1) * 30;
if(flag_list[i] == 0)
{ if(llist[i] != 0)
{ but[i].setVisible(false);
lb[i].setVisible(true);
flag_list[i] = 1;
}
else { free_landmine(px,py - 1);}
}
}
if((px + 1) < 30 && (py - 1) >= 0) //右上方(+1,-1)
{ i = (px + 1) + (py - 1) * 30;
if(flag_list[i] == 0)
{ if(llist[i] != 0)
{ but[i].setVisible(false);
lb[i].setVisible(true);
flag_list[i] = 1;
}
else { free_landmine(px + 1,py - 1);}
}
}
if((px - 1) >= 0) //左方(-1,0)
{ i = (px - 1) + py * 30;
if(flag_list[i] == 0)
{ if(llist[i] != 0)
{ but[i].setVisible(false);
lb[i].setVisible(true);
flag_list[i] = 1;
}
else { free_landmine(px - 1,py);}
}
}
if((px + 1) < 30) //右方(+1,0)
{ i = (px + 1) + py * 30;
if(flag_list[i] == 0)
{ if(llist[i] != 0)
{ but[i].setVisible(false);
lb[i].setVisible(true);
flag_list[i] = 1;
}
else { free_landmine(px + 1,py);}
}
}
if((px - 1) >= 0 && (py + 1) < 16) //左下方(-1,+1)
{ i = (px - 1) + (py + 1) * 30;
if(flag_list[i] == 0)
{ if(llist[i] != 0)
{ but[i].setVisible(false);
lb[i].setVisible(true);
flag_list[i] = 1;
}
else { free_landmine(px - 1,py + 1);}
}
}
if((py + 1) < 16) //下方(0,+1)
{ i = px + (py + 1) * 30;
if(flag_list[i] == 0)
{ if(llist[i] != 0)
{ but[i].setVisible(false);
lb[i].setVisible(true);
flag_list[i] = 1;
}
else { free_landmine(px,py + 1);}
}
}
if((px + 1) < 30 && (py + 1) < 16) //右下方(+1,+1)
{ i = (px + 1) + (py + 1) * 30;
if(flag_list[i] == 0)
{ if(llist[i] != 0)
{ but[i].setVisible(false);
lb[i].setVisible(true);
flag_list[i] = 1;
}
else { free_landmine(px + 1,py + 1);}
}
}
}
//检查是否已经成功完成
public boolean check_finish()
{ int i,m;
m = 0;
boolean flag;
flag = false;
for(i=0;i<480;i++)
{ if(llist[i] == 9 && flag_list[i] != 2)
{ flag = true;
break;
}
if(llist[i] !=9 && flag_list[i] == 0)
{ flag = true;
break;
}
if(flag_list[i] == 2)
{ m++;}
}
if(m != 99)
{ flag = true;}
return flag;
}
//显示扫雷英雄榜
public void showToplist()
{ load();
String title = "TopList";
JLabel message3 = new JLabel("No.1 : "+name1+" "+timer1+"s");
JLabel message4 = new JLabel("No.2 : "+name2+" "+timer2+"s");
JLabel message5 = new JLabel("No.3 : "+name3+" "+timer3+"s");
// 重新设置菜单的字体
Font font = new Font(message3.getFont().getName(), Font.PLAIN, 12);
message3.setFont(font);
message4.setFont(font);
message5.setFont(font);
JOptionPane.showMessageDialog(null,new Object[] {message3, message4,message5},title,JOptionPane.INFORMATION_MESSAGE);
}
//写文件
public void save()
{
String together;
try{ FileOutputStream out= new FileOutputStream("toplist.dat");
byte[] b1=new byte[60];
together=name1+"\n"+timer1+"\n"+name2+"\n"+timer2+"\n"+name3+"\n"+timer3;
b1=together.getBytes();
out.write(b1);
}
catch(IOException e) { System.out.println(e.toString());}
}
public void saveAS()
{
Label tempText=new Label("Input The File Name:");
String inputFilename= JOptionPane.showInputDialog(tempText);
try{
File saveFil=new File(inputFilename+".frog");
saveFil.createNewFile();
RandomAccessFile saveAs=new RandomAccessFile(saveFil,"rw");
saveAs.setLength(0);
for (int i=0;i<480;i++)
{
saveAs.writeInt(llist[i]);
saveAs.writeInt(flag_list[i]);
saveAs.writeInt(replay[i]);
saveAs.writeInt(vflag[i]);
}
saveAs.writeInt(p_time);
saveAs.close();
}catch(Exception FileNotFoundException){}
}
//读文件
public void load()
{
try{ FileInputStream in = new FileInputStream("toplist.dat");
BufferedReader reader=new BufferedReader(new InputStreamReader(in));
name1=reader.readLine();
timer1=reader.readLine();
name2=reader.readLine();
timer2=reader.readLine();
name3=reader.readLine();
timer3=reader.readLine();
}
catch(IOException e) { System.err.println(e);}
}
public void loadAs()
{
this.reset_game();
Label tempText=new Label("Input The File Name:");
String inputFilename= JOptionPane.showInputDialog(tempText);
try{
RandomAccessFile load=new RandomAccessFile(inputFilename+".frog","r");
for (int i=0;i<480;i++)
{
llist[i] = load.readInt();
flag_list[i] = load.readInt();
replay[i] = load.readInt();
vflag[i] = load.readInt();
lb[i].setText(String.valueOf(llist[i]));
}
p_time = load.readInt();
load.close();
}catch(Exception FileNotFoundException){};
int m1,m2;
for (m1=0;m1<480 ;m1++ )
{
if (flag_list[m1] == 1)
{
m2 = 1;
flag_list[m1] = 0;
mouse(m1,m2);
}
else if (flag_list[m1] == 2)
{
m2 = 2;
flag_list[m1] = 0;
mouse(m1,m2);
}
else continue;
lb[m1].setText(String.valueOf(llist[m1]));
but[m1].addMouseListener(this);
}
game_status = 1;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -