文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

简单实现java数独游戏

2023-05-30 17:26

关注

本文实例为大家分享了java数独游戏的具体代码,供大家参考,具体内容如下

打算把javaFx需要的组件装好以后直接用javaFx的,但似乎eclipse的版本不对,安装了也不能用...
数独代码是在之前寒假受命写的,学了一个月java的成果,现在看来有些不足但毕竟是第一个程序,就直接放上来,数独终盘的实现直接用了暴力,时间复杂度有点高,懒得改了直接放代码

终盘实现:

import java.util.Random;  public class SudokuPuzzleGenerator {  private Random random = new Random();    private static final int MAX_CALL_RANDOM_ARRAY_TIMES = 220;    private int currentTimes = 0;   public int[][] generatePuzzleMatrix() {    int[][] randomMatrix = new int[9][9];    for (int row = 0; row < 9; row++) {    if (row == 0) {     currentTimes = 0;     randomMatrix[row] = buildRandomArray();     } else {     int[] tempRandomArray = buildRandomArray();      for (int col = 0; col < 9; col++) {      if (currentTimes < MAX_CALL_RANDOM_ARRAY_TIMES) {       if (!isCandidateNmbFound(randomMatrix, tempRandomArray, row, col)) {                resetValuesInRowToZero(randomMatrix,row);        row -= 1;        col = 8;        tempRandomArray = buildRandomArray();       }      } else {        row = -1;       col = 8;       resetValuesToZeros(randomMatrix);       currentTimes = 0;      }     }    }   }   return randomMatrix;  }    private void resetValuesInRowToZero(int[][] matrix, int row)  {   for (int j = 0; j < 9; j++) {    matrix[row][j] = 0;   }     }   private void resetValuesToZeros(int[][] matrix) {   for (int row = 0; row < 9; row++) {    for (int col = 0; col < 9; col++) {     matrix[row][col] = 0;    }   }  }   private boolean isCandidateNmbFound(int[][] randomMatrix, int[] randomArray, int row, int col) {   for (int i = 0; i < 9; i++) {    randomMatrix[row][col] = randomArray[i];    if (noConflict(randomMatrix, row, col)) {     return true;    }   }   return false;  }   private boolean noConflict(int[][] candidateMatrix, int row, int col) {   return noConflictInRow(candidateMatrix, row, col)&&noConflictInColumn(candidateMatrix, row, col) && noConflictInBlock(candidateMatrix, row, col);  }   private boolean noConflictInRow(int[][] candidateMatrix, int row, int col) {      int currentValue = candidateMatrix[row][col];    for (int colNum = 0; colNum < col; colNum++) {    if (currentValue == candidateMatrix[row][colNum]) {     return false;    }   }    return true;  }   private boolean noConflictInColumn(int[][] candidateMatrix, int row, int col) {    int currentValue = candidateMatrix[row][col];    for (int rowNum = 0; rowNum < row; rowNum++) {    if (currentValue == candidateMatrix[rowNum][col]) {     return false;    }   }    return true;  }   private boolean noConflictInBlock(int[][] candidateMatrix, int row, int col) {    int baseRow = row / 3 * 3;   int baseCol = col / 3 * 3;    for (int rowNum = 0; rowNum < 8; rowNum++) {    if (candidateMatrix[baseRow + rowNum / 3][baseCol + rowNum % 3] == 0) {     continue;    }    for (int colNum = rowNum + 1; colNum < 9; colNum++) {     if (candidateMatrix[baseRow + rowNum / 3][baseCol + rowNum % 3] == candidateMatrix[baseRow       + colNum / 3][baseCol + colNum % 3]) {      return false;     }    }   }   return true;   }   private int[] buildRandomArray() {   currentTimes++;   int[] array = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 };   int randomInt = 0;    for (int i = 0; i < 20; i++) {    randomInt = random.nextInt(8) + 1;    int temp = array[0];    array[0] = array[randomInt];    array[randomInt] = temp;   }    return array;  }    public int getCurrentTimes() {   return currentTimes;  }    public void setCurrentTimes(int currentTimes) {   this.currentTimes = currentTimes;  }   } 

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 资料下载
  • 历年真题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