激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - java數獨游戲完整版分享

java數獨游戲完整版分享

2021-03-07 12:13lideguo1979 Java教程

這篇文章主要為大家分享了java數獨游戲的完整版,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了java數獨游戲的具體代碼,供大家參考,具體內容如下

自己寫的數獨游戲,共9關,代碼如下:

1、DoShudu類用于產生數獨數組

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
import java.util.Random;
 
public class DoShudu {
 
 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
 
   
  int[][] cells=newshudu();
   
  //cells=changeShu(cells,9);
  for(int k=0;k<9;k++){
   for(int i=0;i<9;i++){
   System.out.print(cells[k][i]);
   }
   System.out.println();
  }
 }
  
  
 public static int[][] newshudu(){
   
  int[][] cells=new int[][]{
     
    {1,2,3,4,5,6,7,8,9},
    {4,5,6,7,8,9,1,2,3},
    {7,8,9,1,2,3,4,5,6},
    {2,3,1,5,6,4,8,9,7},
    {5,6,4,8,9,7,2,3,1},
    {8,9,7,2,3,1,5,6,4},
    {3,1,2,6,4,5,9,7,8},
    {6,4,5,9,7,8,3,1,2},
    {9,7,8,3,1,2,6,4,5}
     
  };
   
   
   
  int countH=new Random().nextInt(10);
  for(int k=0;k<countH;k++){
   cells=lineTolie(cells);
   
  }
   
  int count=0;
  for(int k=0;k<12;k++){
   count=new Random().nextInt(9);
   cells=changeLine(cells,count);
   
  }
   
  int countH2=new Random().nextInt(10);
  for(int k=0;k<countH2;k++){
   cells=lineTolie(cells);
   
  }
  return cells;
 }
  
 public static int [][] changeLine(int[][] cells,int m){//行與行交換
  int n=m;
  int [] temp=new int[9];
  n=((m+3)>=9)?(m+3-9):m+3;
   for(int j=0;j<9;j++){
    temp[j]=cells[m][j];
    cells[m][j]=cells[n][j];
    cells[n][j]=temp[j];
    
  }
  return cells;
   
 }
  
 
 public static int[][] lineTolie(int[][] cells){//行與列互換
   
  int temp=0;
  for(int j=0;j<9;j++){
    for(int k=j+1;k<9;k++){
     temp=cells[k][j];
     cells[k][j]=cells[j][k];
     cells[j][k]=temp;
 
    }
  }
  return cells;
   
   
 }
 
}

2、界面運行類

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
import java.awt.Button;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.Point;
import java.awt.TextField;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import java.awt.event.TextEvent;
import java.awt.event.TextListener;
import java.util.Random;
 
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
 
import com.sun.awt.AWTUtilities;
 
public class Sudoku extends JFrame {
 
 final private TextField[][] txtGame;
 
 static int num=20;//空白格數量
 static int guan=5;//關卡數量
 static int add=5;//沒關過后增加的空白格數量
 public static void main(String[] args) {
  Sudoku shudu = new Sudoku();
 
 }
 
