91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java語言如何實現掃雷游戲

發布時間:2020-07-31 10:43:13 來源:億速云 閱讀:203 作者:小豬 欄目:編程語言

這篇文章主要講解了Java語言如何實現掃雷游戲,內容清晰明了,對此有興趣的小伙伴可以學習一下,相信大家閱讀完之后會有幫助。

Java類庫中提供了用于GUI的swing開發工具包,我們可以利用swing設計出一些簡單的經典小游戲,如掃雷,推箱子,俄羅斯方塊等.接下來我就簡單分享一下用Java設計掃雷游戲的思路與過程.

首先,我們要設計出掃雷的窗口界面,說白了,也就是在窗口上繪制出指定行數和列數的小方格.要在窗體上繪制方格,我們需要一個JPanel面板,所以我們定義類GamePanel讓它繼承自JPanel,然后我們在就可以這個類上繪制我們所要的信息了.然后,在類中,我們定義一些基本的變量,如行數,列數,雷的數量等等,方便后面使用

import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
 
import javax.swing.BorderFactory;
import javax.swing.JLabel;
import javax.swing.JPanel;
 
public class GamePanel extends JPanel {
 private static final long serialVersionUID = 1L;
 // 界面行數
 private int rows;
 // 界面列數
 private int cols;
 // 炸彈數
 private int bombCount;
 // 每個方格寬度
 private final int BLOCKWIDTH = 20;
 // 每個方格長度
 private final int BLOCKHEIGHT = 20;
 // 存儲界面中每一個方格的繪制信息
 private JLabel[][] labels;
}

(JLabel標簽用于短文本字符串或圖像或二者的顯示區,我們用它來顯示方格邊界,數字,或者雷等信息)

接下來我們在構造方法中初始化這些類變量

// 構造方法,初始化參數
 public GamePanel(int rows, int cols) {
 this.rows = rows;
 this.cols = cols;
 this.bombCount = rows * cols / 10;
 this.labels = new JLabel[rows][cols];
 this.setLayout(null);
 }

然后,我們就可以在這個JPanel面板上繪制小方格了.我們先創建一個名為initLabels()的方法,在這個方法中根據行數和列數循環產生JLabel標簽,并將每個標簽的邊界繪制出來,填充背景并將它們存儲到類二維數組變量 labels中,這樣,我們就得到了一個充滿小方格的掃雷窗體

// 界面初始化,繪制掃雷的邊框
 private void initLabels(){
 for (int i = 0; i < this.rows; i++) {
 for (int j = 0; j < this.cols; j++) {
 JLabel l = new JLabel("", JLabel.CENTER);
 // 設置每個小方格的邊界
 l.setBounds(j * BLOCKWIDTH, i * BLOCKHEIGHT, BLOCKWIDTH, BLOCKHEIGHT);
 // 繪制方格邊框
 l.setBorder(BorderFactory.createLineBorder(Color.GRAY));
 // 設置方格為透明,便于我們填充顏色
 l.setOpaque(true);
 // 背景填充為黃色
 l.setBackground(Color.YELLOW);
 // 將方格加入到容器中(即面板JPanel)
 this.add(l);
 // 將方格存到類變量中,方便公用
 labels[i][j] = l;
 }
 }
 
 }

然后在構造方法中調用這個初始化方法

this.initLabels();// 寫在構造方法中

當我們將這個JPanel面板繪制完后,我們還要將它放在一個JFrame容器中它才能顯示出來,這樣我們就需要將JPanel的大小作為參數傳出去,方便設置容器的大小,所以我們再定義一個public的方法,計算寬和高,并以數組的形式傳遞出去

//計算寬和高,并傳給容器
public int[] returnSize() {
 // 因為窗體的菜單欄,邊框也要占用像素,所以加上20和40修正大小
 int[] a = {this.cols * BLOCKWIDTH + 20, this.rows * BLOCKHEIGHT + 40};
 return a;
}

最后創建一個Game類,在這個類中寫程序的主入口main,進行仿真調試

import java.awt.Container; 
import javax.swing.JFrame;
 
public class Game {
 public static void main(String[] args) {
 // 創建JFrame對象作為容器
 JFrame w = new JFrame();
 // 創建mainPanel對象,初始化一個20*30的方格窗體
 GamePanel mainPanel = new GamePanel(20, 30);
 // 獲取JFrame應給設置的寬度和高度
 int[] a = mainPanel.returnSize();
 // 設置JFame寬和高
 w.setSize(a[0], a[1]);
 Container c = w.getContentPane();
 c.add(mainPanel);
 
 w.setVisible(true);
 }
}

運行程序,結果如下

Java語言如何實現掃雷游戲

這樣,我們第一階段的工作就完成了.接下來,我們要在上面這個圖中產生bombCount個炸彈,也就是在我們生成的labels中隨機挑選出bombCount個炸彈,并用"*"顯示出來

// 產生bombCount個炸彈,并在labels中用"*"標注出來
 private void randomBomb() {
 for (int i = 0; i < this.bombCount; i++) {
 // 生成一個隨機數表示行坐標
 int rRow = (int) (Math.random() * this.rows);
 // 生成一個隨機數表示列坐標
 int rCol = (int) (Math.random() * this.cols);
 // 根據坐標確定JLabel的位置,并顯示*
 this.labels[rRow][rCol].setText("*");
 // 設置背景顏色
 this.labels[rRow][rCol].setBackground(Color.DARK_GRAY);
 // 設置*的顏色
 this.labels[rRow][rCol].setForeground(Color.RED);
 }
 }

然后我們在initLabels()方法中調用randomBomb()這個方法,運行程序,顯示如下:

Java語言如何實現掃雷游戲

看完上述內容,是不是對Java語言如何實現掃雷游戲有進一步的了解,如果還想學習更多內容,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

万安县| 乐安县| 金塔县| 固镇县| 蕲春县| 遵义市| 宝兴县| 利津县| 石首市| 林甸县| 砚山县| 磐石市| 宜川县| 临江市| 仲巴县| 连云港市| 都安| 霍林郭勒市| 抚远县| 凭祥市| 荥经县| 苗栗市| 平定县| 建阳市| 襄樊市| 怀宁县| 安阳县| 江华| 沽源县| 封丘县| 营口市| 星子县| 文安县| 华池县| 界首市| 商洛市| 永兴县| 蒲城县| 梁山县| 宾川县| 桐庐县|