Java拼图程序报告Word文件下载.docx
- 文档编号:8199794
- 上传时间:2023-05-10
- 格式:DOCX
- 页数:19
- 大小:353.28KB
Java拼图程序报告Word文件下载.docx
《Java拼图程序报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《Java拼图程序报告Word文件下载.docx(19页珍藏版)》请在冰点文库上搜索。
鼠标事件的监听。
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.计时器
这个至今没有做出来,因为在写计时器的时候,不知道该从程序的哪里开始,哪里结束。
单独的计时器程序可以运行,但是不会与已有的程序相结合。
七.程序界面:
八.对原有程序的改变:
我目前只是改动了原有程序的表面,比如字体,颜色,界面大小,界面设置等等。
并没有真正改变程序的核心。
九.程序流程图:
就我目前的水平而言,要想完全独立的写一个程序很难很难。
编程不是一个简单的东西,要多看多了解,勇于尝试,不怕犯错。
错过之后再改反而记得更加清楚。
有问题多问老师,多查资料,不要局限于自己,学会利用各种资源。
解决一个问题的办法可能有许多种,不能局限于一个方法。
要善于发现更好的方法。
十一.程序代码:
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;
15;
ran[a]=a;
click=newboolean[4][4];
MediaTrackertracker=newMediaTracker(this);
//要载入的图片
pic[0]=getImage(getCodeBase(),"
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;
4;
for(intb=0;
b<
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<
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.drawString("
picture2!
this.getGraphics().drawImage(off_screen,0,0,this);
}
elseif(point.x>
370&
620&
160&
340)
off_buffer.setColor(Color.pink);
off_buffer.drawImage(pic[2],30,50,250,180,this);
off_buffer.drawImage(pic[0],365,155,250,180,this);
off_buffer.fillRect(370,335,250,5);
off_buffer.fillRect(615,160,5,175);
picture0!
}
60&
310&
270&
450)
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);
picture1!
}
else{
repaint();
}
//拖动鼠标时产生的事件
publicvoidmouseDragged(MouseEventevt){
able)
return;
if(m_down){
Pointtemp;
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){
Pointpoint;
Pointtemp;
point=evt.getPoint();
if(getarea(point)==point)
else{
temp=getarea(point);
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;
if(getarea(point)==point)
{repaint();
return;
}
else{
temp=getarea(point);
if(map[temp.y][temp.x]!
=15){
repaint();
return;
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)
else{repaint();
return;
{able=true;
initmap
(2);
initmap(0);
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;
off_pic[a]=createImage(width/4,height/4);
off_buf[a]=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 拼图 程序 报告