⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 新建 文本文档.txt

📁 自己做的一个扫雷的程序~~~~~大家多给点意见~~~谢谢`~~~~我是个新手~~!
💻 TXT
字号:
  一个新的纯JAVA扫雷程序,写了三天! 
一个新的纯JAVA扫雷程序,写了三天!其原理参照了网上原有的程序一点点,不知道算不算偷! 
import java.util.*; 
import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 

public class Clearbomb extends WindowAdapter implements ActionListener{ 

Initdata data = new Initdata(); 

Frame f_main = new Frame("ClearBomb"); 

Panel p_up1 = new Panel(); 
Panel p_down1 = new Panel(new GridLayout(9,9,1,1)); 
Panel p_up2 = new Panel(); 
Panel p_down2 = new Panel(); 

Label l_left = new Label("0"); 
Label l_right = new Label("10"); 

JButton smile = new JButton(); 

MenuBar menub = new MenuBar(); 

Font ft = new Font("Seril",Font.BOLD,18); 

JButton bunit[][] = new JButton[9][9]; 
Label lunit[][] = new Label[9][9]; 
Panel punit[][] = new Panel[9][9]; 

Dialog d1 = new Dialog(f_main,"恭喜",true); 
Dialog d2 = new Dialog(f_main,"帮助",true); 
Dialog d3 = new Dialog(f_main,"关于作者",true); 
Button b1 = new Button("确定"); 
Button b2 = new Button("确定"); 
Button b3 = new Button("确定"); 
Label l1 = new Label("恭喜通关,再来一局吗?"); 
Label l2 = new Label("此游戏仿制Windows中的扫雷程序而写,具体请参照Windows扫雷!少许漏洞,留待观者实现"); 
Label l3 = new Label("黑人皮皮,本名,胡波。合肥工业大学计算机及应用专业本科毕业(自考)现正在学习java,已略有心得!志向:程序员。"); 

CardLayout c = new CardLayout(); 
//图片 
Icon bomb = new ImageIcon("bomb.gif"); 
Icon touch = new ImageIcon("touch.gif"); 
Icon falsebomb = new ImageIcon("falsebomb.gif"); 
Icon smileface = new ImageIcon("smileface.gif"); 
Icon die = new ImageIcon("die.gif"); 
Icon puzzle = new ImageIcon("puzzle.gif"); 
Icon flag = new ImageIcon("flag.gif"); 
Icon flag1 = new ImageIcon("flag1.gif"); 

Timers timer = new Timers(); 


boolean stop = true; 
private int remainbomb = 10; 
private boolean appear = true;//控制对话框是否显示 
boolean threadstart = true; 



public void display(){ 
//主框架 
f_main.setSize(241,350); 
f_main.setLocation(300,200); 
f_main.addWindowListener(this); 
f_main.setLayout(null); 
f_main.setBackground(Color.gray); 
f_main.setMenuBar(menub); 
//菜单 
Menu m_game = new Menu("游戏"); 
Menu m_help = new Menu("帮助"); 
Menu m_about = new Menu("关于作者"); 
menub.add(m_game); 
menub.add(m_help); 
menub.add(m_about); 
m_game.addActionListener(this); 
m_help.addActionListener(this); 
m_about.addActionListener(this); 
m_game.add(new MenuItem("开局",new MenuShortcut(KeyEvent.VK_N))); 
m_game.addSeparator(); 
m_game.add(new MenuItem("初级")); 
m_game.add(new MenuItem("中级")); 
m_game.add(new MenuItem("高级")); 
m_game.addSeparator(); 
m_game.add(new MenuItem("退出",new MenuShortcut(KeyEvent.VK_E))); 
m_help.add(new MenuItem("帮助主题",new MenuShortcut(KeyEvent.VK_H))); 
m_about.add(new MenuItem("黑人皮皮",new MenuShortcut(KeyEvent.VK_W))); 
//面板 
p_up1.setBackground(Color.orange); 
p_up1.setSize(225,50); 
p_up1.setLocation(1,1); 
p_down1.setBackground(Color.gray); 
p_down1.setSize(225,225); 
p_down1.setLocation(1,1); 
p_up1.setLayout(null); 
//p_down1.setLayout(null); 
p_up2.setBackground(Color.white); 
p_up2.setLocation(7,44); 
p_up2.setSize(227,52); 
p_down2.setBackground(Color.white); 
p_down2.setLocation(7,104); 
p_down2.setSize(227,227); 
p_up2.setLayout(null); 
p_down2.setLayout(null); 


//标签与按钮 
l_left.setFont(ft); 
l_right.setFont(ft); 
l_left.setLocation(8,8); 
l_left.setSize(80,30); 
l_left.setBackground(Color.red); 
l_right.setLocation(137,8); 
l_right.setSize(80,30); 
l_right.setBackground(Color.red); 
smile.setIcon(smileface); 
smile.setLocation(98,8); 
smile.setSize(30,30); 
smile.setBackground(Color.white); 
smile.addActionListener(this); 
p_up1.add(l_left); 
p_up1.add(smile); 
p_up1.add(l_right); 
//雷区 
for(int i =0;i < 9;i++) 
for(int j = 0;j < 9;j++){ 
bunit[i][j] = new JButton(); 
punit[i][j] = new Panel(c); 
lunit[i][j] = new Label(); 
bunit[i][j].setBackground(Color.lightGray); 
bunit[i][j].addMouseListener(new UnitEvent(i,j)); 
bunit[i][j].addActionListener(this); 
lunit[i][j].setBackground(Color.white); 
punit[i][j].add(lunit[i][j],"down"); 
punit[i][j].add(bunit[i][j],"up"); 
//c.show(punit[i][j],"up"); 
p_down1.add(punit[i][j]); 
} 

p_up2.add(p_up1); 
p_down2.add(p_down1); 
f_main.add(p_up2); 
f_main.add(p_down2); 
f_main.setResizable(false); 
f_main.setVisible(true); 

//对话框 

d1.add(l1,"Center"); 
d1.setSize(300,150); 
d1.setLocation(200,200); 
d1.setLayout(new FlowLayout(FlowLayout.CENTER)); 
d1.addWindowListener(this); 
b1.setSize(50,30); 
b1.setLocation(75,50); 
//d.addWindowListener(new Dlg()); 
b1.addActionListener(this); 
d1.add(b1); 
d1.setVisible(false); 

d2.add(l2,"Center"); 
d2.setSize(550,150); 
d2.setLocation(200,200); 
d2.setLayout(new FlowLayout(FlowLayout.CENTER)); 
d2.addWindowListener(this); 
b2.setSize(50,30); 
//b2.setLocation(); 
b2.addActionListener(this); 
d2.add(b2); 
d2.setVisible(false); 

d3.add(l3,"Center"); 
d3.setSize(670,150); 
d3.setLocation(200,200); 
d3.setLayout(new FlowLayout(FlowLayout.CENTER)); 
d3.addWindowListener(this); 
b3.setSize(50,30); 
//b3.setLocation(); 
b3.addActionListener(this); 
d3.add(b3); 
d3.setVisible(false); 

init(); 


} 

public void init(){ 
data.init(); 
appear = true; 
remainbomb = 10; 
for(int i = 0;i < 9;i++) 
for(int j = 0;j < 9;j++){ 
bunit[i][j].setIcon(null); 
lunit[i][j].setText(data.initlunit(i,j) + ""); 
if(!data.rand[i][j]) 
lunit[i][j].setText("*"); 
if(lunit[i][j].getText().equals("0") && data.rand[i][j]) 
lunit[i][j].setText(""); 
c.last(punit[i][j]); 


} 

} 

public void actionPerformed(ActionEvent e){ 
if(e.getSource() == b1){ 
appear = false; 
d1.setVisible(false); 
} 
if(e.getSource() == b2) 
d2.setVisible(false); 
if(e.getSource() == b3) 
d3.setVisible(false); 
if(e.getActionCommand() == "帮助主题") 
d2.setVisible(true); 
if(e.getActionCommand() == "黑人皮皮") 
d3.setVisible(true); 
if(e.getActionCommand() == "开局") 
gamestart(); 
if(e.getActionCommand() == "退出") 
System.exit(1); 


for(int i = 0;i < 9;i++) 
for(int j = 0;j < 9;j++){ 
stop = false; 
if(e.getSource() == bunit[i][j]){ 
if(lunit[i][j].getText().equals("*")) { 
bunit[i][j].setIcon(touch); 
data.rand[i][j] = true; 
over(); 
return; 
} 
else{ 
if(lunit[i][j].getText().equals("")){ 
//c.first(punit[i][j]); 
blankarea(i,j); 
} 
else c.first(punit[i][j]); 
} 
if(threadstart == true){ 

new Timers().start(); 
threadstart = false; 
} 

} 
} 
if(e.getSource() == smile ){ 

gamestart(); 

//return; 
} 
for(int i = 0;i < 9; i ++) 
for(int j = 0;j < 9;j ++){ 
if(lunit[i][j].getText().equals("*") && 
bunit[i][j].getIcon() == flag && 
remainbomb == 0 && appear == true){ 
stop = true; 


d1.setVisible(true); 

} 
} 




} 
public void gamestart(){ 
smile.setIcon(smileface); 
init(); 
threadstart = true; 
stop = true; 
for( int i = 0;i < 9;i++) 
for( int j = 0;j < 9;j++){ 
bunit[i][j].setIcon(null); 
bunit[i][j].setEnabled(true); 
} 

l_right.setText("10"); 
l_left.setText("0"); 
} 
//很不幸,踩到了雷! 
public void over(){ 
stop = true; 
smile.setIcon(touch); 
for(int i = 0;i < 9;i++) 
for(int j = 0;j < 9;j++){ 
c.first(punit[i][j]); 
if(lunit[i][j].getText().equals("*") && bunit[i][j].getIcon() != touch){ 
bunit[i][j].setIcon(bomb); 
c.last(punit[i][j]); 
} 
if(bunit[i][j].getIcon() == touch){ 
bunit[i][j].setIcon(die); 
c.last(punit[i][j]); 
} 

bunit[i][j].setEnabled(false); 
} 

} 
//显示空白区域 
public void blankarea(int i,int j){ 
data.appear[i][j] = false; 
if(lunit[i][j].getText().equals("*")) return; 
else { 
if(lunit[i][j].getText().equals("")) c.first(punit[i][j]); 
else { 
c.first(punit[i][j]); 
return; 
} 
} 
if(i > 0 && j > 0 && data.appear[i - 1][j - 1]) 
blankarea(i - 1,j - 1); 
if(i > 0 && data.appear[i - 1][j] == true) 
blankarea(i - 1,j); 
if(i > 0 && j < 8 && data.appear[i - 1][j + 1]) 
blankarea(i - 1,j + 1); 
if(j > 0 && data.appear[i][j - 1]) 
blankarea(i,j - 1); 
if(j < 8 && data.appear[i][j + 1]) 
blankarea(i,j + 1); 
if(i< 8 && j > 0 && data.appear[i + 1][j - 1]) 
blankarea(i + 1,j - 1); 
if(i < 8 && data.appear[i + 1][j]) 
blankarea(i + 1,j); 
if(i < 8 && j < 8 && data.appear[i + 1][j + 1]) 
blankarea(i + 1,j + 1); 
} 

//程序入口main方法 
public static void main(String[] args){ 
new Clearbomb().display(); 
} 

public void windowClosing(WindowEvent e){ 
if(e.getSource() == d1) 
d1.setVisible(false); 
else if (e.getSource() == d2) 
d2.setVisible(false); 
else if(e.getSource() == d3) 
d3.setVisible(false); 
else 
System.exit(1); 
} 


//内部类,处理鼠标单击事件 
class UnitEvent extends MouseAdapter{ 
private int a,b; 


public UnitEvent(int a,int b){ 
this.a = a; 
this.b = b; 
} 
public void mouseClicked(MouseEvent e){ 


if (e.getModifiers() == InputEvent.BUTTON1_MASK){ 
; 
} 
if (e.getModifiers() == InputEvent.BUTTON2_MASK){ 
} 
if (e.getModifiers() == InputEvent.BUTTON3_MASK){ 

if(bunit[a][b].getIcon() == null){ 
bunit[a][b].setIcon(flag); 
remainbomb--; 
l_right.setText("" + remainbomb); 
if(lunit[a][b].getText().equals("*") && //显示对话框 
bunit[a][b].getIcon() == flag && 
remainbomb == 0){ 
stop = true; 
d1.setVisible(true); 
} 
return; 
} 
if(bunit[a][b].getIcon() == flag){//标记与凝问的切换 
bunit[a][b].setIcon(puzzle); 
remainbomb++; 
l_right.setText("" + remainbomb); 
return; 
} 
if(bunit[a][b].getIcon() == puzzle){ 
bunit[a][b].setIcon(null); 

return; 
} 


} 
} 
} 
class Timers extends Thread{//内部类,处理时间的显示 

public void run(){ 
int i = 0; 
while(!stop){ 
try{ 
sleep(1000); 
} 
catch(InterruptedException e){ 
System.out.println(e.getMessage()); 
} 

i++; 
l_left.setText(""+i); 
} 
return; 
} 
} 

} 














class Initdata{//初始数据 

public boolean rand[][] = new boolean[9][9]; 
public boolean appear[][] = new boolean[9][9]; 

public void init(){ 
for(int i = 0;i <= 8;i++) 
for(int j = 0;j <= 8;j++){ 
rand[i][j] = true; 
appear[i][j] = true; 
} 
Random r = new Random(); 
int bombcount = 0; 
for(;;){ 
int i; 
i = r.nextInt(81); 
if(rand[i/9][i%9]){ 
rand[i/9][i%9] = false; 
bombcount++; 
} 
if(bombcount == 10) break; 
} 
} 
public int initlunit(int i,int j){ 
int sum=0; 
if(i>0&&j>0&&!rand[i-1][j-1])sum++; 
if(j>0&&!rand[i][j-1])sum++; 
if(i<8&&j>0&&!rand[i+1][j-1])sum++; 
if(i<8&&!rand[i+1][j])sum++; 
if(i<8&&j<8&&!rand[i+1][j+1])sum++; 
if(j<8&&!rand[i][j+1])sum++; 
if(i>0&&j<8&&!rand[i-1][j+1])sum++; 
if(i>0&&!rand[i-1][j])sum++; 
return sum; 

} 

} 

 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -