以下是一個簡單的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的游戲,你可以根據需要調整大小。