计算机与信息工程系《数独游戏的设计与实现》课程设计
ShuDuAns 设置答案窗口 setSize():设置尺寸等 JPanel( ):设置面板布局 Public void 单击单击实JOptionPaneshowMessageDialog():弹出提示信息框 actionPerformed事件处践 (ActionEvent e) 理方法 接口名 属性 ActionListener add ActionListener():注册单击事件监听器 ItemListener 表1-1
四、系统设计(类设计、数据设计、方法设计、算法设计等) 类的设计(对象的设计)(类图、对象图)
第 6 页 共 31 页
计算机与信息工程系《数独游戏的设计与实现》课程设计
游戏界面 name 正确答案 数据操作 难易程度 菜单选项 菜单选项 name Start Answer Result Exit 难易程度 name Easy Commom Difficulty 正确答案 name
图1-2
第 7 页 共 31 页
计算机与信息工程系《数独游戏的设计与实现》课程设计
开始 生成九宫格 根据不同层次创建数字 选择格子data(i,j),填入数值 data(i,j)=0,其余的为空值,新的数独产生了 NO 数独只有一个正确答案吗 YES 数独游戏已设置好 解决难题的方法,解出正确答案的数字 NO 答案唯一吗 YES 答案不唯一,数独不成立
第 8 页 共 31 页
计算机与信息工程系《数独游戏的设计与实现》课程设计
玩家填入数字 YES 所有表格已填完 j++>=m+2 NO 弹出对话框,要求重新输入 是否有非法字符 YES NO 可选择提交,判断正误 是否符合正确答案 弹出对话框,提示答案正确 弹出对话框,提示答案错误。再接再厉
图1-3
第 9 页 共 31 页
计算机与信息工程系《数独游戏的设计与实现》课程设计
java 程序中数独的算法设计 static int DFS(){
for(int i=1;i<=9;i++){ for(int j=1;j<=9;j++){ if(data[i][j]==0){
for(int k=1;k<=9;k++){ if( row[i][k]==0 && col[j][k]==0 sql[(i+2)/3][(j+2)/3][k]==0 ){
data[i][j]=k; row[i][k]=1; col[j][k]=1;
sql[(i+2)/3][(j+2)/3][k]=1; if( DFS()==1 ) return 1; else{
data[i][j]=0; row[i][k]=0; col[j][k]=0;
sql[(i+2)/3][(j+2)/3][k]=0; } } if(k==9) return 0; } } } } return 1; }
第 10 页 共 31 页
&&