博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数独 JAVA实现
阅读量:4614 次
发布时间:2019-06-09

本文共 6086 字,大约阅读时间需要 20 分钟。

数独游戏的规则从很久之前就知道,但是一直都没怎么玩过,然后到了大学,大一下学期自己学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

 

转载于:https://www.cnblogs.com/Tree-dream/p/6051858.html

你可能感兴趣的文章
通过AI识图判断图片是否为小票
查看>>
微信开发者工具常用快捷键
查看>>
Linux——静态库和动态库的生成
查看>>
Ulfius交叉编译——搭建http服务器端
查看>>
Linux——进度条实现
查看>>
Linux——定时器与计时器
查看>>
Linux——makefile编写
查看>>
vi/vim使用
查看>>
C/C++——指针
查看>>
讨论Spring整合Mybatis时一级缓存失效得问题
查看>>
Maven私服配置Setting和Pom文件
查看>>
Linux搭建Nexus3.X构建maven私服
查看>>
Notepad++使用NppFTP插件编辑linux上的文件
查看>>
NPOI 操作Excel
查看>>
MySql【Error笔记】
查看>>
vue入门
查看>>
JS线程Web worker
查看>>
Navicat 批处理 自动备份数据库
查看>>
Flex的动画效果与变换!(三)(完)
查看>>
mysql常见错误码
查看>>