欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2020年04月23日 10:41:52   作者:cyg_l02  
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xià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é)果如下

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

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

相關(guān)文章

  • Java IO流對文件File操作

    Java IO流對文件File操作

    這篇文章主要介紹了Java IO流對文件File操作,java封裝的一個(gè)操作文件及文件夾(目錄)的對象??梢圆僮鞔疟P上的任何一個(gè)文件和文件夾
    2022-12-12
  • Java的動(dòng)態(tài)分派和靜態(tài)分派的實(shí)現(xiàn)

    Java的動(dòng)態(tài)分派和靜態(tài)分派的實(shí)現(xiàn)

    這篇文章主要介紹了Java的動(dòng)態(tài)分派和靜態(tài)分派的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • spring boot中各個(gè)版本的redis配置問題詳析

    spring boot中各個(gè)版本的redis配置問題詳析

    這篇文章主要給大家介紹了關(guān)于spring boot中各個(gè)版本的redis配置問題的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-12-12
  • Nacos的單機(jī)模式啟動(dòng)失敗問題及解決

    Nacos的單機(jī)模式啟動(dòng)失敗問題及解決

    這篇文章主要介紹了Nacos的單機(jī)模式啟動(dòng)失敗問題及解決,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • Java中增強(qiáng)for循環(huán)代碼示例

    Java中增強(qiáng)for循環(huán)代碼示例

    這篇文章主要給大家介紹了Java中增強(qiáng)for循環(huán)的相關(guān)資料,for/in循環(huán)就是JDK5.0中所謂的增強(qiáng)For循環(huán),它能對數(shù)組和集合進(jìn)行遍歷,使用它會(huì)使用你的代碼短小而精煉的多,需要的朋友可以參考下
    2023-10-10
  • Spring Boot Web應(yīng)用程序配置詳解

    Spring Boot Web應(yīng)用程序配置詳解

    這篇文章主要介紹了Spring Boot Web應(yīng)用程序配置詳解,本文中將介紹一些Web應(yīng)用程序最常用的配置,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-05-05
  • 最新評論