El ejemplo de este artículo describe la implementación del código Lianliankan basado en Java basado en swing. Compártelo con todos para tu referencia.
Los códigos de función principales son los siguientes:
Copie el código de código de la siguiente manera:
paquete llkan;
importar javax.swing.*;
importar java.awt.*;
importar java.awt.event.*;
/**
* Juego Lianliankan
* @autor Administrador
*17 de octubre de 2014
*/
la clase pública MainGame implementa ActionListener {
JFrame marco principal; // Panel principal
Contenedor esteContenedor;
JPanel centerPanel, SouthPanel, NorthPanel // subpanel;
JButton diamondsButton[][] = new JButton[6][5];//Matriz de botones del juego
JButton exitButton, resetButton, newButton // Botones de salida, reinicio y reinicio;
JLabel fraccionLable = new JLabel("0"); // Etiqueta de fracción
JButton firstButton, secondButton // Graba los botones seleccionados dos veces respectivamente
int grid[][] = new int[8][7];//Guardar la posición del botón del juego
static boolean pressInformation = false // Determina si un botón está seleccionado
int x0 = 0, y0 = 0, x = 0, y = 0, primer mensaje = 0, segundo mensaje = 0, validarLV // Coordenadas de posición del botón del juego;
int i, j, k, n; // Control del método de eliminación
inicio vacío público() {
mainFrame = new JFrame("Juego Lianliankan");
esteContenedor = mainFrame.getContentPane();
thisContainer.setLayout(nuevo BorderLayout());
centerPanel = nuevo JPanel();
panelsur = nuevo JPanel();
panelnorte = nuevo JPanel();
thisContainer.add(centerPanel, "Centro");
thisContainer.add(panelsur, "Sur");
thisContainer.add(northPanel, "Norte");
centerPanel.setLayout(nuevo GridLayout(6, 5));
para (int columnas = 0; columnas < 6; columnas ++) {
para (int filas = 0; filas < 5; filas++) {
DiamondsButton[cols][filas] = nuevo JButton(
String.valueOf(grid[cols + 1][filas + 1]));
DiamondsButton[cols][filas].addActionListener(this);
centerPanel.add(diamondsButton[cols][filas]);
}
}
botónSalir = nuevo JButton("Salir");
exitButton.addActionListener(esto);
resetButton = new JButton("Restablecer");
resetButton.addActionListener(esto);
newButton = new JButton("Un juego más");
newButton.addActionListener(este);
panelsur.add(botón de salida);
panelsur.add(botónreset);
panelsur.add(nuevoBotón);
fracciónLable.setText(String.valueOf(Integer.parseInt(fracciónLable
.getText())));
panelnorte.add(fracciónLable);
mainFrame.setBounds(280, 100, 500, 450);
mainFrame.setVisible (verdadero);
}
construcción aleatoria pública vacía () {
int aleatorios, columnas, filas;
for (int gemelos = 1; gemelos <= 15; gemelos++) {
aleatorios = (int) (Math.random() * 25 + 1);
for (int iguales = 1; iguales <= 2; iguales ++) {
columnas = (int) (Math.random() * 6 + 1);
filas = (int) (Math.random() * 5 + 1);
while (cuadrícula[cols][filas]!= 0) {
columnas = (int) (Math.random() * 6 + 1);
filas = (int) (Math.random() * 5 + 1);
}
this.grid[cols][filas] = aleatorios;
}
}
}
fracción nula pública() {
fracciónLable.setText(String.valueOf(Integer.parseInt(fracciónLable
.getText()) + 100));
}
recarga pública vacía () {
int guardar[] = nuevo int[30];
int n = 0, columnas, filas;
int cuadrícula[][] = nuevo int[8][7];
para (int i = 0; i <= 6; i++) {
para (int j = 0; j <= 5; j++) {
si (this.grid[i][j]!= 0) {
guardar[n] = this.grid[i][j];
n++;
}
}
}
norte = norte - 1;
this.grid = cuadrícula;
mientras (n >= 0) {
columnas = (int) (Math.random() * 6 + 1);
filas = (int) (Math.random() * 5 + 1);
while (cuadrícula[cols][filas]!= 0) {
columnas = (int) (Math.random() * 6 + 1);
filas = (int) (Math.random() * 5 + 1);
}
this.grid[cols][filas] = guardar[n];
norte--;
}
mainFrame.setVisible (falso);
pressInformation = false // La información del clic en el botón debe clasificarse como inicial aquí.
inicio();
para (int i = 0; i < 6; i++) {
para (int j = 0; j < 5; j++) {
si (cuadrícula[i + 1][j + 1] == 0)
botón de diamantes[i][j].setVisible(false);
}
}
}
estimación de vacío públicoEven(int placeX, int placeY, JButton bz) {
if (pressInformation == falso) {
x = lugarX;
y = lugarY;
segundo mensaje = grid[x][y];
segundoBotón = bz;
prensaInformación = verdadero;
} demás {
x0 = x;
y0 = y;
primer mensaje = segundo mensaje;
primerBotón = segundoBotón;
x = lugarX;
y = lugarY;
segundo mensaje = grid[x][y];
segundoBotón = bz;
if (fristMsg == segundoMsg && segundoBotón!= primerBotón) {
Xiao();
}
}
}
public void xiao() { // ¿Se puede eliminar en la misma situación? Analizar detenidamente sin comentar uno por uno
si ((x0 == x && (y0 == y + 1 || y0 == y - 1))
|| ((x0 == x + 1 || x0 == x - 1) && (y0 == y))) { // Determinar si son adyacentes
eliminar();
} demás {
para (j = 0; j < 7; j++) {
if (grid[x0][j] == 0) { // Determina qué botón al lado del primer botón está vacío
if (y > j) { // Si la coordenada Y del segundo botón es mayor que la coordenada Y del botón vacío, significa que el primer botón está a la izquierda del segundo botón
for (i = y - 1; i >= j; i--) { // Determina si hay botones desde el lado izquierdo del segundo botón hasta el centro del primer botón
si (cuadrícula[x][i] != 0) {
k = 0;
romper;
} demás {
k = 1;
} // K=1 indica que se ha pasado la primera verificación
}
si (k == 1) {
linePassOne();
}
}
if (y < j) { // Si la coordenada Y del segundo botón es menor que la coordenada Y del botón vacío, significa que el primer botón está a la derecha del segundo botón
for (i = y + 1; i <= j; i++) { // Determinar si hay botones desde el lado izquierdo del segundo botón hasta el centro del primer botón
si (cuadrícula[x][i] != 0) {
k = 0;
romper;
} demás {
k = 1;
}
}
si (k == 1) {
linePassOne();
}
}
si (y == j) {
linePassOne();
}
}
si (k == 2) {
si (x0 == x) {
eliminar();
}
si (x0 < x) {
para (n = x0; n <= x - 1; n++) {
si (cuadrícula[n][j]!= 0) {
k = 0;
romper;
}
si (cuadrícula[n][j] == 0 && n == x - 1) {
eliminar();
}
}
}
si (x0 > x) {
para (n = x0; n >= x + 1; n--) {
si (cuadrícula[n][j]!= 0) {
k = 0;
romper;
}
si (cuadrícula[n][j] == 0 && n == x + 1) {
eliminar();
}
}
}
}
}
for (i = 0; i < 8; i++) { // columna
si (cuadrícula[i][y0] == 0) {
si (x > i) {
para (j = x - 1; j >= i; j--) {
si (cuadrícula[j][y] != 0) {
k = 0;
romper;
} demás {
k = 1;
}
}
si (k == 1) {
filaPassOne();
}
}
si (x <yo) {
para (j = x + 1; j <= i; j++) {
si (cuadrícula[j][y] != 0) {
k = 0;
romper;
} demás {
k = 1;
}
}
si (k == 1) {
filaPassOne();
}
}
si (x == yo) {
filaPassOne();
}
}
si (k == 2) {
si (y0 == y) {
eliminar();
}
si (y0 < y) {
para (n = y0; n <= y - 1; n++) {
si (cuadrícula[i][n] != 0) {
k = 0;
romper;
}
if (cuadrícula[i][n] == 0 && n == y - 1) {
eliminar();
}
}
}
si (y0 > y) {
para (n = y0; n >= y + 1; n--) {
si (cuadrícula[i][n] != 0) {
k = 0;
romper;
}
if (cuadrícula[i][n] == 0 && n == y + 1) {
eliminar();
}
}
}
}
}
}
}
línea pública vacíaPassOne() {
if (y0 > j) { // El primer botón está a la izquierda con el botón vacío
for (i = y0 - 1; i >= j; i--) { // Determinar si hay un botón entre el primer botón y el botón vacío a la izquierda
si (cuadrícula[x0][i] != 0) {
k = 0;
romper;
} demás {
k = 2;
} // K=2 indica que se ha pasado la segunda verificación
}
}
if (y0 < j) { // El primer botón está entre el botón vacío y el segundo botón
para (i = y0 + 1; i <= j; i++) {
si (cuadrícula[x0][i]!= 0) {
k = 0;
romper;
} demás {
k = 2;
}
}
}
}
public void filaPassOne() {
si (x0 > i) {
para (j = x0 - 1; j >= i; j--) {
si (cuadrícula[j][y0] != 0) {
k = 0;
romper;
} demás {
k = 2;
}
}
}
si (x0 <yo) {
para (j = x0 + 1; j <= i; j++) {
si (cuadrícula[j][y0] != 0) {
k = 0;
romper;
} demás {
k = 2;
}
}
}
}
eliminación de vacío público() {
primerButton.setVisible(falso);
segundoButton.setVisible(falso);
fracción();
prensaInformación = falso;
k = 0;
cuadrícula[x0][y0] = 0;
cuadrícula[x][y] = 0;
}
acción vacía pública realizada (ActionEvent e) {
if (e.getSource() == nuevoBotón) {
int cuadrícula[][] = nuevo int[8][7];
this.grid = cuadrícula;
construcción aleatoria();
mainFrame.setVisible (falso);
prensaInformación = falso;
inicio();
}
si (e.getSource() == botón de salida)
Sistema.salir(0);
si (e.getSource() == resetButton)
recargar();
para (int columnas = 0; columnas < 6; columnas ++) {
para (int filas = 0; filas < 5; filas++) {
if (e.getSource() == botóndiamantes[cols][filas])
estimaciónEven(columnas + 1, filas + 1, botóndiamantes[columnas][filas]);
}
}
}
público estático vacío principal (String [] argumentos) {
Juego Principal mg = nuevo Juego Principal();
mg.randomBuild();
mg.init();
}
}
Espero que este artículo sea útil para la programación Java de todos.