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