 public Sudoku() {// 對JFrame進行布局初始以及監聽設置
  txtGame = new TextField[9][9];// 建立81個TextField對象
  DoShudu shudu = new DoShudu();
  int[][] cells = shudu.getShudu();// 獲取數獨數組
  final JPanel jpl = new JPanel();// 建立JPanel對象
  final int spaceNum = num;// spaceNum表示需要設置空白TextField的數量
  jpl.setLayout(new GridLayout(9, 9));// JPanel布局
  final int[][] cellAn = new int[9][9];// 數獨數組的答案
  System.arraycopy(cells, 0, cellAn, 0, cells.length);// 答案從建立的數獨數組中Copy
  for (int i = 0; i < 9; i++) {// 把答案從Console打印出來
 
   for (int j = 0; j < 9; j++) {
    System.out.print(cellAn[i][j]);
   }
   System.out.println();
  } // 打印結束
  this.setDefaultCloseOperation(this.EXIT_ON_CLOSE);
  this.setSize(600, 600);
  this.setResizable(false);
  this.setTitle("黑馬-李德國-數獨游戲 9關");
 
  for (int i = 0; i < 9; i++) {
 
   for (int j = 0; j < 9; j++) {
 
    txtGame[i][j] = new TextField();
 
    // 設置TextField背景顏色
 
    if ((i < 3 && j < 3) || (i < 6 && i >= 3 && j >= 3 && j < 6)
      || (i < 9 && i >= 6 && j >= 6 && j < 9)) {
     txtGame[i][j].setBackground(Color.ORANGE);
 
    }
    if ((i < 6 && i >= 3 && j < 3) || (i < 3 && j >= 6 && j < 9)
      || (i < 9 && i >= 6 && j >= 3 && j < 6)) {
     txtGame[i][j].setBackground(Color.GREEN);
    }
 
    if ((i < 9 && i >= 6 && j < 3) || (i < 3 && j >= 3 && j < 6)
      || (i < 6 && i >= 3 && j < 9 && j >= 6)) {
     txtGame[i][j].setBackground(Color.PINK);
    }
 
    txtGame[i][j].setFont(new Font("Dialog", Font.CENTER_BASELINE,
      60));// 設置字體大小
    txtGame[i][j].setText(Integer.toString(cells[i][j]));
    txtGame[i][j].setEnabled(false);
    txtGame[i][j].setVisible(true);
    jpl.add(txtGame[i][j]);
    jpl.setVisible(true);
   }
 
  }
 
  final int[][] tempArray = new int[spaceNum][2];
 
  final JFrame jfm = new JFrame("選擇數字");
  // 取消JFrame title
  jfm.setUndecorated(true);
 
  // 增加JFrame拖拽功能
  final Point origin = new Point();
  jfm.addMouseListener(new MouseAdapter() {
   public void mousePressed(MouseEvent e) {
    origin.x = e.getX();
    origin.y = e.getY();
   }
  });
  jfm.addMouseMotionListener(new MouseMotionAdapter() {
   public void mouseDragged(MouseEvent e) {
    Point p = jfm.getLocation();
    jfm.setLocation(p.x + e.getX() - origin.x, p.y + e.getY()
      - origin.y);
   }
  });
 
  // 設置JFrame為半透明
  AWTUtilities.setWindowOpacity(jfm, 0.7f);
 
  final JPanel jpnl = new JPanel(new GridLayout(3, 3));
 
  jfm.setLayout(null);
  jfm.setSize(190, 200);
  jfm.setResizable(false);
  jpnl.setBounds(0, 0, 190, 120);
 
  jfm.setResizable(false);
 
  for (int i = 0; i < spaceNum; i++) {// 依據需要空白的TextField數量,隨機對TextField設置為空
 
   final int ranD1 = new Random().nextInt(9);
   final int ranD2 = new Random().nextInt(9);
   tempArray[i][0] = ranD1;
   tempArray[i][1] = ranD2;
   txtGame[ranD1][ranD2].setText("");
 
   if ((ranD1 < 3 && ranD2 < 3)
     || (ranD1 < 6 && ranD1 >= 3 && ranD2 >= 3 && ranD2 < 6)
     || (ranD1 < 9 && i >= 6 && ranD2 >= 6 && ranD2 < 9)) {
    txtGame[ranD1][ranD2].setBackground(Color.ORANGE);
 
   }
   if ((ranD1 < 6 && ranD1 >= 3 && ranD2 < 3)
     || (ranD1 < 3 && ranD2 >= 6 && ranD2 < 9)
     || (ranD1 < 9 && ranD1 >= 6 && ranD2 >= 3 && ranD2 < 6)) {
    txtGame[ranD1][ranD2].setBackground(Color.GREEN);
   }
 
   if ((ranD1 < 9 && ranD1 >= 6 && ranD2 < 3)
     || (ranD1 < 3 && ranD2 >= 3 && ranD2 < 6)
     || (ranD1 < 6 && ranD1 >= 3 && ranD2 < 9 && ranD2 >= 6)) {
    txtGame[ranD1][ranD2].setBackground(Color.PINK);
   }
 
   txtGame[ranD1][ranD2].addMouseListener(new MouseAdapter() {
 
    public void mouseClicked(MouseEvent mouseevent) {
 
     jfm.getContentPane().removeAll();// 移出了所有的組件
     jpnl.removeAll();
 
     for (int f = 0; f < 9; f++) {
 
      final Button btn = new Button((f + 1) + "");
      btn.setForeground(Color.RED);
      btn.setBackground(Color.WHITE);
      btn
        .setFont(new Font("Dialog",
          Font.CENTER_BASELINE, 30));
      btn.addMouseListener(new MouseAdapter() {
 
       @Override
       public void mouseClicked(MouseEvent e) {
        // TODO Auto-generated method stub
        txtGame[ranD1][ranD2].setText(btn.getLabel()
          + txtGame[ranD1][ranD2].getText());
 
       }
      });
 
      jpnl.add(btn);
     }
     Button btnDel = new Button(" 清 空 ");
     btnDel.setForeground(Color.WHITE);
     btnDel.setBackground(Color.RED);
     btnDel
       .setFont(new Font("Dialog", Font.CENTER_BASELINE,
         30));
     btnDel.setBounds(0, 120, 190, 50);
     btnDel.addMouseListener(new MouseAdapter() {
 
      @Override
      public void mouseClicked(MouseEvent e) {
       // TODO Auto-generated method stub
       txtGame[ranD1][ranD2].setText("");
 
      }
     });
 
     jfm.add(jpnl);
     jfm.add(btnDel);
     jfm.setVisible(true);
    }
   });
   txtGame[ranD1][ranD2].addTextListener(new TextListener() {// 對空白的TextField添加監聽,數值發生變化后進行答案對比,如果全部答對在Console打印“good”
      @Override
      public void textValueChanged(TextEvent e) {
       TextField tmp = (TextField) e.getSource();
       int count = 0;
       for (int u = 0; u < spaceNum; u++) {
        if ((txtGame[tempArray[u][0]][tempArray[u][1]]
          .getText())
          .equals(Integer
            .toString(cellAn[tempArray[u][0]][tempArray[u][1]]))) {
         count++;
        }
       }
       if (count == spaceNum) {
 
        jpl.removeAll();
        FlowLayout blt = new FlowLayout();
        jpl.setLayout(blt);
         
        if(num<=3){
         
        jpl.add(new JLabel("恭喜你過關"));
        Button btn = new Button("進入下一關");
 
        btn.addMouseListener(new MouseAdapter() {
 
         @Override
         public void mouseClicked(MouseEvent e) {
          // TODO Auto-generated method stub
          Sudoku.this.dispose();
          jfm.dispose();
          num=num+add;
          new Sudoku();
         }
        });
         
        jpl.add(btn);
        }
        else{
         jpl.add(new JLabel("恭喜 你已經完成所有關卡!"));
        }
        jpl.updateUI();
         
         
         
         
        System.out.println("good");
         
          
       }
        
        
        
      }
     });
   txtGame[ranD1][ranD2].setEnabled(true);
  }
  this.add(jpl);
  this.setVisible(true);
 }
}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:http://blog.csdn.net/lideguo1979/article/details/6636431

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 自拍偷拍亚洲图片 | 99精品视频在线看 | 免费男女视频 | 亚洲婷婷日日综合婷婷噜噜噜 | 亚欧在线免费观看 | 久久精品中文字幕一区二区 | 91精品国产91久久久 | 久久国产精品久久精品国产演员表 | 91精品国产92久久久久 | 欧美 国产 亚洲 卡通 综合 | 欧美人成在线视频 | 国产精品免费观看视频 | 久久精品视频亚洲 | 一区二区三区四区免费 | 久久第四色 | 91精品久久久久久久久 | 黄色影院 | 成人一级免费 | 久久99精品国产99久久6男男 | 污视频在线免费 | 欧美a在线观看 | 狠狠操天天射 | 久久露脸国语精品国产91 | 久久在线精品视频 | 黄色片的网站 | 九草网 | 污污的视频在线观看 | av免费在线观看不卡 | 斗破苍穹在线免费 | 黄色片网站在线免费观看 | 二区三区四区视频 | 特级黄aaaaaaaaa毛片 | 一区二区久久精品66国产精品 | 一级性生活免费视频 | 久久成人综合网 | av不卡免费在线观看 | 免费h片 | chinesexxxx刘婷hd| 亚洲精品无码不卡在线播放he | 一级做a爱片性色毛片高清 日本一区二区在线看 | 一本一本久久a久久精品综合小说 |