L'exemple de cet article décrit l'implémentation du code Lianliankan basé sur Java basé sur swing. Partagez-le avec tout le monde pour votre référence.
Les principaux codes de fonction sont les suivants :
Copiez le code comme suit :
paquet Ilkan ;
importer javax.swing.* ;
importer java.awt.* ;
importer java.awt.event.* ;
/**
* Jeu Lianliankan
* @auteur Administrateur
*17 octobre 2014
*/
classe publique MainGame implémente ActionListener {
JFrame mainFrame; // Panneau principal
Conteneur thisContainer ;
JPanel centerPanel, SouthPanel, northPanel ; // sous-panneau
JButton DiamondsButton[][] = new JButton[6][5];//Tableau de boutons de jeu
JButton exitButton, resetButton, newButton; //Boutons de sortie, de réinitialisation et de redémarrage
JLabel fractionLable = new JLabel("0"); // Étiquette de fraction
JButton firstButton, secondButton; // Enregistre les boutons sélectionnés respectivement deux fois
int grid[][] = new int[8][7];//Enregistrer la position du bouton de jeu
static boolean pressInformation = false; // Détermine si un bouton est sélectionné
int x0 = 0, y0 = 0, x = 0, y = 0, firstMsg = 0, secondMsg = 0, validateLV // Coordonnées de position du bouton de jeu
int i, j, k, n; // Contrôle de la méthode d'élimination
public void init() {
mainFrame = new JFrame("Jeu Lianliankan");
thisContainer = mainFrame.getContentPane();
thisContainer.setLayout(new BorderLayout());
centerPanel = new JPanel();
SouthPanel = new JPanel();
northPanel = new JPanel();
thisContainer.add(centerPanel, "Centre");
thisContainer.add(southPanel, "Sud");
thisContainer.add(northPanel, "Nord");
centerPanel.setLayout(nouveau GridLayout(6, 5));
pour (int cols = 0 ; cols < 6 ; cols++) {
pour (int lignes = 0 ; lignes < 5 ; lignes++) {
diamantsButton[cols][lignes] = nouveau JButton(
String.valueOf(grid[cols + 1][rows + 1]));
diamantsButton[cols][rows].addActionListener(this);
centerPanel.add(diamondsButton[cols][rows]);
}
}
exitButton = new JButton("Quitter");
exitButton.addActionListener(this);
resetButton = new JButton("Réinitialiser");
resetButton.addActionListener(this);
newButton = new JButton("Encore un jeu");
newButton.addActionListener(this);
SouthPanel.add(exitButton);
SouthPanel.add(resetButton);
SouthPanel.add (newlyButton);
fractionLable.setText(String.valueOf(Integer.parseInt(fractionLable
.getText())));
northPanel.add(fractionLable);
mainFrame.setBounds(280, 100, 500, 450);
mainFrame.setVisible(true);
}
public void randomBuild() {
int randoms, colonnes, lignes ;
pour (int jumeaux = 1 ; jumeaux <= 15 ; jumeaux++) {
randoms = (int) (Math.random() * 25 + 1);
pour (int pareil = 1; pareil <= 2; pareil++) {
cols = (int) (Math.random() * 6 + 1);
lignes = (int) (Math.random() * 5 + 1);
while (grille[cols][lignes] != 0) {
cols = (int) (Math.random() * 6 + 1);
lignes = (int) (Math.random() * 5 + 1);
}
this.grid[cols][rows] = randoms ;
}
}
}
fraction publique vide() {
fractionLable.setText(String.valueOf(Integer.parseInt(fractionLable
.getText()) + 100));
}
rechargement public void() {
int save[] = nouveau int[30];
int n = 0, colonnes, lignes ;
int grille[][] = nouveau int[8][7];
pour (int je = 0; je <= 6; i++) {
pour (int j = 0; j <= 5; j++) {
si (this.grid[i][j] != 0) {
save[n] = this.grid[i][j];
n++ ;
}
}
}
n = n - 1 ;
this.grid = grille ;
tandis que (n >= 0) {
cols = (int) (Math.random() * 6 + 1);
lignes = (int) (Math.random() * 5 + 1);
while (grille[cols][lignes] != 0) {
cols = (int) (Math.random() * 6 + 1);
lignes = (int) (Math.random() * 5 + 1);
}
this.grid[cols][rows] = save[n];
n--;
}
mainFrame.setVisible(false);
pressInformation = false; // Les informations sur le clic sur le bouton doivent être classées comme initiales ici
init();
pour (int je = 0; je < 6; i++) {
pour (int j = 0; j < 5; j++) {
si (grille[i + 1][j + 1] == 0)
diamantsButton[i][j].setVisible(false);
}
}
}
public voidestimateEven(int placeX, int placeY, JButton bz) {
if (pressInformation == false) {
x = lieuX ;
y = lieuY ;
secondMsg = grille[x][y];
secondButton = bz;
presseInformation = vrai ;
} autre {
x0 = x;
y0 = y;
premierMsg = secondMsg;
firstButton = secondButton;
x = lieuX ;
y = lieuY ;
secondMsg = grille[x][y];
secondButton = bz;
if (fristMsg == secondMsg && secondButton != firstButton) {
Xiao();
}
}
}
public void xiao() { // Peut-il être éliminé dans la même situation ? Analysez attentivement sans commenter un par un
si ((x0 == x && (y0 == y + 1 || y0 == y - 1))
|| ((x0 == x + 1 || x0 == x - 1) && (y0 == y))) { // Détermine s'ils sont adjacents
retirer();
} autre {
pour (j = 0; j < 7; j++) {
if (grid[x0][j] == 0) { // Détermine quel bouton à côté du premier bouton est vide
if (y > j) { // Si la coordonnée Y du deuxième bouton est supérieure à la coordonnée Y du bouton vide, cela signifie que le premier bouton est à gauche du deuxième bouton
for (i = y - 1; i >= j; i--) { // Détermine s'il y a des boutons du côté gauche du deuxième bouton jusqu'au milieu du premier bouton
si (grille[x][i] != 0) {
k = 0 ;
casser;
} autre {
k = 1 ;
} // K=1 indique que la première vérification a été réussie
}
si (k == 1) {
linePassOne();
}
}
if (y < j) { // Si la coordonnée Y du deuxième bouton est inférieure à la coordonnée Y du bouton vide, cela signifie que le premier bouton est à droite du deuxième bouton
for (i = y + 1; i <= j; i++) { // Détermine s'il y a des boutons du côté gauche du deuxième bouton jusqu'au milieu du premier bouton
si (grille[x][i] != 0) {
k = 0 ;
casser;
} autre {
k = 1 ;
}
}
si (k == 1) {
linePassOne();
}
}
si (y == j) {
linePassOne();
}
}
si (k == 2) {
si (x0 == x) {
retirer();
}
si (x0 < x) {
pour (n = x0; n <= x - 1; n++) {
si (grille[n][j] != 0) {
k = 0 ;
casser;
}
if (grid[n][j] == 0 && n == x - 1) {
retirer();
}
}
}
si (x0 > x) {
pour (n = x0; n >= x + 1; n--) {
si (grille[n][j] != 0) {
k = 0 ;
casser;
}
if (grid[n][j] == 0 && n == x + 1) {
retirer();
}
}
}
}
}
pour (i = 0; i < 8; i++) { // colonne
si (grille[i][y0] == 0) {
si (x > je) {
pour (j = x - 1; j >= i; j--) {
si (grille[j][y] != 0) {
k = 0 ;
casser;
} autre {
k = 1 ;
}
}
si (k == 1) {
rowPassOne();
}
}
si (x < je) {
pour (j = x + 1; j <= i; j++) {
si (grille[j][y] != 0) {
k = 0 ;
casser;
} autre {
k = 1 ;
}
}
si (k == 1) {
rowPassOne();
}
}
si (x == je) {
rowPassOne();
}
}
si (k == 2) {
si (y0 == y) {
retirer();
}
si (y0 < y) {
pour (n = y0; n <= y - 1; n++) {
si (grille[i][n] != 0) {
k = 0 ;
casser;
}
if (grid[i][n] == 0 && n == y - 1) {
retirer();
}
}
}
si (y0 > y) {
pour (n = y0; n >= y + 1; n--) {
si (grille[i][n] != 0) {
k = 0 ;
casser;
}
if (grid[i][n] == 0 && n == y + 1) {
retirer();
}
}
}
}
}
}
}
public void linePassOne() {
if (y0 > j) { // Le premier bouton est à gauche avec le bouton vide
for (i = y0 - 1; i >= j; i--) { // Détermine s'il y a un bouton entre le premier bouton et le bouton vide à gauche
si (grille[x0][i] != 0) {
k = 0 ;
casser;
} autre {
k = 2 ;
} // K=2 indique que la deuxième vérification a été réussie
}
}
if (y0 < j) { // Le premier bouton est entre le bouton vide et le deuxième bouton
pour (i = y0 + 1; i <= j; i++) {
si (grille[x0][i] != 0) {
k = 0 ;
casser;
} autre {
k = 2 ;
}
}
}
}
public void rowPassOne() {
si (x0 > je) {
pour (j = x0 - 1; j >= i; j--) {
si (grille[j][y0] != 0) {
k = 0 ;
casser;
} autre {
k = 2 ;
}
}
}
si (x0 < je) {
pour (j = x0 + 1; j <= i; j++) {
si (grille[j][y0] != 0) {
k = 0 ;
casser;
} autre {
k = 2 ;
}
}
}
}
public void supprimer() {
firstButton.setVisible(false);
secondButton.setVisible(false);
fraction();
presseInformation = faux ;
k = 0 ;
grille[x0][y0] = 0;
grille[x][y] = 0;
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == newButton) {
int grille[][] = nouveau int[8][7];
this.grid = grille ;
randomBuild();
mainFrame.setVisible(false);
presseInformation = faux ;
init();
}
si (e.getSource() == exitButton)
Système.exit(0);
si (e.getSource() == resetButton)
recharger();
pour (int cols = 0 ; cols < 6 ; cols++) {
pour (int lignes = 0 ; lignes < 5 ; lignes++) {
if (e.getSource() == DiamondsButton[cols][rows])
estimateEven(cols + 1, rows + 1, DiamondsButton[cols][rows]);
}
}
}
public static void main (String[] arguments) {
MainGame mg = nouveau MainGame();
mg.randomBuild();
mg.init();
}
}
J'espère que cet article sera utile à la programmation Java de chacun.