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
  • 相关阅读:
    Java实现 蓝桥杯VIP 算法训练 传球游戏
    Java实现 蓝桥杯VIP 算法训练 Hanoi问题
    Java实现 蓝桥杯VIP 算法训练 蜜蜂飞舞
    Java实现 蓝桥杯VIP 算法训练 奇偶判断
    Java实现 蓝桥杯VIP 算法训练 传球游戏
    Java实现 蓝桥杯VIP 算法训练 Hanoi问题
    Java实现 蓝桥杯VIP 算法训练 Hanoi问题
    Java实现 蓝桥杯VIP 算法训练 蜜蜂飞舞
    Java实现 蓝桥杯VIP 算法训练 蜜蜂飞舞
    Qt: 访问容器(三种方法,加上for循环就四种了)good
  • 原文地址:https://www.cnblogs.com/Tree-dream/p/6051858.html
Copyright © 2011-2022 走看看