当前位置:文档之家› JAVA大作业_2

JAVA大作业_2


}
DFS(); } 算法核心:第一次是从所有数字中随机,第二次时从前八个数字中随机,依次类 推, 这样既保证随机, 也不会再重复取已经不符合要求的数字, 提高程序的效率。 程序的相关分析 import java.awt.*; //这个一般在程序开始时用,即置入包。 import javax.awt.event.*;//置入处理由 awt 组件产生的事件,有别于 String 事件 import javax.swing.*;//置入最常用包,最常用的 pachage,包含了各种 swing 组件 的类 public class: 在 java 中用 public class 可以定义一个 java 程序的入口类, 在 asp 用 class ClassName 可以定义一个类 private:在 Java 中是一个关键字, private 是类中的一个属性 用它 表示私有成员, 定义的 feild 和 method 只能在类中被调用.如果定义了 private,就不能被外部类所 访问了 this:java 中 this 有两种用法 1、代表当前类;2、在构造函数中的使用 如: this.setSize(300,300);// 设置窗体的长宽各为:440, 140//它们的计量单位是像素 this.setVisible(true);//显示窗口 this.setResizable(false);//窗口大小不能改变 this.setDefaultCloseOperation(EXIT_ON_CLOSE);//单击窗口按钮时,结束程序运 行; new JPanel(new FlowLayout());//流式布局;GridLayout()//网格布局 texts[i].setEditable(false);//只能显示,不允许编辑; static :声明静态成员变量
static void set_data_zero(){ for(int i=0;i<=9;i++){ for(int j=0;j<=9;j++){ data[i][j]=0; } } }
//数独的初始化
static void setnum(){ //数独数字的设置 setzero(); set_data_zero(); for(int i=1;i<=9;i++){ //尝试填充的次数 int n =(int)(Math.random()*100)+1; //添加任意整数 int j=i*3-((i+2)/3*8-6); data[i][j]=n%9+1; //产生数字 int k=data[i][j]; row[i][k]=1; col[j][k]=1; sql[(i+2)/3][(j+2)/3][k]=1;
《JAVA 语言程序设计》
课程设计报告
Java 数独游戏设计
专业班级: 学生姓名: 学生学号: 小组成员: 指导教师:
计算机科学与技术(嵌入式 13-1) 翟世昌 13031010158 方建峰 殷智玺 冯泽刚 翟世昌 宋强
目录 1.数独游戏与系统概述............................................................................. 3 1.1 设计背景........................................................................................ 3 1.2 数独游戏简介................................................................................ 3 方格................................................................................................. 3 行..................................................................................................... 4 列..................................................................................................... 4 宫..................................................................................................... 5 2.系统可行性分析与相关技术分析.........................................................5 2.1 面向对象程序设计方法................................................................ 5 3.系统设计与关键技术............................................................................. 6 3.1 系统的功能分析............................................................................ 6 3.2 系统的实现.................................................................................... 6 4.系统测试与操作实施方法................................................................... 10 4.1 系统开发环境.............................................................................. 10 4.2 系统实现...................................................................................... 10 5.系统设计总结....................................................................................... 13 6.参考文献............................................................................................... 14 7.源代码................................................................................................... 14
&&
col[j][k]==0
&&
sql[(i+2)/3][(j+2)/3][k]==0 ){
}
} return 1;
}
}
}
} if(k==9) return 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; }
方格
水平方向有九横行,垂直方向有九纵列的矩形,画分八十一个小正方形,称
为九宫格(Grid) ,如图一所示,是数独(Sudoku)的作用范围。
数独元素 - 九宫格

水平方向的每一横行有九格,每一横行称为行(Row) ,如图二所示。
数独元素 - 单元

垂直方向的每一纵列有九格,每一纵列称为列(Column) ,如图三所示。
1.数独游戏与系统概述
1.1 设计背景
单机游戏是一种比较流行的游戏,其画面都比较简单,很少有复杂的游戏特 效, 但是通常用到人工智能的算法来控制游戏的难度。而算法的优化是开发该类 游戏的难点。这类游戏游戏主要包括棋牌类游戏和智力测试类游戏,例如麻将, 扫雷、五子棋、扑克牌等。 数独就是单机益智游戏的一种,玩法简单单数字的排列方式千变万化,很多 人认为数独是练头脑的绝佳方式。本章通过讲解数独游戏在 java 平台的设计与 实现,使读者了解此类游戏的开发过程,掌握实用的开发技巧,学会此类游戏的 开发。
1.2 数独游戏简介
数独(すうどく,Sūdoku)是一种运用纸、笔进行演算的逻辑游戏。玩家需 要根据 9×9 盘面上的已知数字,推理出所有剩余空格的数字,并满足每一行、每 一列、每一个粗线宫内的数字均含 1-9,不重复。 数独盘面是个九宫, 每一宫又分为九个小格。在这八十一格中给出一定的已 知数字和解题条件,利用逻辑和推理,在其他的空格上填入 1-9 的数字。使 1-9 每个数字在每一行、每一列和每一宫中都只出现一次,所以又称“九宫格”。 起源 既然“数独”有一个字是“数”,人们也往往会联想到数学,那就不妨从大家都 知道的数学家欧拉说起,但凡想了解数独历史的玩家在网络、书籍中搜索时,都 会提到的就是欧拉的“拉丁方块(Latin square)”, 拉丁方块的规则:每一行(Row) 、每一列(Column)均含 1-N(N 即盘面 的规格) ,不重复。这与前面提到的标准数独非常相似,但少了一个宫的规则。 组成元素:
3.系统设计与关键技术
3.1 系统的功能分析
框架的合理布局。对于一个应用程序,界面的简单明了是很重要的,既 要简单明了还要实用,不能华而不实。 异常处理的实现。对于一个独立运行的程序,能够独立的处理运行中的 问题,并提示错误也是很重要的。 算法的实现,要准确的得出九宫格数字的正确排布,要保证随机,也要 保证数字的不重复,使得已经尝试过的数字不再取到,这是比较困难的。 创建对话框,并设置监听器处理相应的事件,例如语句: item_exit.addCaretListener(this);用于监听单击事件。 算法的实现,宫格的布局。 异常处理的实现,使用 try-catch 去捕捉异常事件,当出现异常时用跳出 错误提示对话框,提示错误信息,例如: {JOptionPane.showMessageDialog(null,” 数据中包括非数字, 请重新输入! ” );}
相关主题