beginBtn.setBounds(new Rectangle(250, 5, 25, 25));
beginBtn.setBorder(BorderFactory.createBevelBorder(0));
beginBtn.addActionListener(new slFrame_beginBtn_actionAdatper(this));
beginBtn.setIcon(createImageIcon("images/laugh.jpg"));
paneTime.setBounds(new Rectangle(0, 0, 585, 35));
paneTime.setBorder(BorderFactory.createEtchedBorder());
paneTime.setLayout(null);
paneTime.add(landmineTally);
paneTime.add(timeTally);
paneTime.add(beginBtn);
pane.setBounds(new Rectangle(0, 35, 590, 320));
pane.setLayout(gridLayout1);
gridLayout1.setColumns(30);
gridLayout1.setRows(16);
file.add(game);
file.add(help);
game.add(start);
game.add(record);
game.add(quit);
help.add(clearReocrd);
this.getContentPane().add(pane);
this.getContentPane().add(paneTime);
ActionListener listener = new ActionListener(){//自定义线程
public void actionPerformed(ActionEvent e){
timeCount++;
timeTally.setText(Integer.toString(timeCount));
}
};
timer = new Timer(1000, listener);//增加线程java扫雷带注释源代码,并每1秒执行一次;
for (int i=0;i480;i++)//实例化480个小按钮加到面板pane中
{
cardsBtn[i] = new JButton();
cardsBtn[i].setText("");//按钮上的文字去掉;
cardsBtn[i].setBorder(null); //按钮的边框去掉;
pane.add(cardsBtn[i]);
}
}
/**主方法*/
public static void main(String[] args) {
shaolei frame = new shaolei();
frame.setSize(580,410);
frame.setTitle("扫雷");
frame.show();
frame.setResizable(false);//不能修改窗体大小
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //点关闭按钮时直
}
/**自定义方法,用来给按钮增加图片*/
protected static ImageIcon createImageIcon(String path){
java.net.URL imgURL = shaolei.class.getResource(path);
if (imgURL != null) {
return new ImageIcon(imgURL);
} else {
System.err.println("Couldn't find file: " + path);
return null;
}
}
/**菜单按钮的事件,开始游戏*/
public void start_actionPerformed(ActionEvent e) {
start();//初始化;
arithmetic(); //计算雷的位置;
calculate(); //计算雷的分布情况;
timer.start(); //时间线程开始;
}
/**开始游戏按钮的事件*/
public void beginBtn_mouseClicked(ActionEvent e){
start_actionPerformed(e); //直接调用菜单的事件;
}
/**自定义方法,游戏从这里开始,方法里对按钮的属性和状态进行初始化;*/
void start(){
timeCount=0; //时间从0开始;
landmineTally.setText("99");//所剩雷数为99;
for (int i = 0; i480; i++){
cardsBtn[i].setIcon(null);//清除按钮上的图片;
map.put( Integer.toString(i),Integer.toString(10)); //分布状态全为10,表示为空;
flag_landmine.put( Integer.toString(i),Integer.toString(10)); //标记状态全为10;
cardsBtn[i].removeMouseListener(buttonClick[i]);//去除雷区所有按钮的鼠标事件;
}
}
/**自定义方法,用来计算雷的分布位置*/
void arithmetic(){
Calendar time = Calendar.getInstance(); //日历类,得到当前时间;
int leed = time.get(Calendar.SECOND);//得到当前时间的秒;
Random rand = new Random(leed);//把秒数当个随机数的种子;
int tempRand; //临时随机数;
int landmintTally=0;//得到多少雷的计数器;
boolean flag=false;//标记是否重复;
int tempNum;
while(landmintTally99){//最多只能有99颗雷;
tempRand = (int)(rand.nextFloat()*480);//得随机数;
tempNum = Integer.parseInt(map.get(Integer.toString(tempRand)).toString());
if (tempNum == 7) continue;//如果重复执行一个数字;
landmine[landmintTally] = Integer.toString(tempRand);//把得到的位置放进字符串;
推荐阅读
- java代码实现卷积计算,java 卷积
- 外资招聘gis,外资招聘要求
- 你用什么显卡用英语怎么说,你用的是什么配置
- 霞湖世家直播卖货最高记录,霞湖世家给谁代工
- php添加数组数据 php数组加法
- 临床医疗的区块链技术,医疗区块链应用
- 门店导航小程序源码码,店铺导航怎么写
- vb.net自动填写表单 vba 自动填写数据
- flutter国内,flutter国内案例