中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

Java怎么實現簡單連連看游戲

小億
107
2023-08-10 05:40:58
欄目: 編程語言

以下是一個簡單的Java實現連連看游戲的示例代碼:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class LianLianKan extends JFrame implements ActionListener {
private JButton[][] buttons;
private int[][] board;
private int size;
private int selectedRow;
private int selectedColumn;
public LianLianKan(int size) {
super("連連看");
this.size = size;
board = new int[size][size];
buttons = new JButton[size][size];
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new GridLayout(size, size));
for (int i = 0; i < size; i++) {
for (int j = 0; j < size; j++) {
JButton button = new JButton();
button.addActionListener(this);
buttons[i][j] = button;
add(button);
}
}
generateBoard();
refreshBoard();
pack();
setLocationRelativeTo(null);
setVisible(true);
}
public void generateBoard() {
for (int i = 0; i < size; i++) {
for (int j = 0; j < size; j++) {
board[i][j] = (i * size + j) % (size * size / 2) + 1;
}
}
}
public void refreshBoard() {
for (int i = 0; i < size; i++) {
for (int j = 0; j < size; j++) {
buttons[i][j].setText(String.valueOf(board[i][j]));
}
}
}
public void actionPerformed(ActionEvent e) {
JButton button = (JButton) e.getSource();
int row = -1;
int column = -1;
// Find the clicked button
for (int i = 0; i < size; i++) {
for (int j = 0; j < size; j++) {
if (buttons[i][j] == button) {
row = i;
column = j;
break;
}
}
}
if (selectedRow == -1 && selectedColumn == -1) {
// No previous selection
selectedRow = row;
selectedColumn = column;
button.setEnabled(false);
} else {
if (board[selectedRow][selectedColumn] == board[row][column]) {
// Match found, remove buttons
buttons[selectedRow][selectedColumn].setVisible(false);
buttons[row][column].setVisible(false);
board[selectedRow][selectedColumn] = 0;
board[row][column] = 0;
} else {
// No match, reset selection
buttons[selectedRow][selectedColumn].setEnabled(true);
}
selectedRow = -1;
selectedColumn = -1;
}
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new LianLianKan(4); // Create a 4x4 game
}
});
}
}

在這個示例代碼中,我們創建了一個JFrame窗口,其中包含了一個指定大小的網格,每個格子是一個JButton按鈕。我們使用一個二維數組board來表示每個格子上的圖案,初始時每個格子上的圖案是隨機生成的。

當玩家點擊一個按鈕時,我們通過ActionEvent來處理按鈕點擊事件。如果之前沒有選中的格子,那么我們將當前格子設為選中,并禁用該按鈕。如果之前已經選中了一個格子,我們將當前格子與之前選中的格子進行比較。如果兩個格子上的圖案相同,說明找到了一對匹配,我們將它們從界面上隱藏,并將board中對應位置的值設為0。如果兩個格子上的圖案不同,我們將之前選中的格子的按鈕重新啟用。

最后,在main方法中創建一個LianLianKan對象,傳入指定的大小,即可運行連連看游戲。在這個示例中,我們創建了一個4x4的游戲,你可以根據需要調整大小。

0
玉环县| 军事| 南宫市| 焦作市| 时尚| 湟中县| 宁海县| 凤城市| 抚顺县| 巴楚县| 天水市| 高邑县| 轮台县| 涞源县| 酉阳| 乃东县| 分宜县| 新和县| 建瓯市| 台南县| 虹口区| 白朗县| 青田县| 肇州县| 即墨市| 邻水| 尉犁县| 承德县| 石台县| 鞍山市| 凯里市| 南部县| 沙湾县| 乌苏市| 南溪县| 来宾市| 陆川县| 波密县| 宁阳县| 栖霞市| 炎陵县|