Contoh artikel ini menjelaskan implementasi kode Lianliankan berbasis java berbasis swing. Bagikan dengan semua orang untuk referensi Anda.
Kode fungsi utamanya adalah sebagai berikut:
Copy kode kodenya sebagai berikut:
paket akan;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
/**
* Permainan Lianliankan
* @penulis Administrator
*17 Oktober 2014
*/
MainGame kelas publik mengimplementasikan ActionListener {
JFrame mainFrame; // Panel utama
Wadah Kontainer ini;
JPanel centerPanel, panel selatan, panel utara; // sub-panel
JButton diamondsButton[][] = JButton[6][5] baru;//Array tombol permainan
JButton exitButton, resetButton, newButton; //tombol keluar, reset, dan restart
JLabel fraksiLable = new JLabel("0"); // Label pecahan
JButton firstButton, secondButton; // Catat masing-masing tombol yang dipilih dua kali
int grid[][] = new int[8][7];//Simpan posisi tombol permainan
static boolean pressInformation = false; // Menentukan apakah suatu tombol dipilih
int x0 = 0, y0 = 0, x = 0, y = 0, pesan pertama = 0, pesan kedua = 0, validasiLV; // Koordinat posisi tombol permainan
int i, j, k, n; // Kontrol metode eliminasi
kekosongan publik init() {
mainFrame = new JFrame("Permainan Lianliankan");
thisContainer = mainFrame.getContentPane();
thisContainer.setLayout(BorderLayout baru());
centerPanel = JPanel baru();
SouthPanel = JPanel baru();
northPanel = JPanel baru();
thisContainer.add(centerPanel, "Tengah");
thisContainer.add(southPanel, "Selatan");
thisContainer.add(northPanel, "Utara");
centerPanel.setLayout(GridLayout baru(6, 5));
untuk (int kolom = 0; kolom < 6; kolom++) {
untuk (int baris = 0; baris < 5; baris++) {
diamondsButton[cols][baris] = JButton baru(
String.valueOf(kisi[kolom + 1][baris + 1]));
diamondsButton[cols][rows].addActionListener(ini);
centerPanel.add(diamondsButton[cols][baris]);
}
}
exitButton = new JButton("Keluar");
exitButton.addActionListener(ini);
resetButton = JButton baru("Setel Ulang");
resetButton.addActionListener(ini);
newButton = new JButton("Satu permainan lagi");
newButton.addActionListener(ini);
SouthPanel.add(exitButton);
SouthPanel.tambahkan(resetButton);
SouthPanel.add(newlyButton);
fraksiLable.setText(String.valueOf(Integer.parseInt(fractionLable
.getText())));
northPanel.add(fractionLable);
mainFrame.setBounds(280, 100, 500, 450);
mainFrame.setVisible(benar);
}
kekosongan publik randomBuild() {
int acak, kolom, baris;
for (int kembar = 1; kembar <= 15; kembar++) {
acak = (int) (Matematika.acak() * 25 + 1);
untuk (int sama = 1; sama <= 2; sama++) {
cols = (int) (Matematika.acak() * 6 + 1);
baris = (int) (Matematika.acak() * 5 + 1);
while (kisi[cols][baris] != 0) {
cols = (int) (Matematika.acak() * 6 + 1);
baris = (int) (Matematika.acak() * 5 + 1);
}
this.grid[cols][baris] = acak;
}
}
}
pecahan kekosongan publik() {
fraksiLable.setText(String.valueOf(Integer.parseInt(fractionLable
.getText()) + 100));
}
isi ulang kekosongan publik() {
int simpan[] = int baru[30];
int n = 0, kolom, baris;
int kisi[][] = int baru[8][7];
untuk (int saya = 0; saya <= 6; saya++) {
untuk (int j = 0; j <= 5; j++) {
if (ini.grid[i][j] != 0) {
simpan[n] = ini.grid[i][j];
n++;
}
}
}
n = n - 1;
this.grid = kisi;
sementara (n >= 0) {
cols = (int) (Matematika.acak() * 6 + 1);
baris = (int) (Matematika.acak() * 5 + 1);
while (kisi[cols][baris] != 0) {
cols = (int) (Matematika.acak() * 6 + 1);
baris = (int) (Matematika.acak() * 5 + 1);
}
this.grid[cols][baris] = simpan[n];
N--;
}
mainFrame.setVisible(salah);
pressInformation = false; // Informasi klik tombol harus diklasifikasikan sebagai awal di sini
init();
untuk (int saya = 0; saya < 6; saya++) {
untuk (int j = 0; j < 5; j++) {
jika (kisi[i + 1][j + 1] == 0)
diamondsButton[i][j].setVisible(false);
}
}
}
public void estimasiEven(int placeX, int placeY, JButton bz) {
if (tekanInformasi == salah) {
x = tempatX;
y = tempatY;
pesan kedua = kisi[x][y];
tombol kedua = bz;
tekanInformasi = benar;
} kalau tidak {
x0 = x;
kamu0 = kamu;
pesan pertama = pesan kedua;
Tombol pertama = Tombol kedua;
x = tempatX;
y = tempatY;
pesan kedua = kisi[x][y];
tombol kedua = bz;
if (fristMsg == pesan kedua && tombol kedua != Tombol pertama) {
xiao();
}
}
}
public void xiao() { // Bisakah dihilangkan dalam situasi yang sama? Analisislah dengan cermat tanpa berkomentar satu per satu
jika ((x0 == x && (y0 == y + 1 || y0 == y - 1))
||. ((x0 == x + 1 || x0 == x - 1) && (y0 == y))) { // Tentukan apakah keduanya berdekatan
menghapus();
} kalau tidak {
untuk (j = 0; j < 7; j++) {
if (grid[x0][j] == 0) { // Tentukan tombol mana di sebelah tombol pertama yang kosong
if (y > j) { // Jika koordinat Y tombol kedua lebih besar dari koordinat Y tombol kosong, berarti tombol pertama berada di sebelah kiri tombol kedua
for (i = y - 1; i >= j; i--) { // Tentukan apakah terdapat tombol dari sisi kiri tombol kedua hingga ke tengah tombol pertama
jika (kisi[x][i] != 0) {
k = 0;
merusak;
} kalau tidak {
k = 1;
} // K=1 menunjukkan bahwa verifikasi pertama telah lulus
}
jika (k == 1) {
linePassOne();
}
}
if (y < j) { // Jika koordinat Y tombol kedua lebih kecil dari koordinat Y tombol kosong, berarti tombol pertama berada di sebelah kanan tombol kedua
for (i = y + 1; i <= j; i++) { // Tentukan apakah terdapat tombol dari sisi kiri tombol kedua hingga tengah tombol pertama
jika (kisi[x][i] != 0) {
k = 0;
merusak;
} kalau tidak {
k = 1;
}
}
jika (k == 1) {
linePassOne();
}
}
jika (y == j) {
linePassOne();
}
}
jika (k == 2) {
jika (x0 == x) {
menghapus();
}
jika (x0 < x) {
untuk (n = x0; n <= x - 1; n++) {
jika (kisi[n][j] != 0) {
k = 0;
merusak;
}
jika (kisi[n][j] == 0 && n == x - 1) {
menghapus();
}
}
}
jika (x0 > x) {
untuk (n = x0; n >= x + 1; n--) {
jika (kisi[n][j] != 0) {
k = 0;
merusak;
}
jika (kisi[n][j] == 0 && n == x + 1) {
menghapus();
}
}
}
}
}
untuk (i = 0; i < 8; i++) { // kolom
jika (kisi[i][y0] == 0) {
jika (x > saya) {
untuk (j = x - 1; j >= i; j--) {
jika (kisi[j][y] != 0) {
k = 0;
merusak;
} kalau tidak {
k = 1;
}
}
jika (k == 1) {
barisPassOne();
}
}
jika (x < saya) {
untuk (j = x + 1; j <= i; j++) {
jika (kisi[j][y] != 0) {
k = 0;
merusak;
} kalau tidak {
k = 1;
}
}
jika (k == 1) {
barisPassOne();
}
}
jika (x == saya) {
barisPassOne();
}
}
jika (k == 2) {
jika (y0 == y) {
menghapus();
}
jika (y0 < kamu) {
untuk (n = y0; n <= y - 1; n++) {
jika (kisi[i][n] != 0) {
k = 0;
merusak;
}
jika (kisi[i][n] == 0 && n == y - 1) {
menghapus();
}
}
}
jika (y0 > kamu) {
untuk (n = y0; n >= y + 1; n--) {
jika (kisi[i][n] != 0) {
k = 0;
merusak;
}
jika (kisi[i][n] == 0 && n == y + 1) {
menghapus();
}
}
}
}
}
}
}
kekosongan publik linePassOne() {
if (y0 > j) {// Tombol pertama ada di sebelah kiri dengan tombol kosong
for (i = y0 - 1; i >= j; i--) { // Tentukan apakah ada tombol di antara tombol pertama dan tombol kosong di sebelah kiri
jika (kisi[x0][i] != 0) {
k = 0;
merusak;
} kalau tidak {
k = 2;
} // K=2 menandakan verifikasi kedua telah lolos
}
}
if (y0 < j) {// Tombol pertama berada di antara tombol kosong dan tombol kedua
untuk (saya = y0 + 1; saya <= j; saya++) {
jika (kisi[x0][i] != 0) {
k = 0;
merusak;
} kalau tidak {
k = 2;
}
}
}
}
kekosongan publik rowPassOne() {
jika (x0 > saya) {
untuk (j = x0 - 1; j >= i; j--) {
jika (kisi[j][y0] != 0) {
k = 0;
merusak;
} kalau tidak {
k = 2;
}
}
}
jika (x0 < saya) {
untuk (j = x0 + 1; j <= i; j++) {
jika (kisi[j][y0] != 0) {
k = 0;
merusak;
} kalau tidak {
k = 2;
}
}
}
}
kekosongan publik hapus() {
firstButton.setVisible(salah);
secondButton.setVisible(salah);
pecahan();
tekanInformasi = salah;
k = 0;
kisi[x0][y0] = 0;
kisi[x][y] = 0;
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == Tombol baru) {
int kisi[][] = int baru[8][7];
this.grid = kisi;
acakBuild();
mainFrame.setVisible(salah);
tekanInformasi = salah;
init();
}
jika (e.getSource() == exitButton)
Sistem.keluar(0);
jika (e.getSource() == resetButton)
muat ulang();
untuk (int kolom = 0; kolom < 6; kolom++) {
untuk (int baris = 0; baris < 5; baris++) {
if (e.getSource() == diamondsButton[cols][baris])
estimasiEven(cols + 1, baris + 1, diamondsButton[cols][rows]);
}
}
}
public static void main(String[] args) {
MainGame mg = MainGame baru();
mg.randomBuild();
mg.init();
}
}
Saya harap artikel ini bermanfaat untuk pemrograman Java semua orang.