JAVA魔板游戏.doc_第1页
JAVA魔板游戏.doc_第2页
JAVA魔板游戏.doc_第3页
JAVA魔板游戏.doc_第4页
JAVA魔板游戏.doc_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

j ja av va a 程程序序设设计计 课课程程设设计计报报告告 xxx 魔板游戏魔板游戏 专业专业xxx 学生姓名学生姓名xxx 班级班级xxx 学号学号xxx 指导教师指导教师xxx 完成日期完成日期xxx 魔板游戏 目目 录录 目 录 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 参考文献 9 附 录 10 附录 1 源程序清单 10 附录 1 1 1puzzleframe 模块源程序 10 附录 1 2 puzzlepad 模块源程序 12 附录 1 3 squarepoint 类模块源程序 19 java 程序设计课程设计报告 2010 1 模板游戏的设计模板游戏的设计 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 幅小图像 除去最后一幅小图像 图像的右下角 将其余各幅小 图像打乱顺序后放在魔板方块上 最终目标是通过移动方块恢复原始图像 不包 括图像的右下角 4 魔板游戏分为两个级别 用户可以通过界面上提供的菜单来选择 初级 或 高级 两个级别 对于 初级 级别 魔板由 3 3 个格子组成 对于 高级 级别 魔板由 4 4 个格子组成 2 系统需求分析 2 1 系统目标 设计 gui 界面的魔板游戏程序 2 2 主体功能 这个程序定义了一些组件 工具栏按钮 文本区和菜单 魔板游戏程序设计 通过 puzzleframe java puzzlepad java squarepoint java 3 个类来实现魔板游戏的 整体功能 魔板游戏 2 2 3 开发环境 操作系统 microsoft windows xp 7 开发工具 jdk1 6 0 22 ultraedit 3 系统概要设计 3 1 系统的功能模块划分 在设计魔板游戏时 需要编写 3 个 java 源文件 puzzleframe java puzzlepad java squarepoint java 魔板游戏除了需要编写的上述 3 个 java 源文件所给出的类外 还需要 java 系统提供的一些重要的类 如 jmenuitem jbutton 和 jradiobutton 等类 魔板游 戏的总体功能图如图 3 1 所示 主界面 开始 选择级别 选择图像 数字玩法 图像玩法 初级 高级 图图 3 13 1 总体功能图总体功能图 3 1 23 1 2 puzzleframe java 类模块 puzzleframe 类负责创建魔板游戏的主窗口 该类含有 main 方法 程序从该 类开始 puzzleframe 类的成员变量中有 4 种重要类型的对象 puzzlepad jmenuitem jradiobutton 和 jbutton puzzleframe 类的主要成员的作 用将在后面的详细设计中阐述 puzzleframe 类主要成员变量 属性 和主要方法 java 程序设计课程设计报告 2010 3 如表 3 1 3 2 所示 成员变量描述变量类型名称 魔板 开始游戏的按钮 选择玩法 选择级别 puzzlepad jbutton jradiobutton jmenuitem 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 事件 构造方法 接口方法 魔板游戏 4 表表 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 所示 java 程序设计课程设计报告 2010 5 开始 魔板游戏开始界面 switch 改 变 游 戏 难 度 选初级 初 级 高 级 重新放置方块 改 变 游 戏 玩 法 选择数字 玩法 数字 玩法 图像 玩法 确定玩法 退出 结束 是否是否 图图 2 22 2 系统流程图系统流程图 魔板游戏 6 4 系统详细设计 4 1 运行效果 1 将三个 java 文件和图像文件保存到一个文件夹中 例如 c moban 将三 个 java 文件分别编译生成相应的字节码文件 class 然后 用 java 解释器运行主 类 c moban java puzzleframe 效果如图 4 1 4 2 所示 图 4 1 数字玩法主界面 图 4 2 图像玩法主界面 java 程序设计课程设计报告 2010 7 本程序实现的游戏分为初级和高级模式 可以在单机选择级别之后进行选择 级别模式 初级的话共分为 9 格魔板 一个为空 8 个魔板上下左右自由移动 直 至排列完成 高级的话分为 16 格魔板 一个为空 15 个魔板上下左右自由移动 直至排列完成 该游戏可分为数字玩法和图像玩法 在单击图像玩法或者数字玩 法之后可以进行相应的玩法选择 选择之后单击开始 如果玩家想重新开始 只 需要再次单击开始按钮即可 5 测试 5 1 测试方案 游戏难度级别设置为初级级别 进行测试 用 java 解释器运行主类 c moban java puzzleframe 5 2 测试结果 图 5 1 测试结果 魔板游戏 8 6 小结 这次我做的课题是 模板游戏 通过这次的课程设计 我不仅拓宽了自己 的知识面 还在实践过程中巩固和加深了自己所学的理论知识 使自己的技术素 质和实践能力有了进一步的提高 同时我的专业水平也有了很大的进步 同时 在软件开发方面也累积了不少经验 对 java 的知识重要性的认识更深 了 通过设计过程的锻炼 自己分析问题和解决问题的能力都得到了锻炼和提高 完善了自己的知识结构 加深了对所学知识的理解 这次课程设计完成后 体会颇多 在学与做的过程中 取长补短 不断学习 新的知识 吸取经验 达到进步的目的 在学与做的过程中自身的努力以及相关 图书资料的帮助 对 java 编程的理解也从能够使用提高到了熟练使用 对程序开 发的一般过程和对数据库知识的运用也有了进一步的了解 通过课程设计 我学习到不少的 java 编程语言的知识 但由于自己的理论知 识水平有限 实践知识和设计经验不足 在设计过程中难免存在一些问题 甚至 错误 这些我会在以后的工作学习和实践中加以改进和提高 通过这次课程设计使我获得了很多东西 其一编程的重要步骤是分析 分析 问题的本身和现实要求 分析过程中采用画流程图的方法能使我的思路特别清晰 拿到一个题目不要仅仅局限在一种思想上 要尽量的多尝试其他的做法 然后比 较 集各家之所长 拿出最优秀的程序来 java 程序设计课程设计报告 2010 9 参考文献参考文献 1 耿祥义 张跃平 java2 实用教程 第三版 m 北京 清华大学出版社 2006 2 耿祥义 java 课程设计 第三版 m 北京 清华大学出版社 2004 3 张跃平 java2 实用教程实验指导与习题解答 第三版 m 北京 清华大学 出版社 2004 魔板游戏 10 附附 录录 附录附录 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 java 程序设计课程设计报告 2010 11 数字玩法 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 随机排列图像 魔板游戏 12 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 java 程序设计课程设计报告 2010 13 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 魔板游戏 14 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 java 程序设计课程设计报告 2010 15 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 魔板游戏 16 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 java 程序设计课程设计报告 2010 17 画图像 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

温馨提示

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

最新文档

评论

0/150

提交评论