欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java數(shù)獨游戲完整版分享

 更新時間:2020年04月08日 10:21:37   作者:lideguo1979  
這篇文章主要為大家分享了java數(shù)獨游戲的完整版,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

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

自己寫的數(shù)獨游戲,共9關(guān),代碼如下:

1、DoShudu類用于產(chǎn)生數(shù)獨數(shù)組

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、界面運行類

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;//空白格數(shù)量 
 static int guan=5;//關(guān)卡數(shù)量 
 static int add=5;//沒關(guān)過后增加的空白格數(shù)量 
 public static void main(String[] args) { 
  Sudoku shudu = new Sudoku(); 
 
 } 
 
 public Sudoku() {// 對JFrame進行布局初始以及監(jiān)聽設(shè)置 
  txtGame = new TextField[9][9];// 建立81個TextField對象 
  DoShudu shudu = new DoShudu(); 
  int[][] cells = shudu.getShudu();// 獲取數(shù)獨數(shù)組 
  final JPanel jpl = new JPanel();// 建立JPanel對象 
  final int spaceNum = num;// spaceNum表示需要設(shè)置空白TextField的數(shù)量 
  jpl.setLayout(new GridLayout(9, 9));// JPanel布局 
  final int[][] cellAn = new int[9][9];// 數(shù)獨數(shù)組的答案 
  System.arraycopy(cells, 0, cellAn, 0, cells.length);// 答案從建立的數(shù)獨數(shù)組中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(); 
  } // 打印結(jié)束 
  this.setDefaultCloseOperation(this.EXIT_ON_CLOSE); 
  this.setSize(600, 600); 
  this.setResizable(false); 
  this.setTitle("黑馬-李德國-數(shù)獨游戲 9關(guān)"); 
 
  for (int i = 0; i < 9; i++) { 
 
   for (int j = 0; j < 9; j++) { 
 
    txtGame[i][j] = new TextField(); 
 
    // 設(shè)置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));// 設(shè)置字體大小 
    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("選擇數(shù)字"); 
  // 取消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); 
   } 
  }); 
 
  // 設(shè)置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++) {// 依據(jù)需要空白的TextField數(shù)量,隨機對TextField設(shè)置為空 
 
   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添加監(jiān)聽,數(shù)值發(fā)生變化后進行答案對比,如果全部答對在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("恭喜你過關(guān)")); 
        Button btn = new Button("進入下一關(guān)"); 
 
        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("恭喜 你已經(jīng)完成所有關(guān)卡!")); 
        } 
        jpl.updateUI(); 
         
         
         
         
        System.out.println("good"); 
         
          
       } 
        
        
        
      } 
     }); 
   txtGame[ranD1][ranD2].setEnabled(true); 
  } 
  this.add(jpl); 
  this.setVisible(true); 
 } 
} 

更多有趣的經(jīng)典小游戲?qū)崿F(xiàn)專題,分享給大家:

C++經(jīng)典小游戲匯總

python經(jīng)典小游戲匯總

python俄羅斯方塊游戲集合

JavaScript經(jīng)典游戲 玩不停

java經(jīng)典小游戲匯總

javascript經(jīng)典小游戲匯總

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java Http多次請求復(fù)用同一連接示例詳解

    Java Http多次請求復(fù)用同一連接示例詳解

    這篇文章主要為大家介紹了Java Http多次請求復(fù)用同一連接示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-10-10
  • java虛擬機多線程進階篇總結(jié)

    java虛擬機多線程進階篇總結(jié)

    在本篇內(nèi)容里小編給大家整理了關(guān)于java虛擬機多線程進階篇的相關(guān)知識點內(nèi)容,有興趣的朋友們跟著參考下。
    2019-06-06
  • @RequestBody的使用詳解

    @RequestBody的使用詳解

    這篇文章主要介紹了@RequestBody的使用詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • Java簡單數(shù)據(jù)加密方法DES實現(xiàn)過程解析

    Java簡單數(shù)據(jù)加密方法DES實現(xiàn)過程解析

    這篇文章主要介紹了Java簡單數(shù)據(jù)加密方法DES實現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-12-12
  • java中char對應(yīng)的ASCII碼的轉(zhuǎn)化操作

    java中char對應(yīng)的ASCII碼的轉(zhuǎn)化操作

    這篇文章主要介紹了java中char對應(yīng)的ASCII碼的轉(zhuǎn)化操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • Java中的ArrayList.trimToSize()方法詳解

    Java中的ArrayList.trimToSize()方法詳解

    這篇文章主要介紹了Java中的ArrayList.trimToSize()方法詳解,前幾天看了Java?ArrayList,沒有明白trimToSize()這個方法是什么意思,所以看了一下源碼并且debug一下自己的一個例子,明白了其中的含義,需要的朋友可以參考下
    2023-11-11
  • 基于Java的MathML轉(zhuǎn)圖片的方法(示例代碼)

    基于Java的MathML轉(zhuǎn)圖片的方法(示例代碼)

    最近接到一個新需求mathML轉(zhuǎn)圖片怎么實現(xiàn)呢?剛開始還真是蒙圈了,不知道怎么實現(xiàn),今天小編記錄一種基于Java的MathML轉(zhuǎn)圖片的方法,感興趣的朋友一起看看吧
    2021-06-06
  • Java中Iterator迭代器的使用詳解

    Java中Iterator迭代器的使用詳解

    在程序開發(fā)中,經(jīng)常需要遍歷集合中的所有元素。針對這種需求,JDK專門提供了一個接口java.util.Iterator。本文就來詳細說說Iterator迭代器的使用,感興趣的可以了解一下
    2022-10-10
  • SpringBoot啟動器Starters使用及原理解析

    SpringBoot啟動器Starters使用及原理解析

    這篇文章主要介紹了SpringBoot啟動器Starters使用及原理解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-04-04
  • java實現(xiàn)文件的上傳功能

    java實現(xiàn)文件的上傳功能

    這篇文章主要為大家詳細介紹了java實現(xiàn)文件的上傳功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01

最新評論