Java拼图程序报告_第1页
Java拼图程序报告_第2页
Java拼图程序报告_第3页
Java拼图程序报告_第4页
Java拼图程序报告_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

Java课程设计Java拼图程序目录程序介绍程序任务程序设计思想程序要求程序使用的基本方法遇到的问题程序界面对原有程序的改变程序流程图感想程序代码一.程序介绍:将一个图片分为15个部分并随机排列,游戏任务是将这15个部分还原成为原图片,游戏结束。二.程序任务:用鼠标拖动小图片进行拼接,将15个小图片还原成初始的左边,将这15个小图片拼成一幅完整的原始图片。三.程序设计思想:将一个大图片通过随机方法,分为15个有随机坐标的小图片,通过在游戏中不断移动图片,使其回到初始的坐标,当15个小图片都被还原为初始坐标时,游戏结束。四.程序要求:命令1:初始化主界面。管理屏幕显示。使用Graphics类。命令2:选择一张执行的图像。并产生随机数,确定图片摆放的随意性。getImage()需要指明图像路径和名称。并产生随机数,确定图片摆放的随意性。initgame()是自写函数,通过调用Math.random()产生随机数。命令3:鼠标事件的监听。addMouseListener(this); addMouseMotionListener(this);确立单击鼠标产生的事件,鼠标移动产生的事件,按下鼠标产生的事件,拖动鼠标产生的事件等等。命令4:改变坐标。通过拖动鼠标改变图片的位置。命令5:判断游戏是否结束。若通过改变是图片坐标和初始设置时一样则宣布游戏结束。五.程序使用的基本方法:Graphics类管理屏幕显示getImage()指明图像路径名称Math.random()产生随机数addMouseListener(this)设置鼠标监听器Image类导入图片MouseEvent类处理鼠标事件Point类转换坐标六.遇到的问题:缺省包importjava.awt.*;importjava.applet.*;importjava.awt.event.*;这个是指引入的是缺省包,但是我一开始把这个class建在package中,所以编译就出错了。解决方法:应该直接把这个class直接建在Javaproject中才能编译通过。载入图片pic[0]=getImage(getCodeBase(),"PICTURE0.JPG");getImage()方法是在Java小程序插入图片。getImage(getCodeBase()),getImage(getDocumentBase())方法基本相同,这个方法指出引用图片路径和名称。一开始一直不直到引用的图片应该放在哪里,导致程序运行时该出现图片的地方时一片空白。解决办法:getImage方法引用的图片应与这个程序.class文件放在一个文件夹中,图片才是真正被引用。计时器这个至今没有做出来,因为在写计时器的时候,不知道该从程序的哪里开始,哪里结束。单独的计时器程序可以运行,但是不会与已有的程序相结合。七.程序界面:八.对原有程序的改变:我目前只是改动了原有程序的表面,比如字体,颜色,界面大小,界面设置等等。并没有真正改变程序的核心。九.程序流程图:初始化界面结束选择图片获得原始图片移动拼图还原初始化界面结束选择图片获得原始图片移动拼图还原未获得感想就我目前的水平而言,要想完全独立的写一个程序很难很难。编程不是一个简单的东西,要多看多了解,勇于尝试,不怕犯错。错过之后再改反而记得更加清楚。有问题多问老师,多查资料,不要局限于自己,学会利用各种资源。解决一个问题的办法可能有许多种,不能局限于一个方法。要善于发现更好的方法。十一.程序代码:importjava.awt.*;importjava.applet.*;importjava.awt.event.*;publicclasspintuextendsApplet implementsMouseListener,MouseMotionListener{ privateImagepicture; privateGraphicsbuffer; privateImagepic[]; privateImageoff_pic[]; privateGraphicsoff_buf[]; privateImageoff_screen; privateGraphicsoff_buffer; privateImageoff_drag; privateGraphicsoff_drag_buf; privateintmap[][]; privateintran[]; privateintwidth=0; privateintheight=0; privateintlastx; privateintlasty; privateintlast_downx; privateintlast_downy; privateintstepx; privateintstepy; privatebooleanchoose; privatebooleanclick[][]; privatebooleanm_down; privatebooleanm_drag; privatebooleannot_redraw; privatebooleanable; Fontfont1,font2; //程序的初始化 publicvoidinit() { resize(800,640); pic=newImage[3]; off_pic=newImage[16]; off_buf=newGraphics[16]; map=newint[4][4]; ran=newint[15]; for(inta=0;a<16;a++) map[a/4][a%4]=a; for(inta=0;a<15;a++) ran[a]=a; click=newboolean[4][4]; MediaTrackertracker=newMediaTracker(this); //要载入的图片 pic[0]=getImage(getCodeBase(),"PICTURE0.JPG"); pic[1]=getImage(getCodeBase(),"PICTURE1.JPG"); pic[2]=getImage(getCodeBase(),"PICTURE2.JPG"); tracker.addImage(pic[0],0); tracker.addImage(pic[1],0); tracker.addImage(pic[2],0); try{ tracker.waitForID(0); }catch(InterruptedExceptione){} //设置字体 font1=newFont("GungsuhChe",Font.BOLD,60); font2=newFont("Georgia",Font.BOLD,48); width=800; height=640; //初始化主界面 initForm(); //添加鼠标监听事件 addMouseListener(this); addMouseMotionListener(this) ; } //面板初始化 voidinitForm() { this.setBackground(Color.pink); if(off_drag==null){ off_drag=createImage(width/4,height/4); off_drag_buf=off_drag.getGraphics(); } } //设置每一个图片面板初始化 publicvoidpaint(Graphicsg){ if(off_screen==null) { off_screen=createImage(width,height); off_buffer=off_screen.getGraphics(); } if(able){ off_buffer.setColor(Color.white); for(inta=0;a<4;a++) for(intb=0;b<4;b++) { if(map[a][b]!=15) off_buffer.drawImage(off_pic[map[a][b]],b*width/4,a*height/4,this); if(map[a][b]==15) off_buffer.fillRect(b*width/4,a*height/4,width/4,height/4); for(intc=0;c<2;c++) off_buffer.drawRect(b*width/4+c,a*height/4+c,width/4-c,height/4-c); if(click[a][b]) { off_buffer.setColor(Color.black); for(intd=0;d<2;d++) off_buffer.drawOval(b*width/4-d,a*height/4-d,width/4+d,height/4+d); off_buffer.setColor(Color.red); } } } else{ off_buffer.setColor(Color.pink); off_buffer.fillRect(0,0,800,640); off_buffer.setFont(font1); off_buffer.setColor(Color.black); off_buffer.drawImage(pic[2],30,50,250,180,this); off_buffer.drawImage(pic[0],370,160,250,180,this); off_buffer.drawImage(pic[1],60,270,250,180,this); off_buffer.drawString("ChooseOne!",320,100); } g.drawImage(off_screen,0,0,this); } publicvoidrepaint(){ paint(this.getGraphics()); } //单击鼠标时产生的事件 publicvoidmouseClicked(MouseEventevt){} //鼠标进入某个区域时产生的事件 publicvoidmouseEntered(MouseEventevt){} //鼠标退出某个区域时产生的事件 publicvoidmouseExited(MouseEventevt){} //移动鼠标时产生的事件 publicvoidmouseMoved(MouseEventevt){ if(!able){ Pointpoint; point=evt.getPoint(); if(point.x>30&&point.x<280&&point.y>50&&point.y<230) { off_buffer.setColor(Color.pink); off_buffer.fillRect(0,0,800,640); off_buffer.setFont(font1); off_buffer.drawImage(pic[2],25,45,250,180,this); off_buffer.drawImage(pic[0],370,160,250,180,this); off_buffer.drawImage(pic[1],60,270,250,180,this); off_buffer.setColor(Color.black); off_buffer.fillRect(30,225,250,5); off_buffer.fillRect(275,50,5,176); off_buffer.setColor(Color.black); off_buffer.drawString("picture2!",320,100); this.getGraphics().drawImage(off_screen,0,0,this); } elseif(point.x>370&&point.x<620&&point.y>160&&point.y<340) { off_buffer.setColor(Color.pink); off_buffer.fillRect(0,0,800,640); off_buffer.setFont(font1); off_buffer.drawImage(pic[2],30,50,250,180,this); off_buffer.drawImage(pic[0],365,155,250,180,this); off_buffer.drawImage(pic[1],60,270,250,180,this); off_buffer.setColor(Color.black); off_buffer.fillRect(370,335,250,5); off_buffer.fillRect(615,160,5,175); off_buffer.setColor(Color.black); off_buffer.drawString("picture0!",320,100); this.getGraphics().drawImage(off_screen,0,0,this); } elseif(point.x>60&&point.x<310&&point.y>270&&point.y<450) { off_buffer.setColor(Color.pink); off_buffer.fillRect(0,0,800,640); off_buffer.setFont(font1); off_buffer.drawImage(pic[2],30,50,250,180,this); off_buffer.drawImage(pic[0],370,160,250,180,this); off_buffer.drawImage(pic[1],55,265,250,180,this); off_buffer.setColor(Color.black); off_buffer.fillRect(60,445,250,5); off_buffer.fillRect(305,270,5,175); off_buffer.setColor(Color.black); off_buffer.drawString("picture1!",320,100); this.getGraphics().drawImage(off_screen,0,0,this); } else{ repaint(); } } } //拖动鼠标时产生的事件 publicvoidmouseDragged(MouseEventevt){ if(!able) return; if(m_down){ Pointpoint; Pointtemp; point=evt.getPoint(); m_drag=true; repaint(); Graphicsdavid=this.getGraphics(); if(!not_redraw) off_drag_buf.drawImage(off_pic[map[last_downy][last_downx]],0,0,this); david.drawImage(off_drag,point.x+stepx,point.y+stepy,this); not_redraw=true; } } //按下鼠标时产生的事件 publicvoidmousePressed(MouseEventevt){ if(!able) return; Pointpoint; Pointtemp; point=evt.getPoint(); if(getarea(point)==point) return; else{ temp=getarea(point); if(!m_down){ if(map[temp.y][temp.x]==15) return; else{ m_down=true; last_downx=temp.x; last_downy=temp.y; stepx=temp.x*200-point.x; stepy=temp.y*160-point.y; } } elseif(m_down){ m_down=false; } } }//放开鼠标时产生的事件 publicvoidmouseReleased(MouseEventevt){ if(able){ if(m_drag){ m_down=false;m_drag=false;not_redraw=false; Pointpoint; Pointtemp; point=evt.getPoint(); if(getarea(point)==point) { repaint(); return;} else{ temp=getarea(point); if(map[temp.y][temp.x]!=15){ repaint();return;} else{ if(Math.abs(last_downx-temp.x)==1&&last_downy-temp.y==0) { intdavid; david=map[last_downy][last_downx]; map[last_downy][last_downx]=15; map[temp.y][temp.x]=david; if(wingame()) able=false; repaint(); return; } elseif(last_downx-temp.x==0&&Math.abs(last_downy-temp.y)==1) { intdavid; david=map[last_downy][last_downx]; map[last_downy][last_downx]=15; map[temp.y][temp.x]=david; if(wingame()) able=false; repaint(); return; } else{repaint();return;} } } } } else{ Pointpoint; point=evt.getPoint(); if(point.x>30&&point.x<280&&point.y>50&&point.y<230) {able=true; initmap(2);} if(point.x>370&&point.x<620&&point.y>160&&point.y<340) {able=true;initmap(0);} if(point.x>60&&point.x<310&&point.y>270&&point.y<450) {able=true;initmap(1);} elsereturn; } } //转换坐标 publicPointgetarea(Pointpoint){ if(point.x>800||point.y>640) returnpoint; elsereturnpoint=newPoint(poin

温馨提示

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

评论

0/150

提交评论