




已阅读5页,还剩24页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
精品文档 1欢迎下载 J A V A 课 程 设 计 题目 扫 雷 游 戏 院 系 计算机信息工程学院 专 业 网络工程 班 级 13 级网络工程 1 班 学生姓名 方琴 刘莉虹 程子卿 薛中意 设计时间 2015 年 8 月 指导教师 万中英 提交日期 2015 年 10 月 8 日 精品文档 2欢迎下载 摘要 扫雷 是一款大众类的益智小游戏 游戏目标是在最短的时 间内根据点击格子出现的数字找出所有非雷格子 同时避免踩雷 先任意点开少量的方格 没有爆炸时 会出现一个数字 这个 数字代表的意思是以它为中心的 9 个格子内所有雷的个数 一般 围在一堆数字中间的有可能是雷 你在你认为是雷的那里插旗 就可以把它设定为雷 然后在数字区用鼠标左右键双击 可以打 开非雷区 等打开所有非雷区 你就赢了 采用 GUI 界面设计 窗口定位 绘图机制 鼠标监听等 Java 技术 用户可以自己选择地雷的数量 地雷随机分布在 17 24 的 方块矩阵中 地雷数量越多 难度越大 鼠标放在方格上 单击 鼠标左键开始游戏 按空格键插旗 如果插旗错误 或是点击到 了地雷 则游戏失败 精品文档 3欢迎下载 1 引言 1 1 该设计的目的及意义 1 2 该设计的要求 1 3 相关技术 2 总体设计 2 1 功能设计 3 详细设计 3 1 系统界面设计 3 1 1 流程图 3 1 2 界面截图 3 2 程序描述 3 2 1 选择地雷数量 3 2 2 游戏界面 4 课程设计总结 4 1 遇到问题解决问题过程 4 2 系统存在的问题 进一步要做的工作 4 3 课程设计心得体会 5 附录 程序代码 精品文档 4欢迎下载 1 11 1 该设计的目的及意义该设计的目的及意义 1 利用扫雷游戏巩固和Java 语言程序设计这一课程的基本知识的理 解和掌握 2 掌握 Java 语言程序设计中编程和程序调试的基本技能 3 基本掌握完全面向对象程序设计 的基本思路和方法 4 利用 Java 语言程序设计学会基本的软件设计 5 掌握书写程序设计说明文档的能力 1 1 2 2 课课程程设设计计要要求求 1 分析课程设计题目的思路及 要求 2 编写程序代码 调试程序使其能正确运行 3 设计完成的软件要便于操作和使用 有整齐 美观的使用界面 4 能实现简单的扫雷游戏 1 1 3 3 相相关关技技术术 1 GUI 界面设计 2 窗口定位 3 绘画基础 4 事件监听 5 继承 以及接口技术 精品文档 5欢迎下载 2 12 1 功能设计功能设计 IndexPanelIndexPanel 类类 成员变量 变量意义变量意义 变量类型变量类型 名称名称 long serialVersionUID 增加雷按钮值 boolean buAdd 减少雷按钮值 boolean buDec 玩游戏按钮值 boolean buPlay 成员方法 方法名称方法名称 功能功能 备注备注 IndexPanel 初始化参数 构造方法 paint 绘出游戏界面 mousePressed 实现鼠标单击事件 接口方法 mouseReleased 实现鼠标释放事件 接口方法 该类实现游戏的开始界面 继承了 JPanel 同时实现了监听 MouseListener 鼠标监听 事件 主要用于选定炸弹的数目 即游戏的难易 程度 点击 play 按钮 则开始游戏 炸弹数量默认为 60 精品文档 6欢迎下载 publicpublic voidvoid paint Graphics g 采用画笔的方式设计界面 布局清晰 实现窗口的定位 采用画笔的方式设计界面 布局清晰 实现窗口的定位 例如 画 设置炸弹数目的小球 40 g setColor Color white 画笔的颜色 g fillOval 40 120 30 30 画的图形是 实心圆 g setColor Color gray 重新设置画笔的颜色 g drawOval 40 120 30 30 画的图形是 空心圆 g drawString 40 47 142 图形上面的字符串 精品文档 7欢迎下载 画 PLAY 按钮 g setColor Color white g draw3DRect 30 320 120 30 buPlay g drawString PLAY 70 340 publicpublic voidvoid mousePressed MouseEvent e 鼠标点击事件 实现炸弹的选择 鼠标点击事件 实现炸弹的选择 MyPanelMyPanel 类类 成员变量 变量意义变量意义 变量类型变量类型 名称名称 返回后重新开始 int replay 每插一旗变量加一 int win 判断是否赢 int gameWin long serialVersionUID 判断是否结束 int gameOver 是否有雷的标志 int bombFlag 方块周围雷数 int count 雷坐标 Int bomb x bomb y 判断是否插旗 Int hadFlag 判断插旗是否正确 int check 插旗错误点的坐标 int check x check y 精品文档 8欢迎下载 判断是否点击过 Int clicked 判断是否已经清除过 Int clearFlag 成员方法 方法名称方法名称 功能功能 备注备注 MyPanel 初始 bombCount 变量 构造方法 paint 绘出雷区 初始化雷区 及定义雷 区功能 包括插旗 判断输赢等 系统核心部分 使用了 窗口定位 绘画等技术 mousePressed 实现鼠标点击事件 挖开方块 接口方法 clear 清除点击处周围安全非提示方块 keyPressed 实现键盘事件 插旗 接口方法 该类是游戏界面 也是最核心的类 不仅继承了JPanel 类 也通 过鼠标和键盘的监听事件 实现扫雷游戏 之前选择的炸弹随机分布在 24 17 个小方格内 插旗提示 鼠标放在方格上 按空格键插旗 精品文档 9欢迎下载 publicpublic voidvoid paint Graphics g 采用画布的方式添加方格 supersuper paint g ifif replay 1 forfor intint i 0 i bombCount i bomb x i intint Math random 24 0 1 bomb y i intint Math random 16 0 1 hadFlag i 0 forfor intint i 0 i 30 check 1 replay 1 win 0 gameOver 0 gameWin 0 bombCount 60 repaint thisthis setVisible falsefalse Index panel1 setVisible truetrue elseelse ifif e getY 375 intint mouse j e getY 22 clicked mouse i 17 mouse j 1 forfor intint i 0 i 68 check 1 replay 1 win 0 gameOver 0 gameWin 0 bombCount 60 精品文档 13欢迎下载 repaint thisthis setVisible falsefalse Index panel1 setVisible truetrue 4 1 遇到问题解决问题过程 A A 没有返回键没有返回键 相互讨论 添加 replay 按钮 点击后所有数据初始化 重新开始回到选 择界面 B B 插旗相关函数插旗相关函数 查阅相关资料 讨论 最终设定 鼠标放在方格上 按空格键插旗 4 2 系统存在的问题 进一步要做的工作 没有用文本或者是其他方式保存数据 每次用户结束游戏之后 数据没有保 存 因此没办法实现排行榜等数据比较功能 4 3 课程设计心得体会 Java 程序语言设计 一种可以撰写跨平台应用软件的面向对象的程序设 计语言 在这次的课程设计中不仅检验了我们所学习的知识 也学会了完 成一件事情的方法和技巧 在设计过程中 和同学们相互探讨 相互学 习 相互监督 学会了宽容 学会了理解 课程设计是我们专业课程知 识综合应用的实践训练 着是我们迈向社会 从事职业工 作 一个 必不少的过程 通过这次课程设计 明白除了日常的理论学习 还要多 实践 把所学的知识运用在真正的实践上 而完成课程设计 不仅是对 我们学习情况的检验 也是对自己的一次考验 精品文档 14欢迎下载 5 附录 程序代码 Index javaIndex java package saolei import java awt CardLayout import java awt Image import javax swing ImageIcon import javax swing JFrame public class Index static IndexPanel panel1 static MyPanel panel2 public static void main String args JFrame frame new JFrame frame setSize 546 415 50 frame setLocation 300 100 panel1 new IndexPanel panel2 new MyPanel frame add panel1 index 界面面板 frame add panel2 游戏主面板 ImageIcon icon new ImageIcon Image rightImage png Image rightImage icon getImage frame setIconImage rightImage frame addMouseListener panel1 panel1 addMouseListener panel1 frame addMouseListener panel2 panel2 addMouseListener panel2 frame addKeyListener panel2 panel2 addKeyListener panel2 frame setLayout new CardLayout frame setVisible true 精品文档 15欢迎下载 MyPanel javaMyPanel java package saolei import java awt BasicStroke import java awt Color import java awt Font import java awt Graphics import java awt Graphics2D import java awt MouseInfo import java awt Point import java awt event KeyEvent import java awt event KeyListener import java awt event MouseEvent import java awt event MouseListener import javax swing JPanel public class MyPanel extends JPanel implements MouseListener KeyListener static int replay 1 返回后从新开始 int win 0 每插一个旗就增一 int gameWin 0 判断游戏是否赢 private static final long serialVersionUID 1L static int gameOver 判断游戏是否结束 int bombFlag new int 24 17 bombFlag 为是否是雷的标志 如果该空格是雷则相应的位置的 bombFlag 为 1 默认为 0 int count new int 24 17 count 为此方块周围雷的个数 static int bombCount 120 雷的坐标数组 数值为整数 不是绝对坐标 而是相对坐标 int bomb x new int bombCount int bomb y new int bombCount int hadFlag new int bombCount 判断是否有插旗 int check 1 判断插旗是否正确 int check x check y 插旗错误定点的相当坐标 int clicked new int 24 17 判断是否点击过 精品文档 16欢迎下载 int clearFlag new int 24 17 判断是否已经 clear 过 public MyPanel System out println bomb x 55 bombCount 60 public void paint Graphics g super paint g if replay 1 for int i 0 i bombCount i bomb x i int Math random 24 0 1 bomb y i int Math random 16 0 1 hadFlag i 0 for int i 0 i 24 17 i bombFlag i 0 count i 0 clicked i 0 clearFlag i 0 设置画笔的宽度 Graphics2D g2D Graphics2D g g2D setStroke new BasicStroke 3f 画雷上的遮盖物 for int i 0 i 24 i for int j 0 j 17 j 将所有的方格都初始化为非炸弹 bombFlag i 17 j 0 注意这里是用或 否则同行 同列将都会被现实出来 if clicked i 17 j 0 g setColor new Color 150 230 250 g fillRect 22 i 2 22 j 2 20 20 布雷 雷的个数为 bombCount for int i 0 i bombCount i bomb x 和 bomb y 分别为炸弹的列数和行数 都是从 0 开始 精品文档 17欢迎下载 g setColor Color red g fillOval 22 bomb x i 2 22 bomb y i 2 20 20 if hadFlag i 1 g setColor Color green g fillRect 22 bomb x i 8 22 bomb y i 8 10 8 g setColor Color white g fillRect 22 bomb x i 8 22 bomb y i 8 2 12 bombFlag bomb x i 17 bomb y i 1 计算当前方块周围有几个雷 再写出来 注意数组下表越界不会报错但是运行不了 g setColor Color black for int i 0 i 24 i for int j 0 j 0 if j 1 0 if i 1 0 if i 1 23 if i 1 23 if j 1 0 if count i 17 j 0 if check 0 g setColor Color blue System out println check x 17 check y clicked check x 17 check y 1 g drawLine check x 22 4 check y 22 4 check x 22 20 check y 22 20 g drawLine check x 22 20 check y 22 4 check x 22 4 check y 22 20 gameOver 1 for int i 0 i 24 i for int j 0 j 420 check 1 replay 1 win 0 gameOver 0 gameWin 0 bombCount 60 repaint this setVisible false Index panel1 setVisible true else if e getY 375 int mouse j e getY 22 clicked mouse i 17 mouse j 1 for int i 0 i 68 if count i 1 17 j 1 0 if j 1 0 clicked i 17 j 1 1 if count i 17 j 1 0 if i 1 0 clicked i 1 17 j 1 1 if count i 1 17 j 1 0 if i 1 23 clicked i 1 17 j 1 if count i 1 17 j 0 if i 1 23 if count i 1 17 j 1 0 精品文档 22欢迎下载 if j 1 0 if count i 1 17 j 0 public void keyPressed KeyEvent e replay 0 if gameOver 0 if e getKeyCode 32 Point point MouseInfo getPointerInfo getLocation int location x point x 300 int location y point y 100 check 0 判断插旗是否正确 for int i 0 i bombCount i if bomb x i 22 location x 8 win clicked bomb x i 17 bomb y i 1 check 1 正确插旗 else 精品文档 23欢迎下载 win hadFlag i 0 clicked bomb x i 17 bomb y i 0 check 1 正确插旗 if win bombCount gameWin 1 if check 0 check x location x 8 22 check y location y 32 22 repaint public void keyReleased KeyEvent arg0 public void keyTyped KeyEvent arg0 IndexPanel javaIndexPanel java package saolei import java awt BasicStroke import java awt Color import java awt Font import java awt Graphics import java awt Graphics2D import java awt Image import java awt event MouseEvent import java awt event MouseListener 精品文档 24欢迎下载 import javax swing ImageIcon import javax swing JPanel public class IndexPanel extends JPanel implements MouseListener private static final long serialVersionUID 1L boolean buAdd true 增加按钮 按下该值就为 false boolean buDec true 减少按钮 按下该值就为 false boolean buPlay true 玩游戏按钮 按下该值就为 false public IndexPanel this setBackground new Color 150 230 250 设置背景颜色 public void paint Graphics g super paint g Graphics2D g2D Graphics2D g g2D setStroke new BasicStroke 3f 显示炸弹数目 g setFont new Font Font BOLD 25 g setColor Color white g drawString 炸弹数量 MyPanel bombCount 20 50 g setFont new Font Font BOLD 15 画增加按钮 g draw3DRect 30 70 50 30 buAdd g drawString 增加 40 92 画减少按钮 g draw3DRect 100 70 50 30 buDec g drawString 减少 110 92 画设置炸弹数目的小球 g setColor Color white g fillOval 40 120 30 30 g setColor Color gray g drawOval 40 120 30 30 g drawString 40 47 142 g setColor Color white g fillOval 110 120 30 30 精品文档 25欢迎下载 g setColor Color gray g drawOval 110 120 30 30 g drawString 60 117 142 g setColor Color white g fillOval 40 170 30 30 g setColor Color gray g drawOval 40 170 30 30 g drawString 65 47 192 g setColor Color white g fillOval 110 170 30 30 g setColor Color gray g drawOval 110 170 30 30 g drawString 70 117 192 g setColor Color white g fillOval 40 220 30 30 g setColor Color gray g drawOval 40 220 30 30 g drawString 75 47 242 g setColor Color white g fillOval 110 2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中医护理专业就业能力测试试题及答案
- 2025年网络空间安全与防御能力考试试卷及答案
- 2025年土木工程与建筑材料考试试题及答案
- 2025年人工智能伦理与法律考试试卷及答案
- 2025年老年护理与健康管理专业能力测评考试卷及答案
- 2025年历史与文化遗产知识测试卷及答案
- 2025年国际经济与贸易专业知识测试卷及答案
- 2025年公共艺术创作与策展课程考试试题及答案
- 2025年城市生态规划师考试试题及答案
- 2024年度浙江省二级造价工程师之建设工程造价管理基础知识自我提分评估(附答案)
- 2025年毕节市大方富民村镇银行招聘题库带答案分析
- 惠州市城乡规划管理技术规定(2020年)
- (高清版)TDT 1055-2019 第三次全国国土调查技术规程
- 药物配伍禁忌查询表
- 水 泵 安 装 记 录
- 大健康产业商业计划书
- GB∕T 7528-2019 橡胶和塑料软管及软管组合件 术语
- 常州市机械行业安管考试题库
- FANUC机器人R-2000iA机械单元维护手册
- 槽边排风罩的设计计算
- 超星尔雅学习通《国际金融》2020章节测试含答案(上)
评论
0/150
提交评论