java集中上机实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
扫雷游戏
一、实验实习目的及要求
加强对C语言的深入理解,提高学生分析问题,解决综合问题的能力。
二、实验实习设备(环境)及要求(软硬件条件)
设备:
操作系统:
编译软件:
三、实验实习内容简介:
1、需求分析
系统功能分析:
(1)游戏界面设计:游戏界面用BorderLayout和Gridlayout两个布局进行设计,界面中间使用Gridlayout设计成12行12列的雷区,界面菜单和雷区结合
用BorderLayout设计,界面菜单有雷数的显示和雷数自定义输入的文本框,
另外还有个开始按钮,用以确定雷数开始游戏。
(2)雷区设计: java.swing包中Jpanel容器创建对象:bombPanel,作为一个容器添加到继承了JFrame的Frame窗口的中心。其中bomb类继承了JButton
按钮,进行方块的布置和地雷的布置。方块包括地雷用类Bomb继承JButton,
定义雷区变量,包括方块或地雷的坐标,方块或地雷的状态等。
1、重要的成员变量
(1)BombRoundCount是bomb类属性,用来显示记录方块周围雷数的多少,然后显示在方块中央。
(2)BombNum, BlockNum,rightBomb, restBomb, restBlock是int类型,分别负责记录游戏当前地雷数量、方块数、找到的地雷数、剩余的雷数、剩余的方块数。
(3)bombButton是bomb类型的数组,负责设置数组中的哪些方块是雷或不是雷。
2、方法
(1)startBomb()方法可根据参数提供的数据设置雷区的雷数,其中方块数固定。
(2)start_actionPerformed(ActionEvent e)是实现的ActionListener接口中的方法。当用户单击开始时,start_actionPerformed(ActionEvent e)方法负责执行有关算法,例如,当用鼠标左键单击方块上的按钮后,若用户定义雷数少于5,将弹出错误提示,若不小于5则执行游戏。
(3)CountRoundBomb()方法是一个计算周围雷数算法,当需要检测的单元格本身无地雷的情况下,统计周围的地雷个数,记录到BombRoundCount中以数字形式显示在单元格。
(4)mousePressed(MouseEvent)方法是MineArea类实现的MouseListener 接口中的方法,当用户按下鼠标有件事mousePressed(MouseEvent)方法负责让方块上显示一个探雷标记。
(5)isWin()方法用来判断用户是否扫雷成功,如果成功该方法负责让一个文本框弹出提示游戏胜利。所谓扫雷成功是指找到了全部的雷。
(6)isNull(Bomb ClickedButton)方法是用来判断周围雷数是否为0的算法,是就用在turn(Bomb ClickedButton)方法中调用以翻开周围所有雷数为0的单元格。
(7)turn(Bomb ClickedButton)方法是进行翻开单元格的动作,还有actionPerformed(ActionEvent e),mouseClicked(MouseEvent e) Frame1_start_action,AdapterBomb_action,AdapterBomb_mouseAdapter
都是对事件的捕获及处理,其中有左键点击进行翻开动作或者还会弹出一个
文本框提示,右键点击进行地雷的标记,还有界面开始的监听。
2、系统设计
●系统应实现的主要功能:
(1)用户可以自定义雷数;
(2)用户可以按鼠标右键标记雷数并取消;
(3)用户通过左击小方块,进行扫雷。
●主要功能的概要设计:
总体流程图:
1、 扫雷游戏界面的设计:整体布局使用BorderLayout 和Gridlayout ,其中
BorderLayout 是总体的雷区和下方的菜单栏布局使用,Gridlayout 是雷区进行网格布局使用,界面采用了按钮,面板,文本框,标签等组件,按钮主要是退出和开始选项,还有和用户进行交互的文本框。界面的大小设为高和宽都为600,初始显示雷数为10,雷区区域小方格布局为12行12列。
2、 雷区的设计:将地雷随机安放在小方格中,通过用户的鼠标点击,翻开小方格,处
理它周围的信息并做出相应显示,点击过程中记录地雷剩余数量,不管扫雷游戏的输赢,又重新初始化游戏。
布雷: 扫雷:
3、进行雷区标记的设计:用户单击右键进行地雷的标记,这是对地雷位置的猜测,地雷数减1,而且被标记的位置不可以在点击,如需点击方块需要单击或双击右键才可以取消标记“F ”显示空白或者“Q ”,当显示“Q ”的时候点击方块,“Q ”字母会留在被翻开的方块上面。
是 否 否 是
各个具体功能实现和简单算法:
1、扫雷游戏界面的实现:
首先定义三个容器,整体界面c和菜单栏MenuPanel、雷区bombPanel。
Frame{
JPanel MenuPanel=new JPanel();
JPanel bombPanel=new JPanel();
JPanel c;
}
然后是三个容器的布置:
JbInit(){
c.setLayout(borderLayout1);
c.add(MenuPamel,BorderLayout.SOUTH);
c.add(bombPanel, java.awt.BorderLayout.CENTER);
}
最后是菜单栏,对“开始”按钮添加监听事件并检查是否自定义雷数符合规定,显示当前或剩余雷数,并设文本框自定义雷数:
JbInit{
BombNum = 10;
text = new JTextField("10", 3);//
nowBomb = new JLabel("当前雷数" + ":" + BombNum);