《java综合实验报告.ppt》由会员分享,可在线阅读,更多相关《java综合实验报告.ppt(36页珍藏版)》请在第壹文秘上搜索。
1、九宫格数独游戏九宫格数独游戏 JAVA课程设计010102020303题目描述题目描述问题分析问题分析系统实现系统实现问题分解问题分解系统设计系统设计04040505060608080707系统设计和软件发布系统设计和软件发布难点及关键技术分析难点及关键技术分析心得体会心得体会一、题目(问题)描述一、题目(问题)描述 在在9 99 9格的大九宫格中有格的大九宫格中有9 9个个3 33 3格的小九宫格,格的小九宫格,并提供一定数量的数字。根据这些数字,利用并提供一定数量的数字。根据这些数字,利用逻辑和推理,在其它的空格上填入逻辑和推理,在其它的空格上填入1 1到到9 9的数字。的数字。每个数字在
2、每个小九宫格内只能出现一次,每每个数字在每个小九宫格内只能出现一次,每个数字在每行、每列也只能出现一次。个数字在每行、每列也只能出现一次。 这种这种游戏只需要逻辑思维能力,与数字运算无关。游戏只需要逻辑思维能力,与数字运算无关。虽然玩法简单,但数字排列方式却千变万化,虽然玩法简单,但数字排列方式却千变万化,所以不少教育者认为数独是锻炼脑筋的好方法。所以不少教育者认为数独是锻炼脑筋的好方法。二、问题分析二、问题分析1、基本解法、基本解法利用利用1 9 的数字在每一行、的数字在每一行、每一列、每一宫都只能出每一列、每一宫都只能出现一次的规则进行解题的现一次的规则进行解题的方法。方法。 2、系统的功
3、能、系统的功能可弹出游戏界面,方便用户操作,可弹出游戏界面,方便用户操作,界面易于用户理解。可以选择游界面易于用户理解。可以选择游戏开始或重新开局。可以判断正戏开始或重新开局。可以判断正误,能给出正确答案,当输入的误,能给出正确答案,当输入的内容不符合要求时,弹出对话框,内容不符合要求时,弹出对话框,提示输入错误。当结果不正确时,提示输入错误。当结果不正确时,弹出对话框,提示答案错误。答弹出对话框,提示答案错误。答案正确时。弹出对话框,显示答案正确时。弹出对话框,显示答案正确。在九宫格数独游戏界面案正确。在九宫格数独游戏界面和弹出的消息提示界面有相关的和弹出的消息提示界面有相关的最小化、最大化
4、、关闭等按钮可最小化、最大化、关闭等按钮可以操作。以操作。3、对性能的要求、对性能的要求(1)具有较强的实用性)具有较强的实用性(2)易于理解和应用)易于理解和应用(3)对程序的配置要求不高,)对程序的配置要求不高,能广泛应用能广泛应用4、应用环境的要求、应用环境的要求JDK 成功安装,设置环境变量成功安装,设置环境变量(JAVA_HOME=C:ProgramFilesJavajdk1.6.0_10classpath= .;C:Program FilesJavajdk1.6.0_10lib;Path= C:Program FilesJavajdk1.6.0_10bin;)三、问题分解问题分解
5、1.属于属于ShuDu1主类的对象主类的对象: MenuBar、Menu、MenuItem、JComboBox属于属于ShuDuAns类的对象:类的对象:JTextField属于属于String类的对象类的对象:atextij 属于属于JtextField类的对象:类的对象:textij、属于属于JPanel类的对象:类的对象:apanel 、panel 类:包括上述所有类及父类类:包括上述所有类及父类Jframe。2、ShuDu1: public String: publicJtextField:private JPanel:privateJframe:public3、Jframe与主类与主
6、类ShuDu1之间:泛化之间:泛化texts (JtextField)与与atext (String)之间:依赖之间:依赖String与与ShuDu1之间之间:依赖依赖Resizable、Editable、Visible与与texts 之间之间:实现实现i、j与与textij、atextij之间之间:关联关联四四 、系统设计、系统设计类的设计(对象的设计)(类图、对象图)类的设计(对象的设计)(类图、对象图): 2 2、程序流程图程序流程图:3 3、算法:算法:核心:第一次次是从所有数字中随机,第二核心:第一次次是从所有数字中随机,第二次时从前八个数字中随机,依次类推,这样次时从前八个数字中随
7、机,依次类推,这样既保证随机,也不会再重复取已经不符合要既保证随机,也不会再重复取已经不符合要求的数字,提高程序的效率求的数字,提高程序的效率4 4、程序的相关分析程序的相关分析import java.awt.*; /这个一般在程序开始时用,即置入包。这个一般在程序开始时用,即置入包。import javax.awt.event.*;/置入处理由置入处理由awt组件产生的事件,有别于组件产生的事件,有别于String事件事件import javax.swing.*;/置入最常用包,最常用的置入最常用包,最常用的pachage,包含了各,包含了各种种swing组件的类组件的类public cla
8、ss:在:在 java 中用中用 public class 可以定义一个可以定义一个java 程序的入程序的入口类,在口类,在 asp 用用 class ClassName 可以定义一个类可以定义一个类private:在在Java中是一个关键字,表示私有成员,中是一个关键字,表示私有成员,private 是类中的一是类中的一个属性个属性 用它定义的用它定义的feild和和method只能在类中被调用只能在类中被调用.如果定义了如果定义了private,就不能被外部类所访问了就不能被外部类所访问了this:java中中this有两种用法有两种用法1、代表当前类;、代表当前类;2、在构造函数中的使
9、用、在构造函数中的使用如:如:this.setSize(300,300);/ this.setSize(300,300);/ 设置窗体的长宽各为设置窗体的长宽各为:440, 140/:440, 140/它们的计量单位是像素它们的计量单位是像素this.setVisible(true);/this.setVisible(true);/显示窗口显示窗口this.setResizable(false);/this.setResizable(false);/窗口大小不能改变窗口大小不能改变this.setDefaultCloseOperation(EXIT_ON_CLOSE);/this.setDef
10、aultCloseOperation(EXIT_ON_CLOSE);/单击窗口按钮时单击窗口按钮时,结束程序运行;,结束程序运行; new JPanel(new FlowLayout();/new JPanel(new FlowLayout();/流式布局流式布局;GridLayout()/;GridLayout()/网格布局网格布局textsi.setEditable(false);/textsi.setEditable(false);/只能显示,不允许编辑;只能显示,不允许编辑;static static :声明静态成员变量:声明静态成员变量编码如下:编码如下:public class S
11、huDu1 extends JFrame implements public class ShuDu1 extends JFrame implements ActionListener,ItemListener /ActionListener,ItemListener /框架窗口响应单击事件框架窗口响应单击事件 private MenuBar menubar=new MenuBar(); /private MenuBar menubar=new MenuBar(); /私有成员变量私有成员变量 private Menu menu_file=new Menu(File); /private Me
12、nu menu_file=new Menu(File); /定义定义FileFile菜单按菜单按钮钮 private Menu menu_edit=new Menu(Result); private Menu menu_edit=new Menu(Result); 五、系统实现(部分编码)五、系统实现(部分编码) private MenuItem item_ans=new MenuItem(Answer); /private MenuItem item_ans=new MenuItem(Answer); /定义菜单项定义菜单项 private MenuItem item_sol=new Men
13、uItem(Submit); private MenuItem item_sol=new MenuItem(Submit); private MenuItem item_rem=new MenuItem(Restar); private MenuItem item_rem=new MenuItem(Restar); private MenuItem item_next=new MenuItem(Star); private MenuItem item_next=new MenuItem(Star); private MenuItem item_exit=new MenuItem(Exit);
14、private MenuItem item_exit=new MenuItem(Exit); private JComboBox box=new JComboBox(); private JComboBox box=new JComboBox(); static int data=new int1010; /static int data=new int1010; /新建新建1010* *1010的二维数组的二维数组 static int ansdata=new int1010; /static int ansdata=new int1010; /存放正确答案的二维存放正确答案的二维数组数组
15、static int row=new int1010; static int row=new int1010; static int col=new int1010; static int col=new int1010; static int sql=new int4410; static int sql=new int4410; static JTextField text=new JTextField1010; static JTextField text=new JTextField1010; static String atext=new String1010; static Str
16、ing atext=new String1010; static int hard=2; static int hard=2; static int datahard=2,3,5; / static int datahard=2,3,5; / 不同的难度不同的难度 class ShuDuAns extends JFrame /class ShuDuAns extends JFrame /类声明类声明; ;设置答案窗口设置答案窗口 private JTextField atext=new JTextField1010; private JTextField atext=new JTextField1010; public ShuDuAns() / public ShuDuAns() /构造类构造类 super(Answer); /super(Answer); /设置框架窗口标题设置框架窗口标题 this.setSize(300,300); /this.setSize(300,300); /设置框架尺寸设置框架尺寸 this.setLocation(200,200); /this.setL