ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:72.20KB ,
资源ID:30625      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/30625.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Java扫雷游戏课程设计实训报告.docx)为本站会员(b****1)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Java扫雷游戏课程设计实训报告.docx

1、Java扫雷游戏课程设计实训报告一总体设计本系统共包括3个java源文件和4个图像文件。1类之间的关系如图1.1所示。2java源文件及其功能如表1所示。表1 源文件及其功能序号文件名主要功能1Main.java生成的类负责创建程序窗口,含有main方法,游戏从该类开始执行。2MainBomb.java为主类创建整个挖雷游戏的对象,包括窗口,布雷,判断等等。3Bomb.java负责创建游戏所需要的按钮。3.图像文件Bomb.gif:地雷方块上的图标。question.gif:疑惑探雷是否正确。bomb_big.gif:触雷时方块上的图标。flag.gif:探雷标记。二、详细设计1主类Main(

2、1)成员变量(见表2)表2 成员变量描述变量类型备注游戏运行MainBomb临时变量(2)成员变量(见表3)表3 名称功能备注main游戏开始(3)源代码见文件Main.javaimport java.awt.*; import java.awt.event.*; import javax.swing.*;/*主类*/public class Main public static void main(String args) (new MainBomb().show(); 2挖雷游戏 MainBomb(1)成员变量(见表4)表4成员变量描述变量类型名称雷数设置JTextFieldtext当前方

3、块数intBlockNum当前雷数intBombNum开始JButtonstart踩雷Iconicon_bomb踩雷标记Iconicon_bomb_big雷标记Iconicon_flag疑惑是否有雷Iconicon_question目录面板PanelMenuPamel主面板PanelmainPanel雷BombbombButton该方块是否有雷boolean周围无雷方块周围的雷数int周围的雷数方块上的雷标记int探雷标记显示方块信息JLabelLabel方块在雷区的位置PointP布雷RandomSetset判断标记是否正确DetermineDetermine是否获得胜利WinnerWin雷

4、标数目intcount周围方块的雷数intcount1(2)方法见(表5)表5 方法名功能备注Game创建程序窗口barnewGame新开局actionPerformed处理ActionEvent事件接口方法设置方块是否有雷设置雷的值设置是雷时的图标设置label上的图标设置无雷时的图标设置label上的图标设置有雷时的名字设置label上的文字设置周围的雷数设置周围的雷数获取名字返回方块label上的文字获取周围雷数返回周围的雷数设置雷区位置设置属性P获取雷区位置返回属性P获取探雷标记返回探雷标记mousePressed处理鼠标按下事件接口方法mouseClicked处理鼠标双击事件接口方法

5、mouseReleased处理鼠标释放事件接口方法mouseExited处理鼠标退出事件接口方法mouseEntered处理鼠标进入事件接口方法MinesSquare创建雷区gameOver游戏失败判断雷标是否正确正确返回true错误返回false布雷随机布雷判断是否成功成功返回true失败返回false(3)源代码见文件MainBomb.javaimport java.awt.*; import java.awt.event.*; import javax.swing.*;/*窗口及算法实现类*/class MainBomb extends JFrame implements ActionL

6、istener,MouseListener public JTextField text; public Label nowBomb,setBomb; public int BlockNum,BombNum; /当前方块数当前雷数 public Icon icon_bomb = new ImageIcon(Bomb.gif); /踩雷 public Icon icon_bomb_big = new ImageIcon(bomb_big.gif); /踩雷标记 public Icon icon_flag = new ImageIcon(flag.gif); /雷标记 public Icon ic

7、on_question = new ImageIcon(question.gif); /疑惑是否有雷 public JButton start = new JButton( 开始 ); public Panel MenuPamel = new Panel(); public Panel mainPanel = new Panel(); public Bomb bombButton; /*界面设计*/ public MainBomb() super(成型04-2 李超 JAVA课程设计 ); BlockNum = 64; BombNum = 10; Container c=getContentP

8、ane(); c.setBackground(Color.gray); c.setLayout(new BorderLayout(); text=new JTextField(10 ,3); nowBomb = new Label(当前雷数+ +BombNum+); setBomb= new Label(设置地雷数); start.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) BombNum = Integer.parseInt(text.getText().trim(); i

9、f(BombNum = 10 & BombNum 50 ) replay(); else JOptionPane msg = new JOptionPane(); JOptionPane.showMessageDialog(null,您设置的地雷数太多了,请重设!,错误,2); ); MenuPamel.add(setBomb); MenuPamel.add(text); MenuPamel.add(start); MenuPamel.add(nowBomb); c.add(MenuPamel,North); mainPanel.setLayout(new GridLayout( (int)M

10、ath.sqrt(BlockNum) , (int)Math.sqrt(BlockNum) ); bombButton=new Bomb (int)Math.sqrt(BlockNum) ; for(int i = 0 ; i (int)Math.sqrt(BlockNum) ; i+) bombButton i =new Bomb (int)Math.sqrt(BlockNum) ; for(int i = 0 ; i (int)Math.sqrt(BlockNum) ; i+ ) for(int j = 0 ; j (int)Math.sqrt(BlockNum) ; j+ ) bombB

11、utton i j =new Bomb(i,j); bombButton i j .setForeground( Color.gray); bombButton i j .addActionListener(this); bombButton i j .addMouseListener(this); for(int i = 0 ; i (int)Math.sqrt(BlockNum) ; i+ ) for(int j = 0 ; j (int)Math.sqrt(BlockNum) ; j+ ) mainPanel.add(bombButton i j ); c.add(mainPanel,C

12、enter); startBomb(); setSize(400,400); setLocation(350,200); setResizable(false); /*布雷*/ public void startBomb() for(int i=0;iBombNum;i+) int x =(int)(Math.random()*(int)(Math.sqrt(BlockNum)-1); int y =(int)(Math.random()*(int)(Math.sqrt(BlockNum)-1); if(bombButton x y .isBomb=true) i-; else bombBut

13、ton x y .isBomb=true ; /*重新开始*/ public void replay() nowBomb.setText(当前雷数+ +BombNum+); for(int i = 0 ; i (int)Math.sqrt(BlockNum) ; i+) for(int j = 0 ; j (int)Math.sqrt(BlockNum) ; j+) bombButton i j .isBomb=false; bombButton i j .isClicked=false; bombButton i j .setEnabled(true); bombButton i j .setText(); bombButton i j .setIcon(null); startBomb(); /*是否挖完了所有的雷*/ public void isWin() int findBomb=0; /找到的地雷数 for(int i=0;i (int)Math.sqr

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1