Java拼图课程设计Word文档格式.docx
- 文档编号:19919897
- 上传时间:2023-01-12
- 格式:DOCX
- 页数:11
- 大小:558KB
Java拼图课程设计Word文档格式.docx
《Java拼图课程设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《Java拼图课程设计Word文档格式.docx(11页珍藏版)》请在冰豆网上搜索。
MyEclipse6.5
三、程序代码:
ImagePieceTogether.java
importjava.awt.*;
importjavax.swing.*;
importjava.awt.event.*;
publicclassImagePieceTogetherextendsJFrameimplementsActionListener{//操作实现拼图的游戏的类
PanelOfImageimagePanel;
//声明图片面板
JPanelpanelOfSouth,panelOfLook;
//声明南侧面板和查看面板
ButtonstartButton;
//声明开始按钮
ButtonlookButton;
//声明查看按钮
ButtonchooseButton;
//选择按钮
Containercontainer;
//容器,得到内容面板
publicstaticvoidmain(String[]args){//java程序主入口处
newImagePieceTogether();
//实例化对象
}
publicImagePieceTogether(){//构造方法进行初始化
container=this.getContentPane();
//获得内容面板
startButton=newButton("
开始"
);
//创建开始按钮
startButton.addActionListener(this);
//添加监听事件
lookButton=newButton("
查看"
lookButton.addActionListener(this);
chooseButton=newButton("
选择"
chooseButton.addActionListener(this);
panelOfLook=newJPanel();
//创建查看面板
panelOfLook.setLayout(null);
//设置布局
Iconicon=newImageIcon("
picture/pic_"
+PanelOfImage.currentPID+"
.jpg"
//创建图标
JLabellabel=newJLabel(icon);
//创建图标标签
label.setBounds(0,0,1215,717);
//设置标签的位置
panelOfLook.add(label);
//添加标签
panelOfSouth=newJPanel();
//创建南侧面板
panelOfSouth.setBackground(Color.black);
//设置背景颜色
panelOfSouth.add(startButton);
//添加开始按钮
panelOfSouth.add(lookButton);
//添加查看按钮
panelOfSouth.add(chooseButton);
//添加选择按钮
imagePanel=newPanelOfImage();
//创建图片面板
container.add(imagePanel,BorderLayout.CENTER);
container.add(panelOfSouth,BorderLayout.SOUTH);
this.setTitle("
Puzzle"
//设置标题
this.setLocation(100,30);
//设置位置
this.setSize(1220,780);
//设置大小
this.setResizable(false);
//设置是否可以通过某个用户操作调整
this.setVisible(true);
//设置可视
this.setDefaultCloseOperation(3);
//设置默认关闭操作
publicvoidactionPerformed(ActionEventevent){//按钮触发的事件
Buttonbutton=(Button)event.getSource();
//获得事件按钮源
if(button==startButton){//如果是开始按钮
imagePanel.breakRank();
//调用图片方格打乱方法
}elseif(button==lookButton){//如果是查看事件
if(button.getLabel()=="
){//如果按钮标签为"
container.remove(imagePanel);
//容器移除图片面板
container.add(panelOfLook);
//容器添加查看标签
panelOfLook.updateUI();
//不用调整大小就可以出现新增删的组件
container.repaint();
//重绘
button.setLabel("
返回"
//设置按钮标签
}else{
container.remove(panelOfLook);
//容器移除查看面板
container.add(imagePanel);
//容器添加图片面板
}elseif(button==chooseButton){//如果是选择按钮
Choicechoice=newChoice();
//创建选择器
choice.add("
--Darius--"
//添加列表项
--Yasuo--"
--Riven--"
--Pantheon--"
--Lux--"
inti=JOptionPane.showConfirmDialog(this,choice,"
选择图片"
JOptionPane.OK_CANCEL_OPTION);
//弹出对话框
if(i==JOptionPane.YES_OPTION){//选择对话框的确定按钮
PanelOfImage.currentPID=choice.getSelectedIndex()+1;
//获得列表项的编号
imagePanel.reLoadPictrue();
//图片重载
//获得图片图标
//根据图标设置标签
//设置标签的方位
panelOfLook.removeAll();
panelOfLook.repaint();
}
PanelOfImage.java
classPaneButtonextendsJButton{//继承按钮类实现加图片的方格
PaneButton(Iconicon){//构造方法进行初始化,设置图标
super(icon);
this.setSize(405,239);
//设置每个方格的大小
publicvoidmove(Stringdirection,intsleep){//方格的移动
if(direction=="
UP"
){//方格向上移动
this.setLocation(this.getBounds().x,this.getBounds().y-239);
}elseif(direction=="
DOWN"
){//方格向下移动
this.setLocation(this.getBounds().x,this.getBounds().y+239);
LEFT"
){//方格向左移动
this.setLocation(this.getBounds().x-405,this.getBounds().y);
}else{//方格向右移动
this.setLocation(this.getBounds().x+405,this.getBounds().y);
publicclassPanelOfImageextendsJPanelimplementsMouseListener{//图片面板加载方格对象
booleanhasAddActionListener=false;
//设置方格动作监听器的标识
PaneButtonpane[];
//声明方格
RectanglenullPanel;
//声明空方格,没有添图片
publicstaticintcurrentPID=1;
//当前选择的图片编号
publicPanelOfImage(){//构造方法进行初始化
this.setLayout(null);
//设置面板的布局为空
this.setSize(810,478);
//设置面板的大小
nullPanel=newRectangle(810,478,405,239);
//设置空方格的位置
pane=newPaneButton[9];
//创建九个方格
Iconicon;
//声明图标
for(inti=0;
i<
3;
i++){//循环为每个方格加载图片
for(intj=0;
j<
j++){//循环列
icon=newImageIcon("
+currentPID+"
_"
+(i*3+j+1)+"
pane[i*3+j]=newPaneButton(icon);
//创建方格在方格中加载图片
pane[i*3+j].setLocation(j*405,i*239);
//设置方格的位置
this.add(pane[i*3+j]);
//面板添加方格
this.remove(pane[8]);
//移除多余的方格
publicbooleanisFinish(){//判断是否拼凑成功
8;
i++){
intx=pane[i].getBounds().x;
inty=pane[i].getBounds().y;
if(y/239*3+x/405!
=i)
returnfalse;
returntrue;
publicvoidreLoadPictrue(){//重新加载图片在重新选择图片时
j++){
pane[i*3+j].setIcon(icon);
publicvoidbreakRank(){//方格打乱重新排序
while(pane[0].getBounds().x<
=405&
&
pane[0].getBounds().y<
=239){//当第一个方格距左上角近时
intx=nullPanel.getBounds().x;
inty=nullPanel.getBounds().y;
intdirection=(int)(Math.random()*4);
//随机产生一个数字对应空方格的上下左右移动
if(direction==0){//空方格左移动,与左侧方格互换位置,左侧方格右移动
x-=405;
//空主格左移
if(test(x,y)){
j++){//循环寻打左侧的按钮
if((pane[j].getBounds().x==x)
&
(pane[j].getBounds().y==y)){//依次寻找左侧的按钮
pane[j].move("
RIGHT"
405);
//方格向右移动一格
nullPanel.setLocation(x,y);
//重新设置空方格的位置
break;
//跳出循环
}elseif(direction==1){//空方格右移动
x+=405;
(pane[j].getBounds().y==y)){
//方格向左移动一格
}elseif(direction==2){//空方格上移动
y-=239;
239);
//方格向下移动一格
}else{//空方格下移动
y+=239;
//方格向上移动一格
if(!
hasAddActionListener)//判断是否添加动作事件
i++){//循环为每个方格添加动作事件
pane[i].addMouseListener(this);
hasAddActionListener=true;
privatebooleantest(intx,inty){//检测方格是否在指定的范围内移动
if((x>
=0&
x<
=405)||(y>
y<
=239))
else
publicvoidmouseClicked(MouseEventarg0){//鼠标点击时调用
publicvoidmouseEntered(MouseEventarg0){//鼠标进入组件区域时调用
publicvoidmouseExited(MouseEventarg0){//控制鼠标不能移动出面板的范围
publicvoidmouseReleased(MouseEventarg0){//鼠标按键在组件上释放时调用
publicvoidmousePressed(MouseEventevent){//鼠标按下时调用
PaneButtonbutton=(PaneButton)event.getSource();
//获得鼠标按的方格按钮
intx1=button.getBounds().x;
//获得该方格按钮的横坐标
inty1=button.getBounds().y;
//获得该方格按钮的纵坐标
intnullDir_X=nullPanel.getBounds().x;
//得到空方格的横坐标
intnullDir_Y=nullPanel.getBounds().y;
//得到空方格的纵坐标
if(x1==nullDir_X&
y1-nullDir_Y==239)//进行比较果满足条件则交换
button.move("
//方格向上移动
elseif(x1==nullDir_X&
y1-nullDir_Y==-239)
//方格向下移动
elseif(x1-nullDir_X==405&
y1==nullDir_Y)
//方格向左移动
elseif(x1-nullDir_X==-405&
//方格向右移动
return;
nullPanel.setLocation(x1,y1);
this.repaint();
//重新加载
if(this.isFinish()){//进行是否完成的判断
JOptionPane.showMessageDialog(this,"
Congratulations!
"
i++){//循环撤消鼠标事件
pane[i].removeMouseListener(this);
hasAddActionListener=false;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 拼图 课程设计