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

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

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

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

初學(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();
 //添加雷的計算
 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é)果如下

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

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

相關(guān)文章

最新評論

双江| 积石山| 富锦市| 荣昌县| 麻栗坡县| 岑溪市| 南丰县| 依安县| 阆中市| 阳泉市| 崇阳县| 辽宁省| 镇平县| 勐海县| 克东县| 嘉祥县| 永德县| 图片| 广宁县| 运城市| 济南市| 永昌县| 龙口市| 本溪市| 垦利县| 岳西县| 濉溪县| 穆棱市| 稷山县| 昌平区| 南和县| 康保县| 浦城县| 登封市| 如皋市| 商洛市| 白朗县| 凤山市| 望城县| 苏州市| 台中市|