zoukankan      html  css  js  c++  java
  • 数独 JAVA实现

    数独游戏的规则从很久之前就知道,但是一直都没怎么玩过,然后到了大学,大一下学期自己学dfs的时候,刚刚好碰到了一个数独的题目,做出来后,感觉还是挺有成就感的

    然后大二学了JAVA,看了下那个一些有关于界面的一些函数的使用这些,就写出来一个比较粗糙的数独游戏,这个游戏我打算一直维护更新,直到我大学毕业,看看最后可以变成什么样子

    1 public class Main {
    2     public static void main(String[] args) {
    3         gra f = new gra("数独",400,400,400,400);
    4     }
    5 }
      1 package sodu;
      2 import java.io.*;
      3 import java.util.*;
      4 import java.math.*;
      5 import java.security.PrivateKey;
      6 import java.awt.*;
      7 import java.awt.event.ActionEvent;
      8 import java.awt.event.ActionListener;
      9 
     10 import javax.security.auth.login.CredentialExpiredException;
     11 import javax.security.cert.CertificateNotYetValidException;
     12 import javax.swing.*;
     13 import javax.swing.text.AbstractDocument.LeafElement;
     14 
     15 import org.omg.PortableServer.ServantLocator; 
     16 public class gra extends JFrame {
     17     Scanner cin = new Scanner(System.in);
     18     Random ran = new Random();
     19     JMenuBar mbar;
     20     JMenuItem ito,itt,its;
     21     JMenu menu;
     22     JTextField [][]tx = new JTextField [9][9];
     23     GridLayout gri;
     24     JPanel chess= new JPanel();;
     25     int[][] ans = new int[9][9];
     26     int []a = new  int [11];
     27     int [][]num = new int[9][9];
     28     int [][]fat = {
     29                 {8,7,1,9,3,2,6,4,5},
     30                 {4,9,5,8,6,1,2,3,7},
     31                 {6,3,2,7,5,4,8,1,9},
     32                 {5,2,8,4,7,3,1,9,6},
     33                 {9,1,3,6,2,5,7,8,4},
     34                 {7,6,4,1,9,8,3,5,2},
     35                 {2,8,7,3,4,9,5,6,1},
     36                 {1,4,6,5,8,7,9,2,3},
     37                 {3,5,9,2,1,6,4,7,8},
     38     };
     39     gra(){
     40     }
     41     gra(String name,int a,int b,int c,int d){
     42         ints(name);
     43         setLocation(a,b);
     44         setSize(c,d);
     45         setVisible(true);
     46         set();
     47         setDefaultCloseOperation(EXIT_ON_CLOSE);
     48     }
     49     void Show(){        
     50         chess.updateUI();
     51         chess.removeAll();
     52         gri = new GridLayout(9,9);
     53         for(int i = 0 ; i < 9 ; i++)
     54             for(int j = 0 ; j <9 ; j++){
     55                 String s = String.valueOf(num[i][j]);
     56                 int n = ran.nextInt(13);
     57                 if(n%4==0){
     58                     ans [i][j] = num [i][j];
     59                     JLabel text = new JLabel(s,JLabel.CENTER);
     60                     text.setForeground(Color.white);
     61                     chess.add(text);
     62                 }else{
     63                     tx[i][j] = new JTextField();
     64                     tx[i][j].setHorizontalAlignment(SwingConstants.CENTER);
     65                     chess.add(tx[i][j]);
     66                 }
     67             }
     68         chess.setLayout(gri);
     69         chess.setBackground(Color.DARK_GRAY);
     70         add(chess);    
     71     }
     72     void set(){
     73         ito.addActionListener(new ActionListener(){
     74             public void actionPerformed(ActionEvent e) {    
     75                 setVisible(false);
     76                 calc();
     77                 Show();
     78                 setVisible(true);
     79             }
     80         });
     81         itt.addActionListener(new ActionListener(){
     82             public void actionPerformed(ActionEvent e) {
     83                         judge();
     84             }
     85         });
     86         its.addActionListener(new ActionListener() {
     87             public void actionPerformed(ActionEvent e) {
     88                 setVisible(false);
     89             }
     90         });
     91         
     92     }
     93     void ints(String s){
     94         setTitle(s);
     95         mbar = new JMenuBar();
     96         menu = new JMenu("菜单");
     97         ito = new JMenuItem("开始");
     98         itt = new JMenuItem("提交");
     99         its = new JMenuItem("退出");
    100         menu.add(ito);
    101         menu.add(itt);
    102         menu.add(its);
    103         mbar.add(menu);
    104         setJMenuBar(mbar);
    105     }
    106     void calc(){
    107         boolean []b = new boolean[11];
    108         int i = 0;
    109         b[0] = true;
    110         while(i<9){
    111             int n = ran.nextInt(10);
    112             if(!b[n]) {
    113                 a[i++] = n;
    114                 b[ n ] = true;
    115             }
    116         }
    117         for(int k = 0 ; k < 9 ; k++)
    118             for(int m = 0 ; m < 9 ; m++)
    119                 for(int n = 0 ; n < 9 ; n++){
    120                     if(fat[m][n]==a[ k ] && k != 8){
    121                         num[m][n] = a[k+1];
    122                     }else if(fat[m][n]==a[k]&&k == 8){
    123                         num[m][n] = a[0];
    124                     }
    125                 }
    126     void judge(){
    127         int falg = 0;
    128         for(int i = 0 ; i < 9 ; i++)
    129             for(int j = 0 ; j < 9 ; j++){
    130                 if(ans[i][j] == 0) {
    131                     int tmp = Integer.valueOf(tx[i][j].getText());
    132                     ans[i][j] = tmp;
    133                 }
    134             }
    135         for(int i = 0 ; i < 9 ; i++){
    136             boolean[]h = new boolean[10];
    137             boolean[]s = new boolean[10];
    138             for(int j = 0 ; j < 9 ; j++){
    139                 if(!h[ans[i][j]]&&!s[ans[i][j]]){
    140                     h[ans[i][j]] = true;
    141                     s[ans[i][j]] = true;
    142                 }else {
    143                     falg = 1;
    144                     break;
    145                 }
    146             }
    147             if(falg == 1) break;
    148         }
    149         if(falg == 1) {
    150             JFrame a = new JFrame("错误");
    151             JTextField text = new JTextField("你的答案错了");
    152             text.setHorizontalAlignment(SwingConstants.CENTER);
    153             a.add(text);
    154             a.setSize(200,200);
    155             a.setLocation(500,500);
    156             a.setVisible(true);
    157         }else{
    158             JFrame a = new JFrame("成功");
    159             JTextField text = new JTextField("你的答案正确");
    160             text.setHorizontalAlignment(SwingConstants.CENTER);
    161             text.setForeground(Color.red);
    162             a.add(text);
    163             a.setSize(200,200);
    164             a.setLocation(500,500);
    165             a.setVisible(true);
    166         }
    167     }
    168 }
    169     
    gra
  • 相关阅读:
    redis持久化RDB和AOF
    线程同步的几种方法
    JRE和JDK的区别
    Spring-两种配置容器
    为什么String类是不可变的?
    Oracle 每五千条执行一次的sql语句
    Executor , ExecutorService 和 Executors
    常见框架单例、多例与线程安全性总结
    mysql 的S 锁和X锁的区别
    linux下使用shell脚本自动化部署项目
  • 原文地址:https://www.cnblogs.com/Tree-dream/p/6051858.html
Copyright © 2011-2022 走看看