日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Java語言實現掃雷游戲(1)

瀏覽:23日期:2022-09-02 14:40:34

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語言實現掃雷游戲(1)

這樣,我們第一階段的工作就完成了.接下來,我們要在上面這個圖中產生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語言實現掃雷游戲(1)

至此,我們已經完成了掃雷游戲的一半程序,只剩下填充按鈕和點擊按鈕后發生的邏輯判斷了,這些將在下一篇文章中繼續分享

完整詳細代碼(已注釋好)已經附在下一篇博客中,供交流和學習,歡迎查閱 Java語言實現的掃雷游戲(二)

更多精彩游戲,請參考專題《java經典小游戲》

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产视频一区免费看| 欧美欧美黄在线二区| 久久亚州av| 欧美1区2区3| 91伊人久久| 国产日韩一区二区三区在线播放| 日韩av午夜在线观看| 国产精品伊人| 精品国产亚洲一区二区三区大结局| 老牛国内精品亚洲成av人片| 国产一区二区精品福利地址| 精品一区91| 欧洲av一区二区| 欧美日韩激情| 快she精品国产999| 日韩中文字幕一区二区高清99| 日韩国产欧美在线播放| 国产欧美一区二区三区米奇| 麻豆精品视频在线| 国产精品va| 一区二区三区四区日本视频| 久久要要av| 一区二区三区国产在线| 久久国产麻豆精品| 正在播放日韩精品| 国产一区日韩欧美| 视频一区中文字幕精品| 国产精品4hu.www| 欧美精品高清| 日韩中文字幕1| 欧美国产先锋| 久久久成人网| 亚洲毛片在线免费| 国产精品白丝久久av网站| 国产va在线视频| 在线亚洲欧美| 国产黄色精品| 欧美日韩水蜜桃| 亚洲+小说+欧美+激情+另类| 欧美国产极品| 亚洲男女av一区二区| 91伊人久久| 欧美日韩精品免费观看视欧美高清免费大片 | 久久一区亚洲| 午夜日韩在线| 国产精品自拍区| 亚洲成人不卡| 日韩精品中文字幕一区二区| 久久久久久色| 亚洲成人二区| 日韩美女精品| 亚洲成人不卡| 欧美亚洲色图校园春色| 日韩三区免费| 日韩高清在线一区| 久久久蜜桃一区二区人| 亚洲aa在线| 亚洲va中文在线播放免费| 亚洲欧洲专区| 国产麻豆久久| 国产精品一区二区精品| 欧美日韩在线播放视频| 国产欧美成人| 视频福利一区| 麻豆精品久久| 久久国产66| 麻豆mv在线观看| 欧美在线看片| 午夜欧美精品久久久久久久| 精品精品99| 亚洲毛片一区| 欧美日韩国产免费观看视频| 久久久久久久久成人| 蜜桃视频一区二区三区| 日韩精品诱惑一区?区三区| 日韩不卡在线观看日韩不卡视频| 麻豆理论在线观看| 日韩精品亚洲专区在线观看| 久久精品不卡| 精品久久电影| 国产无遮挡裸体免费久久| 亚洲在线电影| 日韩欧美一区二区三区免费观看| 国产亚洲人成a在线v网站| 日韩午夜一区| 快播电影网址老女人久久| 免费看久久久| 日韩精品高清不卡| 国产麻豆综合| 久久中文字幕二区| 91av亚洲| 久久久久久久久成人| 日本亚洲最大的色成网站www| 91国语精品自产拍| 久久亚洲精品中文字幕蜜潮电影| 久久久久久色| 欧美日本久久| 中文字幕成人| 国产亚洲欧洲| 亚洲欧美综合| 日韩不卡在线| 日韩在线二区| 久久精品国产免费| 国产乱码精品一区二区三区亚洲人| 日av在线不卡| 在线亚洲观看| 免费欧美一区| 91av亚洲| 日韩黄色大片网站| 美女av在线免费看| 国内精品伊人| 国产一区国产二区国产三区| 国产精品伦一区二区| 日本强好片久久久久久aaa| 亚洲欧美久久精品| 日韩欧乱色一区二区三区在线| 蜜臀久久99精品久久久画质超高清| 欧美特黄一区| 亚洲激情不卡| 噜噜噜躁狠狠躁狠狠精品视频| 夜夜嗨av一区二区三区网站四季av| 国产99亚洲| 在线观看免费一区二区| 一本一道久久a久久精品蜜桃| 婷婷亚洲五月| 9色精品在线| 日韩在线一区二区| 日本不卡一区二区三区| 91成人精品在线| 国产精品亚洲欧美| 久久一区精品| 日韩成人三级| 91精品高清| 在线日韩成人| 欧美专区一区| 久久精品资源| 麻豆理论在线观看| 久久婷婷丁香| 国产亚洲精品久久久久婷婷瑜伽| 日本欧美在线看| 欧美精品国产| 成人在线免费观看91| 日韩毛片视频| 好吊一区二区三区| 亚洲精品三级| 欧美韩一区二区| 日韩欧美一区二区三区免费看| 久久久水蜜桃av免费网站| 91久久午夜| 日本不卡视频在线| 国产福利资源一区| 欧美日韩国产观看视频| 99热精品久久| 人人精品人人爱| 国产精品美女在线观看直播| 国产色播av在线| 伊人久久成人| 国产视频网站一区二区三区| 国产精品99视频| 久久精品国产68国产精品亚洲| 老牛影视一区二区三区| 国产精品久久久久久久久久齐齐| 国产拍在线视频| 久久亚洲风情| 美女性感视频久久| 欧美日韩国产探花| 欧美亚洲一区二区三区| 91亚洲国产| 久久国产精品毛片| 麻豆一区在线| 亚洲欧美视频一区二区三区| 国产免费播放一区二区| 亚洲成av人片一区二区密柚| 日韩欧美在线精品| 中文一区一区三区高中清不卡免费| 日韩午夜电影| 牛牛精品成人免费视频| 国产一区观看| 欧美国产日韩电影| 99亚洲精品| 久久精品毛片| 91成人超碰| 欧美黄色一区| 午夜亚洲精品| 色爱综合网欧美| 亚洲一区欧美| 91亚洲国产成人久久精品| 亚洲婷婷丁香| 偷拍精品精品一区二区三区| 日韩欧美在线精品| 亚洲91视频| 国产精品探花在线观看| 亚洲精品97| 精品精品99| 亚洲bt欧美bt精品777| 日本精品影院| 国产日韩中文在线中文字幕 | 久久久久久婷| 日韩一区二区三区免费视频| 成人看片网站|