java的扫雷小游戏、扫雷游戏设计、扫雷小程序,附源码+文档,适合课程设计

您所在的位置:网站首页 食物分类游戏小程序 java的扫雷小游戏、扫雷游戏设计、扫雷小程序,附源码+文档,适合课程设计

java的扫雷小游戏、扫雷游戏设计、扫雷小程序,附源码+文档,适合课程设计

2024-07-10 23:32| 来源: 网络整理| 查看: 265

1、项目介绍

游戏界面可以分为三个模块:菜单栏,游戏数据显示区域以及雷区。菜单栏包括游戏难度的选择和排行榜的查询以及游戏帮助。游戏数据显示区域包括地雷计数区、计时区和重新开始按钮。雷区就是玩家的游戏区域,当玩家在游戏过程中用鼠标点击某一模块,系统会自动作出相应的响应,这就是游戏中的鼠标事件。

整个扫雷游戏中,玩家所能进行的操作有:选择难度、开始游戏、重新开始游戏和记录查询等。

2、技术框架

编程语言:Java

运行环境:JDK8+idea

3、演示视频

java的扫雷小游戏、扫雷游戏设计、扫雷小程序,附源码+文档+PPT,适合课程设计

B站演示视频:https://www.bilibili.com/video/BV1mo4y157nQ/

4、项目截图

4.1、首页

4.2、中级

4.3、高级

4.4、自定义

4.5、扫雷榜

4.6、介绍

4.7、玩法

4.8、扫雷过程

5、文档截图

6、代码示例

