Java拼图程序报告.docx

上传人:b****4 文档编号:6765995 上传时间:2023-05-10 格式:DOCX 页数:19 大小:353.28KB
下载 相关 举报
Java拼图程序报告.docx_第1页
第1页 / 共19页
Java拼图程序报告.docx_第2页
第2页 / 共19页
Java拼图程序报告.docx_第3页
第3页 / 共19页
Java拼图程序报告.docx_第4页
第4页 / 共19页
Java拼图程序报告.docx_第5页
第5页 / 共19页
Java拼图程序报告.docx_第6页
第6页 / 共19页
Java拼图程序报告.docx_第7页
第7页 / 共19页
Java拼图程序报告.docx_第8页
第8页 / 共19页
Java拼图程序报告.docx_第9页
第9页 / 共19页
Java拼图程序报告.docx_第10页
第10页 / 共19页
Java拼图程序报告.docx_第11页
第11页 / 共19页
Java拼图程序报告.docx_第12页
第12页 / 共19页
Java拼图程序报告.docx_第13页
第13页 / 共19页
Java拼图程序报告.docx_第14页
第14页 / 共19页
Java拼图程序报告.docx_第15页
第15页 / 共19页
Java拼图程序报告.docx_第16页
第16页 / 共19页
Java拼图程序报告.docx_第17页
第17页 / 共19页
Java拼图程序报告.docx_第18页
第18页 / 共19页
Java拼图程序报告.docx_第19页
第19页 / 共19页
亲,该文档总共19页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

Java拼图程序报告.docx

《Java拼图程序报告.docx》由会员分享,可在线阅读,更多相关《Java拼图程序报告.docx(19页珍藏版)》请在冰点文库上搜索。

Java拼图程序报告.docx

Java拼图程序报告

 

Java

 

Java拼图程序

 

目录

1.程序介绍

2.程序任务

3.程序设计思想

4.程序要求

5.程序使用的基本方法

6.遇到的问题

7.程序界面

8.对原有程序的改变

9.程序流程图

10.感想

11.程序代码

 

一.程序介绍:

将一个图片分为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类

转换坐标

 

六.遇到的问题:

1.缺省包

importjava.awt.*;

importjava.applet.*;

importjava.awt.event.*;

这个是指引入的是缺省包,但是我一开始把这个class建在package中,所以编译就出错了。

解决方法:

应该直接把这个class直接建在Javaproject中才能编译通过。

2.载入图片

pic[0]=getImage(getCodeBase(),"PICTURE0.JPG");

getImage()方法是在Java小程序插入图片。

getImage(getCodeBase()),getImage(getDocumentBase())方法基本相同,这个方法指出引用图片路径和名称。

一开始一直不直到引用的图片应该放在哪里,导致程序运行时该出现图片的地方时一片空白。

解决办法:

getImage方法引用的图片应与这个程序.class文件放在一个文件夹中,图片才是真正被引用。

3.计时器

这个至今没有做出来,因为在写计时器的时候,不知道该从程序的哪里开始,哪里结束。

单独的计时器程序可以运行,但是不会与已有的程序相结合。

 

七.程序界面:

 

 

八.对原有程序的改变:

我目前只是改动了原有程序的表面,比如字体,颜色,界面大小,界面设置等等。

并没有真正改变程序的核心。

 

九.程序流程图:

 

10.感想

就我目前的水平而言,要想完全独立的写一个程序很难很难。

编程不是一个简单的东西,要多看多了解,勇于尝试,不怕犯错。

错过之后再改反而记得更加清楚。

有问题多问老师,多查资料,不要局限于自己,学会利用各种资源。

解决一个问题的办法可能有许多种,不能局限于一个方法。

要善于发现更好的方法。

 

十一.程序代码:

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(point.x/200,point.y/160);

}

//图片初始化

voidinitmap(intstage){

picture=createImage(width,height);

buffer=picture.getGraphics();

buffer.drawImage(pic[stage],0,0,800,640,this);

for(inta=0;a<15;a++)

{

off_pic[a]=createImage(width/4,height/4);

off_buf[a]=

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 计算机软件及应用

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2