java拼图游戏完整代码文档格式.docx
- 文档编号:15719943
- 上传时间:2022-11-15
- 格式:DOCX
- 页数:16
- 大小:18.80KB
java拼图游戏完整代码文档格式.docx
《java拼图游戏完整代码文档格式.docx》由会员分享,可在线阅读,更多相关《java拼图游戏完整代码文档格式.docx(16页珍藏版)》请在冰豆网上搜索。
publicCell(Stringtext,Iconicon){
super(text,icon);
this.setHorizontalTextPosition(CENTER);
//设置文字水平居中显示
this.setVerticalTextPosition(CENTER);
//设置文字垂直居中显示
//
publicvoidmove(Stringdirection){
switch(direction){
case"
UP"
:
this.setLocation(this.getBounds().x,this.getBounds().y-150);
break;
DOWN"
this.setLocation(this.getBounds().x,this.getBounds().y+150);
LEFT"
this.setLocation(this.getBounds().x-150,this.getBounds().y);
RIGHT"
this.setLocation(this.getBounds().x+150,this.getBounds().y);
default:
}
}
//PictureCanvas.java
importjava.awt.Rectangle;
importjava.awt.event.MouseEvent;
importjava.awt.event.MouseListener;
importjavax.swing.ImageIcon;
importjavax.swing.JOptionPane;
importjavax.swing.JPanel;
*拼图类
publicclassPictureCanvasextendsJPanelimplementsMouseListener{
//静态变量
publicstaticintpictureID=1;
//图片ID
publicstaticintstepNum=0;
//步数
privateCell[]cell;
privatebooleanhasAddActionListener=false;
//表示是否为小方格添加了点击监听,有为true
privateRectanglenullCell;
//构造方法
publicPictureCanvas(){
initCanvas();
//初始化
publicvoidinitCanvas(){
//设置拼图区的位置
this.setLayout(null);
//帧布局
//创建12个小方格,并添加到拼图区
cell=newCell[12];
for(inti=0;
i<
4;
i++){
for(intj=0;
j<
3;
j++){
//加载图片
intnum=i*3+j;
ImageIconicon=newImageIcon("
picture/"
+pictureID+"
_"
+(num+1)+"
.gif"
);
//创建图片小方格
cell[num]=newCell(icon);
//指定显示位置
cell[num].setLocation(150*j+20,i*150+20);
//把图片小方格添加到拼图区
this.add(cell[num]);
}
//删除第12个小方格
this.remove(cell[11]);
nullCell=newRectangle(320,470,150,150);
hasAddActionListener=false;
//重新加载图片,并添加数字提示
publicvoidreloadPictureAddNumber(){
cell[num].setIcon(icon);
cell[num].setText(num+1+"
"
cell[num].setVerticalTextPosition(getY()/2);
cell[num].setHorizontalTextPosition(getX()/2);
//重新加载图片,并清除数字提示
publicvoidreloadPictureClearNumber(){
cell[num].setText("
//start对小方格重新排序
publicvoidstart(){
//如果没有给小方格添加监听,则添加监听
if(!
hasAddActionListener){
for(inti=0;
i<
11;
cell[i].addMouseListener(this);
hasAddActionListener=true;
//当第一个小方格离左上角比较近的话,进行空方格与就近方格的随机交换
while(cell[0].getBounds().x<
=170&
&
cell[0].getBounds().y<
=170){
//获取空方格的位置
intnullX=nullCell.getBounds().x;
intnullY=nullCell.getBounds().y;
//随机产生一个方向,进行空方格的移动互换
//产生0-3之间的随机数,代表交换移动方向
intdirection=(int)(Math.random()*4);
switch(direction){
case0:
//空方格向左交换移动,原左侧方格向右移动
nullX-=150;
cellMove(nullX,nullY,"
break;
case1:
//空方格向右交换移动,原右侧方格向左移动
nullX+=150;
cellMove(nullX,nullY,"
case2:
//空方格向上交换移动,原上方方格向下移动
nullY-=150;
case3:
//空方格向下交换移动,原下方方格向上移动
nullY+=150;
privatevoidcellMove(intnullX,intnullY,Stringdirection){
for(inti=0;
if(cell[i].getBounds().x==nullX&
cell[i].getBounds().y==nullY){
//当前方格移动
cell[i].move(direction);
//空方格移动(nullX,nullY)
nullCell.setLocation(nullX,nullY);
@Override
publicvoidmouseClicked(MouseEvente){
publicvoidmousePressed(MouseEvente){
//获取当前点击的小方格
Cellbutton=(Cell)e.getSource();
//获取所点击方格的x,y
intclickX=button.getBounds().x;
intclickY=button.getBounds().y;
//获取空方格的x,y
intnullX=nullCell.getBounds().x;
intnullY=nullCell.getBounds().y;
//比较如果满足条件,则互换位置
if(clickX==nullX&
clickY-nullY==150){//点击为空方格下方方格
button.move("
}elseif(clickX==nullX&
clickY-nullY==-150){//点击为空方格上方方格
}elseif(clickX-nullX==150&
clickY==nullY){//点击为空方格右方方格
}elseif(clickX-nullX==-150&
clickY==nullY){//点击为空方格左方方格
}else{
return;
//更新空方格位置
nullCell.setLocation(clickX,clickY);
//拼图区重新绘制
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 拼图游戏 完整 代码
![提示](https://static.bdocx.com/images/bang_tan.gif)