package com.java.mine; import java.awt.event.*; import java.awt.*; import javax.swing.*; import java.util.*; import java.io.*; public class MineGame extends JFrame implements ActionListener { JMenuBar bar; JMenu fileMenu1, fileMenu2; JMenuItem 初级, 中级, 高级, 自定义, 扫雷榜; JMenuItem 介绍, 玩法; MineArea mineArea = null; File 英雄榜 = new File("英雄榜.txt"); Hashtable hashtable = null; ShowRecord showHeroRecord = null; JDialog set = null; JPanel panel, panel1, panel2, panel3, panel4; JLabel label, label1, label2, label3; JTextField row = null, column = null, mine = null; JButton 确认,取消; JDialog introduce = null, play = null; JLabel label4, label5; MineGame() { mineArea = new MineArea(16, 16, 40, 2); add(mineArea, BorderLayout.CENTER); // 边框布局 bar = new JMenuBar(); fileMenu1 = new JMenu("游戏"); 初级 = new JMenuItem("初级"); 中级 = new JMenuItem("中级"); 高级 = new JMenuItem("高级"); 自定义 = new JMenuItem("自定义"); 扫雷榜 = new JMenuItem("扫雷榜"); fileMenu1.add(初级); fileMenu1.add(中级); fileMenu1.add(高级); fileMenu1.add(自定义); fileMenu1.add(扫雷榜); fileMenu2 = new JMenu("帮助"); 介绍 = new JMenuItem("介绍"); 玩法 = new JMenuItem("玩法"); fileMenu2.add(介绍); fileMenu2.add(玩法); bar.add(fileMenu1); bar.add(fileMenu2); setJMenuBar(bar); // 设置窗体的菜单栏 初级.addActionListener(this); 中级.addActionListener(this); 高级.addActionListener(this); 自定义.addActionListener(this); 扫雷榜.addActionListener(this); 介绍.addActionListener(this); 玩法.addActionListener(this); hashtable = new Hashtable(); hashtable.put("初级", "初级#" + 999 + "#匿名"); hashtable.put("中级", "中级#" + 999 + "#匿名"); hashtable.put("高级", "高级#" + 999 + "#匿名"); if (!英雄榜.exists()) { try { FileOutputStream out = new FileOutputStream(英雄榜); ObjectOutputStream objectOut = new ObjectOutputStream(out); objectOut.writeObject(hashtable); objectOut.close(); out.close(); } catch (IOException e) { } } showHeroRecord = new ShowRecord(this, hashtable); setBounds(300, 100, 480, 560); // 移动组件并调整大小 setVisible(true); // 使Window可见 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 关闭Window的同时关闭资源 validate(); // 再次布置子组件 } public void actionPerformed(ActionEvent e) { if (e.getSource() == 初级) { mineArea.initMineArea(9, 9, 10, 1); setBounds(300, 100, 270, 350); } if (e.getSource() == 中级) { mineArea.initMineArea(16, 16, 40, 2); setBounds(300, 100, 480, 560); } if (e.getSource() == 高级) { mineArea.initMineArea(16, 30, 99, 3); setBounds(100, 100, 900, 560); } if (e.getSource() == 自定义) { set = new JDialog(); set.setTitle("自定义难度"); set.setBounds(300,100,300,130); set.setResizable(false);//设置大小不可变 set.setModal(true);//设置为对话框模式 panel = new JPanel(); //panel.setLayout(new BorderLayout()); panel1 = new JPanel(); panel2 = new JPanel(); panel3 = new JPanel(); panel4 = new JPanel(); label = new JLabel("请输入行列数与地雷数:", JLabel.CENTER); label1 = new JLabel("行:", JLabel.CENTER); label2 = new JLabel("列:", JLabel.CENTER); label3 = new JLabel("地雷数:", JLabel.CENTER); row = new JTextField(); row.setText("16"); row.setSize(1, 6); column = new JTextField(); column.setText("16"); mine = new JTextField(); mine.setText("40"); 确认 = new JButton("确认"); 确认.addActionListener(this); 取消 = new JButton("取消"); 取消.addActionListener(this); panel1.add(label1); panel1.add(row); panel2.add(label2); panel2.add(column); panel3.add(label3); panel3.add(mine); panel4.add(确认); panel4.add(取消); panel.add(panel1); panel.add(panel2); panel.add(panel3); set.add(label, BorderLayout.NORTH); set.add(panel, BorderLayout.CENTER); set.add(panel4, BorderLayout.SOUTH); set.setVisible(true); } if (e.getSource() == 扫雷榜) { if (showHeroRecord != null) showHeroRecord.setVisible(true); } if (e.getSource() == 确认) { int rowNum = Integer.parseInt(row.getText()); int columnNum = Integer.parseInt(column.getText()); int mineNum = Integer.parseInt(mine.getText()); if(rowNum < 9) rowNum = 9; if(rowNum > 16) rowNum = 16; if(columnNum < 9) columnNum = 9; if(columnNum > 30) columnNum = 30; if(mineNum < 10) mineNum = 10; if(mineNum > 99) mineNum = 99; mineArea.initMineArea(rowNum, columnNum, mineNum, 4); setBounds(100, 100, columnNum * 30, rowNum * 30 + 80); set.setVisible(false); } if (e.getSource() == 取消) { set.setVisible(false); } if (e.getSource() == 介绍) { introduce = new JDialog(); introduce.setTitle("扫雷介绍"); introduce.setBounds(300,100,300,300); introduce.setResizable(false); introduce.setModal(true); label4 = new JLabel(); label4.setSize(280, 250); label4.setText("扫雷最原始的版本可以追溯到1973年" + "一款名为“方块”的游戏。不久,“方块”被改写成了游戏“Rlogic”。在“Rlogic”里,玩家的任务是作为美国" + "海军陆战队队员,为指挥中心探出一条没有地雷的安全路线,如果路全被地雷堵死就算输。" + "两年后,汤姆·安德森在“Rlogic”的基础上又编写出了游戏“地雷”,由此奠定了现代扫雷游戏的雏形。" + "1981年,微软公司的罗伯特·杜尔和卡特·约翰逊两位工程师在Windows3.1系统上加载了该游戏," + "扫雷游戏才正式在全世界推广开来。"); introduce.add(label4); introduce.setVisible(true); } if (e.getSource() == 玩法) { play = new JDialog(); play.setTitle("游戏玩法"); play.setBounds(300,100,300,300); play.setResizable(false); play.setModal(true); label4 = new JLabel(); label4.setSize(280, 250); label4.setText("扫游戏目标是在最短的时间内" + "根据点击格子出现的数字找出所有非雷格子,同时避免踩雷。" + "当玩家点开一个格子时,会在该格子上显示周围8个格子的雷数" + "(如果没有雷则自动点开周围的格子),玩家需要通过这些数字来判断雷的位置," + "将是雷的格子标记为小红旗。当所有地雷被标记且非雷格子都被点开时游戏胜利。"); play.add(label4); play.setVisible(true); } validate(); } public static void main(String args[]) { new MineGame(); } }



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3