Java面向对象设计利用GUI技术开发小游戏程序。
*?我是这么想的:
*?因为无法将画面分成15块,所以放在16块的区域内(至少很难实现)。
*?所以把原图的一部分处理成白色,比较好处理。
*/
进口?Java . awt . graphics;
进口?Java . awt . gridlayout;
进口?Java . awt . image;
进口?Java . awt . media tracker;
进口?Java . awt . event . mouse event;
进口?Java . awt . event . mouse listener;
进口?Java . awt . image . buffered image;
进口?Java . util . hashset;
进口?Java . util . iterator;
进口?Java . util . random;
进口?Java . util . set;
进口?javax . print . attribute . standard . media;
进口?javax . swing . abstract button;
进口?javax . swing . icon;
进口?javax . swing . image icon;
进口?javax . swing . jbutton;
进口?javax . swing . jframe;
公共?班级?品途?延伸?JFrame?器物?鼠标监听器{
int?currx,curry,cx,cy;
形象?img,whiteimg
图标?img 1;
图标?currIcon
BufferedImage?bimg,白色;
BufferedImage[][]?subimg
int?宽度、高度;
JButton[][]?JB;
公共?Pintu(){
this.setLayout(新?GridLayout(4,4));
img=this.getToolkit()。getImage(" E:\ \ 1 . jpg ");
whiteimg=this.getToolkit()。getImage(" E:\ \ 2 . jpg ");
MediaTracker?我=新?MediaTracker(这个);
me.addImage(img,?0);
试试?{
me . waitforall(0);
}?接住?(中断异常?e)?{
//?托多?自动生成?接住?块
e . printstacktrace();
}
width = img . getwidth(this);
height = img . get height(this);
bimg=new?BufferedImage(宽度,高度,BufferedImage。TYPE _ INT _ ARGB);
图形?BG = bimg . get graphics();
bg.drawImage(img,0,0,this);
subimg=new?buffered image[4][4];
int?一个[]?=?新的?int[4];?
为了什么?(int?我?=?0;?我?& lt?a .长度;?i++)?{?
甲[我]?=?(int)?(Math.random()?*?4)?;?
为了什么?(int?k?=?0;?k?& lt?我;?k++)?{?
如果?(甲[我]?==?a[k])?{?
I-;?
继续;?
}?
}?
}?
for(int?x = 0;x & lt4;x++){
for(int?y = 0;y & lt4;y++)
subimg[a[x]][a[y]]= bimg . getsubimage(width * x/4,?身高*y/4,?宽度/4,?身高/4);
}
currx = a[0];库里= a[0];
white = subimg[currx][curry];
jb =新?JButton[4][4];
for(int?I = 0;我& lt4;i++){
for(int?j = 0;j & lt4;j++){
jb[i][j]=new?JButton();
jb[i][j]。addmouse listener((mouse listener)?这个);
this . add(JB[I][j]);
jb[i][j]。setIcon(新?image icon(subimg[I][j]);
}
}
setSize(img.getWidth(this),img . getheight(this));
set visible(true);
setDefaultCloseOperation(EXIT _ ON _ CLOSE);
}
/*公共?作废?油漆(图形?g){
g.drawImage(subimg[0],0,0,this);
}*/
公共?静电?作废?main(String[]?args)?{
新的?pintu();?
}
公共?作废?mouseClicked(MouseEvent?e)?{
?
for(int?I = 0;我& lt4;i++)
for(int?j = 0;j & lt4;j++)
if((abstract button)e . getsource())= = JB[I][j]){ CX = I;cy = j;}
if((CX = = currx)& amp;& amp(((cy-curry)= = 1)| |((curry-cy)= = 1)))|((cy = = curry)& amp;& amp((((CX-currx)= = 1)| |((currx-CX)= = 1))))
{
system . out . println("+CX+")?+cy);
currIcon=jb[cx][cy]。getIcon();
jb[cx][cy]。setIcon(新?ImageIcon(白色));
jb[currx][curry]。setIcon(currIcon);
currx = cx库里= cy
}
}
@覆盖
公共?作废?mouse enter(mouse event?e)?{
//?托多?自动生成?方法?烟蒂
}
@覆盖
公共?作废?mouseExited(MouseEvent?e)?{
//?托多?自动生成?方法?烟蒂
}
@覆盖
公共?作废?mousePressed(MouseEvent?e)?{
//?托多?自动生成?方法?烟蒂
}
@覆盖
公共?作废?mouseReleased(MouseEvent?e)?{
//?托多?自动生成?方法?烟蒂
}
}
那是你说的。。。。效果图如下: