魔板游戏Jav课a程设计报告.doc_第1页
魔板游戏Jav课a程设计报告.doc_第2页
魔板游戏Jav课a程设计报告.doc_第3页
魔板游戏Jav课a程设计报告.doc_第4页
魔板游戏Jav课a程设计报告.doc_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

GUI 应用开发 应用开发 JAVA 期末报告 期末报告 学学 号 号 06 姓姓 名 马伟名 马伟 班班 级 级 Y122092 班班 老老 师 谢从华师 谢从华 目目 录录 目 录 2 1 概 述 1 1 1 课程设计目的 1 1 2 课程设计内容 1 2 系统需求分析 1 2 1 系统目标 1 2 2 主体功能 1 2 3 开发环境 2 3 系统概要设计 2 3 1 系统的功能模块划分 2 3 2 系统流程图 4 4 系统详细设计 6 5 测试 7 5 1 测试方案 7 5 2 测试结果 7 6 小结 8 附 录 10 附录 1 源程序清单 10 附录 1 1 1PUZZLEFRAME 模块源程序 10 附录 1 2 PUZZLEPAD 模块源程序 12 附录 1 3 SQUAREPOINT 类模块源程序 19 模板游戏的设计模板游戏的设计 1 概 述 1 1 课程设计目的 利用所学高级语言的语法特性 结合数据结构算法 网络知识 文件处理和数 据库等知识完成综合题目的设计和代码实现 并培养锻炼分析程序 撰写报告等 能力 1 2 课程设计内容 1 设计一款经典的智力游戏 魔板游戏 魔板由 3 3 或 4 4 个格子组成 对于 3 3 魔板 在前 8 个格子里随即放置 8 个编号 1 8 的方块 最后一个格子是 未放置方块的空格子 对于 4 4 的魔板 在前 15 格子里随即放置 15 编号 1 15 的 方块 最后一个格子是未放置方块的空格子 2 用鼠标单击任何与空格子水平或垂直相邻的方块可以把该方块移入空格 子 而当前方块移动之前所在的格子成为空格子 通过不断地移动方块可以将方 块一行一行地按数字顺序排好 例如 对于 3 3 格子组成的魔板 要求方块最后 排列的顺序如图 6 1 所示 3 魔板游戏也可以使用图像来代替数字 例如 对于 4 4 的魔板 将一幅 图像分成 4 4 幅小图像 除去最后一幅小图像 图像的右下角 将其余各幅小 图像打乱顺序后放在魔板方块上 最终目标是通过移动方块恢复原始图像 不包 括图像的右下角 2 系统需求分析 2 1 系统目标 设计 GUI 界面的魔板游戏程序 2 2 主体功能 这个程序定义了一些组件 工具栏按钮 文本区和菜单 魔板游戏程序设计通 过 PuzzleFrame java PuzzlePad java SquarePoint java 3 个类来实现魔板游戏的整 体功能 2 3 开发环境 操作系统 Microsoft Windows 7 开发工具 jdk1 6 0 22 MyEclipse8 5 3 系统概要设计 3 1 系统的功能模块划分 在设计魔板游戏时 需要编写 3 个 java 源文件 PuzzleFrame java PuzzlePad java SquarePoint java 魔板游戏除了需要编写的上述 3 个 Java 源文件所给出的类外 还需要 Java 系 统提供的一些重要的类 如 JMenuItem JButton 和 JRadioButton 等类 3 1 23 1 2 PuzzleFrame java 类模块 PuzzleFrame 类负责创建魔板游戏的主窗口 该类含有 main 方法 程序从该类 开始 PuzzleFrame 类的成员变量中有 4 种重要类型的对象 PuzzlePad JmenuItem JRadioButton 和 JButton PuzzleFrame 类的主要成员的作 用将在后面的详细设计中阐述 PuzzleFrame 类主要成员变量 属性 和主要方法 如表 3 1 3 2 所示 成员变量描述变量类型名称 魔板 开始游戏的按钮 选择玩法 PuzzlePad Jbutton JradioButton PuzzlePad 开始 数字玩法 图像玩法 表表 3 13 1 PuzzleFrame javava 主要成员变量 属性 主要成员变量 属性 名称功能备注 PuzzleFrame actionPerformed main 创建程序主窗口 处理 ActionEvent 事件 程序开始运行的方法 构造方法 接口方法 表表 3 23 2 PuzzleFrame java 主要方法主要方法 3 1 33 1 3 PuzzlePad java 类模块 PuzzlePad 类创建的对象是 PuzzleFrame 类最重要的成员之一 代表 魔板 该类的成员变量中有 5 种重要类型的对象 Point Block 和 Image PuzzlePad 类 类主要成员变量 属性 和主要方法如表 3 3 3 4 所示 描述变量类型名称 魔板中的行数和列数 魔板中方块的宽和高 魔板中二维点数组 魔板中而为方块数组 模板可能用到的图像 int int SquarePoint JButton Image rows colums width height point block image 表表 3 33 3 PuzzlePad java a 主要成员变量 属性 主要成员变量 属性 名称功能备注 PuzzlePad 随机排列数字 随机排列图像 paintComponent actionPerformed 创建魔板对象 随机排列魔板中方块上的数字 随机排列魔板中方块上的图像 绘制图像 处理 ActionEvent 事件 构造方法 接口方法 表表 3 43 4 PuzzlePad java 主要方法主要方法 3 1 43 1 4 SquarePoint java 类模块 SquarePoint 类负责创建确定位置的对象 使用 Point 对象可以确定 Block 对象 在 PuzzlePad 对象中的位置 即确定 方块 在 魔板 中的位置 SquarePoint java 类主要成员变量 属性 和主要方法如表 3 5 3 6 所示 描述变量类型名称 判断点上是否有方块 点上的方块对象 boolean JButton 有方块 block 表表 3 53 5 SquarePoint java 主要成员变量 属性 主要成员变量 属性 名称功能备注 SquarePoint get 有方块 set 有方块 setBlock getBlock 创建 点 对象 判断点上是否有方块 设置点上是否有方块 在点上放置方块 获取点上的方块 构造方法 表表 3 63 6 SquarePoint java 主要方法主要方法 3 2 系统流程图 根据对模板游戏的功能分析 设计得到魔板游戏总流程 如图 2 2 所示 开始 魔板游戏开始界面 Switch 改变游戏玩法 选择数字玩法 数字玩法图片玩法 确定玩法 退出 结束 YES NO 图图 2 22 2 系统流程图系统流程图 4 系统详细设计 4 1 运行效果 1 将三个 java 文件和图像文件保存到一个文件夹中 例如 C moban 将三 个 java 文件分别编译生成相应的字节码文件 class 然后 用 java 解释器运行主 类 E Eclipse 实验 java PuzzleFrame 效果如图 4 1 所示 图 4 1 数字玩法主界面 本程序实现的游戏分为初级和高级模式 可以在单机选择级别之后进行选择级 别模式 初级的话共分为 9 格魔板 一个为空 8 个魔板上下左右自由移动 直至 排列完成 高级的话分为 16 格魔板 一个为空 15 个魔板上下左右自由移动 直 至排列完成 该游戏可分为数字玩法和图像玩法 在单击图像玩法或者数字玩法 之后可以进行相应的玩法选择 选择之后单击开始 如果玩家想重新开始 只需 要再次单击开始按钮即可 5 测试 5 1 测试方案 游戏难度级别设置为数字玩法 进行测试 用 java 解释器运行主类 E Eclipse 实验 java PuzzleFrame 5 2 测试结果 图 5 1 测试结果 6 小结 通过这次实验 使我在软件开发方面也累积了不少经验 对 java 的知识重要 性的认识更深了 通过设计过程的锻炼 自己分析问题和解决问题的能力都得到 了锻炼和提高 完善了自己的知识结构 加深了对所学知识的理解 通过课程设计 我学习到不少的 JAVA 编程语言的知识 但由于自己的理论 知识水平有限 实践知识和设计经验不足 在设计过程中难免存在一些问题 甚 至错误 这些我会在以后的工作学习和实践中加以改进和提高 附附 录录 附录附录 1 源程序清单源程序清单 附录 1 1 1PuzzleFrame 模块源程序 import java awt import java awt event import javax swing public class PuzzleFrame extends JFrame implements ActionListener PuzzlePad puzzlePad JButton 开始 JMenuBar bar JMenu fileMenu JMenuItem 初级 高级 JRadioButton 数字玩法 图像玩法 ButtonGroup group null Container con null public PuzzleFrame bar new JMenuBar fileMenu new JMenu 魔板游戏 初级 new JMenuItem 初级 高级 new JMenuItem 高级 fileMenu add 初级 fileMenu add 高级 bar add fileMenu setJMenuBar bar 初级 addActionListener this 高级 addActionListener this 开始 new JButton 开始玩 开始 addActionListener this group new ButtonGroup 数字玩法 new JRadioButton 数字玩法 true 图像玩法 new JRadioButton 图像玩法 false group add 数字玩法 group add 图像玩法 puzzlePad new PuzzlePad 3 3 50 50 con getContentPane con add puzzlePad BorderLayout CENTER JPanel pNorth new JPanel pNorth add 数字玩法 pNorth add 图像玩法 pNorth add 开始 con add pNorth BorderLayout NORTH con validate addWindowListener new WindowAdapter public void windowClosing WindowEvent e System exit 0 setVisible true setBounds 100 50 440 360 validate public void actionPerformed ActionEvent e if e getSource 开始 if 数字玩法 isSelected puzzlePad 随机排列数字 else if 图像玩法 isSelected puzzlePad 随机排列图像 else if e getSource 初级 con remove puzzlePad puzzlePad new PuzzlePad 3 3 50 50 con add puzzlePad BorderLayout CENTER con validate this validate else if e getSource 高级 con remove puzzlePad puzzlePad new PuzzlePad 4 4 50 50 con add puzzlePad BorderLayout CENTER con validate this validate public static void main String args new PuzzleFrame 附录 1 2 PuzzlePad 模块源程序 import java awt import java awt event import javax swing import javax swing border import java util Vector import java awt image public class PuzzlePad extends JPanel implements ActionListener int rows colums int width height SquarePoint point JButton block Vector vector int leftX 50 leftY 50 Image image null Toolkit tool null MediaTracker mt int 图像的宽 图像的高 Image blockImage boolean 画图像 true public PuzzlePad int r int c int w int h setLayout null vector new Vector rows r colums c width w height h tool getToolkit try image tool createImage 气球 jpg mt addImage image 1 mt waitForAll catch Exception e block new JButton rows colums point new SquarePoint rows colums for int i 0 i rows i for int j 0 j colums j if i rows 1 block i j setSize width height block i j addActionListener this vector add block i j for int i 0 i rows i for int j 0 j colums j point i j new SquarePoint 50 j width 50 i height if i rows 1 public void actionPerformed ActionEvent e JButton button JButton e getSource int x button getBounds x int y button getBounds y int m 0 n 0 for int i 0 i rows i for int j 0 j colums j if point i j getX x n j int 上 Math max 0 m 1 int 下 Math min rows 1 m 1 int 左 Math max 0 n 1 int 右 Math min colums 1 n 1 if point 上 n get 有方块 false point 上 n setBlock button this point m n set 有方块 false else if point 下 n get 有方块 false point 下 n setBlock button this point m n set 有方块 false else if point m 左 get 有方块 false point m 左 setBlock button this point m n set 有方块 false else if point m 右 get 有方块 false point m 右 setBlock button this point m n set 有方块 false public void 随机排列数字 vector removeAllElements for int i 0 i rows i for int j 0 j0 int n int Math random vector size JButton b JButton vector elementAt n b setText i b setIcon null b setBorder BorderFactory createLineBorder Color blue 1 vector remove n i 画图像 false repaint public void 随机排列图像 try 图像的宽 image getWidth this 图像的高 image getHeight this int w 图像的宽 colums int h 图像的高 rows blockImage new Image rows colums int k 0 PixelGrabber pg null ImageProducer ip null for int i 0 i rows i for int j 0 j colums j int pixels new int w h pg new PixelGrabber image j w i h w h pixels 0 w pg grabPixels ip new MemoryImageSource w h pixels 0 w blockImage k tool createImage ip k vector removeAllElements for int i 0 i rows i for int j 0 j0 int n int Math random vector size JButton b JButton vector elementAt n b setIcon new ImageIcon blockImage num b setBorder null b setText vector remove n num 画图像 true repaint catch Exception ee public void paintComponent Graphics g super paintComponent g g setColor Color black g fillRect leftX leftY colums width rows height if 画图像 true g drawImage image colums width 80 height colums width

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论