Les exemples de cet article partagent le code spécifique du jeu Java Sudoku pour votre référence. Le contenu spécifique est le suivant
J'ai l'intention d'installer les composants requis par Javafx et d'utiliser directement Javafx, mais il semble que la version d'Eclipse soit erronée et ne peut pas être utilisée même après l'installation ...
Le code Sudoku a été écrit pendant les vacances d'hiver. J'ai appris Java pendant un mois. Cela semble être un peu insuffisant maintenant, mais c'est le premier programme après tout, donc je l'ai mis directement dessus. La mise en œuvre du disque final de Sudoku utilise directement la violence et la complexité du temps est un peu élevée. Je suis trop paresseux pour le changer et met directement le code.
Implémentation du disque final:
import java.util.random; classe publique SudOKupuzzleGenerator {private random random = new random (); Final statique privé int max_call_random_array_times = 220; private int currentTimes = 0; public int [] [] generatePuzzleMatrix () {int [] [] randomatrix = new int [9] [9]; pour (int row = 0; row <9; row ++) {if (row == 0) {currentTimes = 0; randomatrix [row] = buildRandomArray (); } else {int [] temprandomArray = buildRandomArray (); pour (int col = 0; col <9; col ++) {if (currentTimes <max_call_random_array_times) {if (! iscandidatenmbfound (randomatrix, temprandomarray, row, coli)) {resetValuesInrowtoZero (Randomatrix, row); ligne - = 1; col = 8; TempRandomArray = BuildRandomArray (); }} else {row = -1; col = 8; ResetValuestozeros (RandomMatrix); currentTimes = 0; }}} return randomatrix; } private void resetValuesInrowtoZero (int [] [] matrice, int row) {for (int j = 0; j <9; j ++) {matrix [row] [j] = 0; }} private void resetValuestoZeros (int [] [] matrix) {for (int row = 0; row <9; row ++) {for (int col = 0; col <9; col ++) {matrice [row] [col] = 0; }}} private booléen iscandidatenmbfound (int [] [] randomatrix, int [] randomArray, int row, int col) {for (int i = 0; i <9; i ++) {randomatrix [row] [col] = randomArray [i]; if (noconflict (randomatrix, row, col)) {return true; }} return false; } private boolean noconflict (int [] [] CandidateMatrix, int row, int col) {return noconflictinrow (Candidatematrix, row, col) && noconflictincumn (CandidateMatrix, Col); } private boolean noconflictinrow (int [] [] candidatematrix, int row, int col) {int currentValue = candidateMatrix [row] [col]; pour (int colnum = 0; colnum <col; colnum ++) {if (currentValue == CandidateMatrix [row] [colnum]) {return false; }} return true; } private boolean noconflictincumn (int [] [] candidatematrix, int row, int col) {int currentValue = candidateMatrix [row] [col]; pour (int rownum = 0; rownum <row; rownum ++) {if (currentValue == CandidateMatrix [rownum] [col]) {return false; }} return true; } private boolean noConflictinBlock (int [] [] candidatematrix, int row, int col) {int baserow = row / 3 * 3; int basecol = col / 3 * 3; pour (int rownum = 0; rownum <8; rownum ++) {if (CandidateMatrix [Baserow + Rownum / 3] [BaseCol + Rownum% 3] == 0) {continue; } pour (int colnum = rownum + 1; colnum <9; colnum ++) {if (Candidatematrix [Baserow + Rownum / 3] [BaseCol + Rownum% 3] == CandidateMatrix [Baserow + Colnum / 3] [Basecol + Colnum% 3]) {return false; }}} return true; } private int [] buildRandomArray () {currentTimes ++; int [] array = new int [] {1, 2, 3, 4, 5, 6, 7, 8, 9}; int randomnt = 0; pour (int i = 0; i <20; i ++) {randomnt = random.nextint (8) + 1; int temp = array [0]; array [0] = array [randomnt]; Array [randomnt] = temp; } Return Array; } public int getCurrentTimes () {return currentTimes; } public void setCurrentTimes (int currentTimes) {this.currentTimes = currentTimes; }} Interface et jugement:
Écrit avec swing
importer javax.swing. *; import java.awt. *; import java.awt.event. *; import java.util.random; La classe publique Shud étend JFrame {private static final long SerialVersionUID = 5952689219411916553l; // Serialize Field Private Static Jtextfield a [] [] = new JTextField [9] [9]; // Stockage Les nombres dans la zone de texte statique Int ANS [] [] = new int [9] [9]; // Stockage du tableau d'entrée à deux chiffres SudokupuzzleGenerator Exemple = new SudokupuzzleGenerator (); public int droit [] [] = example.generatePuzzleMatrix (); public int droits [] []; private int [] [] wk (int a [] []) {// Random random rydden r = new random (); int a1, a2; a1 = r.Nextint (9); A2 = R.Nextint (9); pour (int i = 0; i <100; i ++) {a [a1] [a2] = 0; a1 = r.Nextint (9); A2 = R.Nextint (9); } return a; } public shud () {conteneur c = getContentPane (); C.SetLayout (New BorderLayout (2, 1)); // Disposition de la bordure JMenUitem JMIOK = new JMenuItem ("Soumider"); // Définir le menu jMenuItem JMIEXPLAIN = new JMenuItem ("Détails"); JMenuItem jMiMessage = new JMenuItem ("Information"); Jpanel Panel = new JPanel (); // définir un panneau de conteneur.add (JMIOK); // affiche le menu dans le panneau de conteneur.add (JMIEXPLAIN); PANNEL.ADD (JMIMESSAGE); Jpanel p1 = nouveau jpanel (nouveau gridlayout (9, 9, 5, 5)); // Définissez la disposition de la grille de 9 lignes et 9 colonnes ajouter (panneau, borderLayout.north); // Placez le menu au nord ADD (P1, BorderLayout.Center); // Place les nombres dans le moyen droit des droites = wk (à droite); for (int k = 0; k <9; k ++) {for (int n = 0; n <9; n ++) {if (rightans [k] [n]! = 0) {a [k] [n] = new JTextField ("" + rightans [k] [n]); a [k] [n] .sethorizontalalignment (jTextfield.Center); // Centre le nombre horizontalement a [k] [n] .setEdIT (false); // affiche uniquement P1.Add non modifié (a [k] [n]); // Ajouter une zone de texte} else {a [k] [n] = new JTextField (); a [k] [n] .sethorizontalalignment (jTextfield.center); p1.add (a [k] [n]); }} add (p1); // Affiche le panneau numérique dans le conteneur jmiok.addactionListener (new ActionListener () {// Créer un écouteur d'événement anonyme public void ActionperFormed (ActionEvent e) {if (getText () == 1) {if (juge () == true) {jOptionPane.showMessageDialog (null, "Votre réponse est Droite! "," Result ", joptionpane.information_message);} else {joptionpane.showMessagealiog (null," Votre réponse est correcte! "," Result ", joptionpane.information_message);} else {jOptionPane.showMessageDialog (null," votre réponse est Mauvais! "," résultat ", joptionpane.information_message);}}}}}); EXPLILSERNERCLASS LUVERNER2 = NOUVEAU EXPLESSENERCLASS (); JMIEXPLAIN.ADDACTIONLISTERNER (LUVERNER2); MessageListEnerClass Louger3 = new MessageListEnerClass (); JmiMessage.AddactionListener (auditeur3); } static int getText () // Obtenez le texte de la zone de texte {int i, j; pour (i = 0; i <9; i ++) {pour (j = 0; j <9; j ++) {ans [i] [j] = 0; }} pour (int k = 0; k <9; k ++) {for (int n = 0; n <9; n ++) {try // exception manieling {ans [k] [n] = integer.parseint (a [k] [n] .getText ()); // convertir le type de réponse en ANS} Catch (NumberFormatexception nfe) {joptionpane.showMessageDialog (null, "inclure les non-nombres dans les données, veuillez vous réintégrer"); retour 0; }}} return 1; } Public Static Boolean Judge () // juge si la réponse en entrée est correcte {int i, j, k; int [] [] Réponse = Ans; pour (i = 0; i <9; i ++) {if (j (réponse [i]) == false) // juger s'il y a des nombres en double dans chaque colonne return false; } pour (j = 0; j <9; j ++) // juger s'il y a des nombres en double dans chaque ligne {int [] newanswercolumn = new int [9]; pour (i = 0; i <9; i ++) {newanswercolomn [i] = réponse [i] [j]; } if (j (newanswercolumn) == false) return false; } pour (i = 0; i <3; i ++) // juger s'il y a des nombres en double dans chaque neuvième grille {pour (j = 0; j <3; j ++) {k = 0; int [] newanswer = new int [9]; for (int m = i * 3; m <i * 3 + 3; m ++) {for (int n = j * 3; n <j * 3 + 3; n ++) {newanswer [k] = réponse [m] [n]; k ++; }} if (juge9 (newanswer) == false) {return false; }} return true; } Public Static boolean juge9 (int [] réponse) {int i, j; pour (i = 0; i <9; i ++) {pour (j = 0; j <9; j ++) {if (i == j) continuer; if (réponse [i] == Réponse [j]) // s'il y a des nombres en double, return false {return false; }}} return true; // pas de nombres en double, return true} public static void main (String [] args) {jFrame frame = new shud (); frame.setTitle ("Suduku"); frame.SetSize (600 900); frame.setLocationRelaTIVETO (null); frame.setDefaultCloseOperation (jframe.exit_on_close); frame.setVisible (true); }} classe ExplicationListeClass implémente ActionListener {// Event AvernerPublic void ActionperFormed (ActionEvent E) {joptionpane.showMessageDialog (null, "Remplacez les nombres pour s'assurer qu'il n'y a pas de duplication de nombres dans chaque ligne, chaque colonne et chaque petit Nine-Grid", "Expliquer", JOPTIONPANE.Information_Message); }} class MessageListEnerClass implémente ActionListener {public void ActionPerformed (ActionEvent e) {joptionpane.showMessageDialog (null, "Made by wyx", "message", joptionpane.information_message); }}Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.