资源描述:
《Java拼图游戏面向对象报告.doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、面向对象课程设计报告姓名Name学号StudentNo.20137045班级Class代码总行数CodeLines222项目名称Item1.实验目的本次课程设计旨在通过一个完整项目的开发,巩固面向对象程序设计、软件工程、数据库技术等课程的相关知识,加深学生对Java语言的理解,尤其是对面向对象思想、Java编码规范、JDBC访问数据库的理解,使学生进一步掌握环境构建、代码编写、文档阅读与理解、文档编写、软件测试、发行与部署等技能,进一步提高学生的学习能力、理解能力、表达能力及沟通能力。2.实验内容本次课程设计选定的实验项目是使用JAVA语言编写一个拼图游戏并实现其基本功能。不用自己手动切
2、割图片,再进行加载。而是应用类方法在内存中进行图片切割和加载,方便了用户的使用。利用了Graphics中的publicabstractbooleandrawImage()方法把img中由(sx1,sy1)(sx2,sy2)指定的矩形区域画到observer中由(dx1,dy1)(dx2,dy2)指定的矩形区域内进行构思拼图游戏的具体实现。导入了一个可播放背景音乐的jar包,在玩游戏时可以欣赏背景音乐。-11-面向对象课程设计报告3.类图-11-面向对象课程设计报告4.运行界面图1、游戏初始界面图2、游戏运行界面-11-面向对象课程设计报告图3、拼图成功界面-11-面向对象课程设计报告5.
3、关键代码(要求在类的定义以及方法定义的前面给出相关描述信息)//定义一个Pintu类publicclassJpgsawextendsJFrame{privateImageimage,buff;//原始图片,缓存图片privateint[][]map={{0,1,2},{3,4,5},{6,7,8}};//定义数组map,给分割后的图片标号privatePointpoint=newPoint(2,2);//记录第九块图片位置privateintsx;//分割后每一个图片的宽度privateintsy;//分割后每一个图片的高度privateCanvascanvas;//加载图片容器,定义可
4、以显式定位子元素使用坐标是相对Canvas区域的区域,绘制图形privateGraphicsgs;//gs画出Canvas图片坐标privateGraphicsgb;//gb画出buff图像privatebooleanisRunning=false;//游戏是否正在进行privateJButtonstart=newJButton("开始新的游戏");//按钮1privateJButtonshow=newJButton("显示正确图片");//按钮2privateJTextAreashowStep=newJTextArea("显示步骤");//设置步骤显示privateJPanelpane
5、l=newJPanel();//一般轻量级面板容器,装在上面2个按钮privateintsteps=0;//记录移动的步骤publicJpgsaw(Stringtitle){//构造方法,初始化变量super(title);//调用了当前类Jpgsaw的父类JFrame的构造方法try{//异常抛出image=ImageIO.read(newFile("gg.jpg"));//装载图片}catch(IOExceptione){//捕获自定义的异常e.printStackTrace();}initScreen();//用此方法来初始化canvas,由于canvas初始化较复杂,所以单独写一
6、个方法buff=newBufferedImage(715,381,BufferedImage.TYPE_INT_BGR);//Image的一个子类,BufferedImage生成的图片在内存里有一个图像缓冲区,利用这个缓冲区我们可以很方便的操作这个图片gb=buff.getGraphics();//存在于Image类中,存在于缓冲器中的图片,设置坐标sx=image.getWidth(this)/3;//图片分割后每一个图片的宽度sy=image.getHeight(this)/3;//图片分割后每一个图片的高度setLayout(newBorderLayout());//设置此布局方法
7、,加入控件add(panel,BorderLayout.SOUTH);//布置容器的边框布局,它可以对容器组件进行安排,并调整其大小add(canvas,BorderLayout.CENTER);panel.setLayout(newGridLayout(1,4));-11-面向对象课程设计报告//把组件按指定的几行几列分开,添加其他组件时,会按添加的顺序挨个添加到该组件上panel.add(start);panel.add(sho