最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java實(shí)現(xiàn)簡(jiǎn)單的掃雷小程序

 更新時(shí)間:2020年04月23日 10:41:52   作者:cyg_l02  
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)簡(jiǎn)單的掃雷小程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

前兩天看了個(gè)掃雷的視頻,于是自己跟著做了下,感覺還不是很難。

初學(xué)Java的同學(xué)可以嘗試自己操作下Java小程序

這樣子才能提高自己的理解能力和編程水平

不用多說了,直接上代碼吧!

具體代碼操作如下:

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;


 import javax.swing.JButton;
 import javax.swing.JFrame;
 import javax.swing.*;


 public class saolei implements ActionListener {
 JFrame frame=new JFrame("掃雷游戲");
 JButton reset=new JButton("重來");
 Container container=new Container();
 
 //游戲數(shù)據(jù)結(jié)構(gòu)
 final int row=20;
 final int col=20;
 final int leiCount=30;
 JButton [][] buttons=new JButton[row][col];
 int [][] counts=new int[row][col];
 final int LEICODE=10;
 
 // 構(gòu)造函數(shù)
 public saolei(){
 //1、設(shè)置窗口
 frame.setSize(900, 800);
 frame.setResizable(true);//是否可改變窗口大小
 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 frame.setLayout(new BorderLayout());
 //2、添加重來按鈕
 addResetButton();
 //添加按鈕
 addButtons();
 
 //埋雷
 addLei();
 //添加雷的計(jì)算
 calcNeiboLei();
 frame.setVisible(true);
 }
 public void addResetButton(){
 reset.setBackground(Color.green);
 reset.setOpaque(true);
 reset.addActionListener(this);
 frame.add(reset,BorderLayout.NORTH);
 }
 public void addLei(){
 Random rand=new Random();
 int randRow,randCol;
 for(int i=0;i<leiCount;i++){
 randRow=rand.nextInt(row);
 randCol=rand.nextInt(col);
 if(counts[randRow][randCol]== LEICODE){
 i--;
 }else{
 counts[randRow][randCol]=LEICODE;
 //buttons[randRow][randCol].setText("*");
 
 }
 }
 }
 public void addButtons(){
 frame.add(container,BorderLayout.CENTER);
 container.setLayout(new GridLayout(row,col));
 for(int i=0;i<row;i++){
 for(int j=0;j<col;j++){
 JButton button=new JButton();
 button.setBackground(Color.yellow);
 button.setOpaque(true);
 button.addActionListener(this);
 buttons[i][j]=button;
 container.add(button);
 }
 }
 }


 public void calcNeiboLei(){
 int count;
 for(int i=0;i<row;i++){
 for(int j=0;j<col;j++){
 count=0;
 if(counts[i][j]==LEICODE) continue;
 
 if(i>0 && j>0 && counts[i-1][j-1]==LEICODE) count++;
 if(i>0&&counts[i-1][j]==LEICODE) count++;
 if(i>0 && j<19 && counts[i-1][j+1]==LEICODE) count++;
 if(j>0 && counts[i][j-1]==LEICODE) count++;
 if(j<19 && counts[i][j+1]==LEICODE) count++;
 if(i<19&&j>0&&counts[i+1][j-1]==LEICODE) count++;
 if(i<19&&counts[i+1][j]==LEICODE) count++;
 if(i<19&&j<19&&counts[i+1][j+1]==LEICODE) count++;
 
 counts[i][j]=count;
 //buttons[i][j].setText(counts[i][j]+"");
 }
 }
 }
 @Override
 public void actionPerformed(ActionEvent e) {
 // TODO Auto-generated method stub
 JButton button=(JButton)e.getSource();
 if(button.equals(reset)){
 for(int i=0;i<row;i++){
 for(int j=0;j<col;j++){
  buttons[i][j].setText("");
  buttons[i][j].setEnabled(true);
  buttons[i][j].setBackground(Color.yellow);
  counts[i][j]=0;
 }
 }
 addLei();
 calcNeiboLei();
 }else{
 int count=0;
 for(int i=0;i<row;i++){
 for(int j=0;j<col;j++){
  if(button.equals(buttons[i][j])){
  count=counts[i][j];
  if(count==LEICODE){
  LoseGame();
  }else{
  openCell(i,j);
  checkWin();
  } return;
 }
 }
 }
 
 
 }
 }
 void checkWin(){
 for(int i=0;i<row;i++){
 for(int j=0;j<col;j++){
 if(buttons[i][j].isEnabled()==true && counts[i][j]!=LEICODE) return;
 }
 }
 JOptionPane.showMessageDialog(frame, "Yeah,你贏了!");
 }
 void openCell(int i,int j){
 if(buttons[i][j].isEnabled()==false) return;
 
 buttons[i][j].setEnabled(false); 


 if(counts[i][j]==0){
 if(i>0 && j>0 && counts[i-1][j-1]!=LEICODE) openCell(i-1, j-1);
 if(i>0&&counts[i-1][j]!=LEICODE) openCell(i-1, j);
 if(i>0 && j<19 && counts[i-1][j+1]!=LEICODE) openCell(i-1, j+1);
 if(j>0 && counts[i][j-1]!=LEICODE) openCell(i, j-1);
 if(j<19 && counts[i][j+1]!=LEICODE) openCell(i, j+1);
 if(i<19&&j>0&&counts[i+1][j-1]!=LEICODE) openCell(i+1, j-1);
 if(i<19&&counts[i+1][j]!=LEICODE) openCell(i+1, j);
 if(i<19&&j<19&&counts[i+1][j+1]!=LEICODE) openCell(i+1, j+1);
 
 buttons[i][j].setText(counts[i][j]+"");
 }else{
 buttons[i][j].setText(counts[i][j]+"");
 }
 }
 void LoseGame(){
 for(int i=0;i<row;i++){
 for(int j=0;j<col;j++){
 int count=counts[i][j];
 if(count==LEICODE){
  buttons[i][j].setText("X");
  buttons[i][j].setBackground(Color.red);
  buttons[i][j].setEnabled(false);
 }else{
  buttons[i][j].setText(count+"");
  buttons[i][j].setEnabled(false); 
 }
 }
 }
 }
 public static void main(String[] args) {
 saolei lei=new saolei();
 }
 

}

大致具體的代碼和結(jié)果如下

更多精彩游戲,請(qǐng)參考專題《java經(jīng)典小游戲》

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

肃宁县| 沈阳市| 安仁县| 玛纳斯县| 连南| 北海市| 逊克县| 内黄县| 罗平县| 洛浦县| 宿松县| 鄂托克旗| 临安市| 无为县| 东乌珠穆沁旗| 武平县| 余姚市| 土默特右旗| 商城县| 特克斯县| 保亭| 叙永县| 胶南市| 秭归县| 始兴县| 曲沃县| 兰州市| 慈溪市| 靖远县| 岐山县| 常山县| 清镇市| 滦南县| 乌苏市| 兴义市| 河间市| 梁山县| 德惠市| 唐河县| 河西区| 宁国市|