java拼图游戏设计报告Word下载.docx

上传人:b****5 文档编号:18730449 上传时间:2022-12-31 格式:DOCX 页数:17 大小:534.41KB
下载 相关 举报
java拼图游戏设计报告Word下载.docx_第1页
第1页 / 共17页
java拼图游戏设计报告Word下载.docx_第2页
第2页 / 共17页
java拼图游戏设计报告Word下载.docx_第3页
第3页 / 共17页
java拼图游戏设计报告Word下载.docx_第4页
第4页 / 共17页
java拼图游戏设计报告Word下载.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

java拼图游戏设计报告Word下载.docx

《java拼图游戏设计报告Word下载.docx》由会员分享,可在线阅读,更多相关《java拼图游戏设计报告Word下载.docx(17页珍藏版)》请在冰豆网上搜索。

java拼图游戏设计报告Word下载.docx

选择图片

查看图片

本拼图游戏,运用了Java2中的图形处理技术和消息响应技术。

通过图形技术,实现图片的导入和分割。

通过消息响应机制,使程序可以响应用户的鼠标操作,进行拼图游戏的操作。

这个游戏主要分为四个模块,分别是游戏开始、查看图片、选择图片和退出游戏。

这四个摸块的功能各不一样,玩家如果在游戏过程中感觉拼图小块之间的接合不明显,玩家可以点击“查看”按钮来浏览拼图完成的效果图,从而使得游戏不会无从下手;

玩家如果觉得当前拼图的画面不满意可以点击“选择”图片按钮来更换图片,或者想更改拼图的画面,玩家可以进入游戏文件夹进行更换图片文件,但是需要注意的是图片需要有格式,同时还需要将所要更改的图片切割成大小相同的九个小块,具体就不详细说了,游戏文件夹中会给大家附一个.txt文件,供大家更换图片使用,从而提高玩家乐趣。

六、主要功能程序段

importjava.awt.Rectangle;

//引入类

importjava.awt.event.*;

importjavax.swing.*;

classPaneButtonextendsJButton{//继承按钮类实现加图片的方格

PaneButton(Iconicon){//构造方法进行初始化,设置图标

super(icon);

this.setSize(100,100);

//设置每个方格的大小

}

publicvoidmove(Stringdirection,intsleep){//方格的移动

if(direction=="

UP"

){//方格向上移动

this.setLocation(this.getBounds().x,this.getBounds().y-100);

}elseif(direction=="

DOWN"

){//方格向下移动

this.setLocation(this.getBounds().x,this.getBounds().y+100);

LEFT"

){//方格向左移动

this.setLocation(this.getBounds().x-100,this.getBounds().y);

}else{//方格向右移动

this.setLocation(this.getBounds().x+100,this.getBounds().y);

}

}

publicclassPanelOfImageextendsJPanelimplementsMouseListener{//图片面板加载方格对象

booleanhasAddActionListener=false;

//设置方格动作监听器的标识

PaneButtonpane[];

//声明方格

RectanglenullPanel;

//声明空方格,没有添图片

publicstaticintcurrentPID=1;

//当前选择的图片编号

publicPanelOfImage(){//构造方法进行初始化

this.setLayout(null);

//设置面板的布局为空

this.setSize(400,400);

//设置面板的大小

nullPanel=newRectangle(200,200,100,100);

//设置空方格的位置

pane=newPaneButton[9];

//创建九个方格

Iconicon;

//声明图标

for(inti=0;

i<

3;

i++){//循环为每个方格加载图片

for(intj=0;

j<

j++){//循环列

icon=newImageIcon("

pictrue/pic_"

+currentPID+"

_"

+(i*3+j+1)+"

.jpg"

);

//创建图标

pane[i*3+j]=newPaneButton(icon);

//创建方格在方格中加载图片

pane[i*3+j].setLocation(j*100,i*100);

//设置方格的位置

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/100*3+x/100!

=i)

returnfalse;

returntrue;

publicvoidreLoadPictrue(){//重新加载图片在重新选择图片时

j++){

pane[i*3+j].setIcon(icon);

publicvoidbreakRank(){//方格打乱重新排序

while(pane[0].getBounds().x<

=100&

&

pane[0].getBounds().y<

=100){//当第一个方格距左上角近时

intx=nullPanel.getBounds().x;

inty=nullPanel.getBounds().y;

intdirection=(int)(Math.random()*4);

//随机产生一个数字对应空方格的上下左右移动

if(direction==0){//空方格左移动,与左侧方格互换位置,左侧方格右移动

x-=100;

//空主格左移

if(test(x,y)){

for(intj=0;

j++){//循环寻打左侧的按钮

if((pane[j].getBounds().x==x)

&

(pane[j].getBounds().y==y)){//依次寻找左侧的按钮

pane[j].move("

RIGHT"

100);

//方格向右移动一格

nullPanel.setLocation(x,y);

//重新设置空方格的位置

break;

//跳出循环

}

}

}

}elseif(direction==1){//空方格右移动

x+=100;

(pane[j].getBounds().y==y)){

//方格向左移动一格

}elseif(direction==2){//空方格上移动

y-=100;

//方格向下移动一格

}else{//空方格下移动

y+=100;

//方格向上移动一格

if(!

hasAddActionListener)//判断是否添加动作事件

for(inti=0;

i++){//循环为每个方格添加动作事件

pane[i].addMouseListener(this);

hasAddActionListener=true;

privatebooleantest(intx,inty){//检测方格是否在指定的范围内移动

if((x>

=0&

x<

=200)||(y>

y<

=200))

returntrue;

else

returnfalse;

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==100)//进行比较果满足条件则交换

button.move("

//方格向上移动

elseif(x1==nullDir_X&

y1-nullDir_Y==-100)

//方格向下移动

elseif(x1-nullDir_X==100&

y1==nullDir_Y)

//方格向左移动

elseif(x1-nullDir_X==-100&

//方格向右移动

return;

nullPanel.setLocation(x1,y1);

this.repaint();

//重新加载

if(this.isFinish()){//进行是否完成的判断

JOptionPane.showMessageDialog(this,"

恭喜你,完成拼图"

i++){//循环撤消鼠标事件

pane[i].removeMouseListener(this);

hasAddActionListener=false;

importjava.awt.*;

publicclassTextImagePieceTogetherextendsJFrameimplementsActionListener{//操作实现拼图的游戏的类

PanelOfImageimagePanel;

//声明图片面板

JPanelpanelOfSouth,panelOfLook;

////声明南侧面板和查看面板

ButtonstartButton;

//声明开始按钮

ButtonlookButton;

//声明查看按钮

ButtonchooseButton;

//选择按钮

Containercontainer;

//容器,得到内容面板

publicTextImagePieceTogether(){//构造方法进行初始化

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("

+PanelOfImage.currentPID

+"

JLabellabel=newJLabel(icon);

//创建图标标签 

label.setBounds(0,0,300,300);

//设置标签的位置

panelOfLook.add(label);

//添加标签 

panelOfSouth=newJPanel();

//创建南侧面板

panelOfSouth.setBackground(Color.red);

//设置背景颜色

panelOfSouth.add(startButton);

//添加开始按钮

panelOfSouth.add(lookButton);

//添加查看按钮

panelOfSouth.add(chooseButton);

//添加选择按钮

imagePanel=newPanelOfImage();

//创建图片面板

container.add(imagePanel,BorderLayout.CENTER);

container.add(panelOfSouth,BorderLayout.SOUTH);

this.setTitle("

拼图游戏"

//设置标题

this.setLocation(300,200);

//设置位置

this.setSize(308,365);

//设置大小

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("

--小猫--"

//添加列表项

--QQ--"

inti=JOptionPane.showConfirmDialog(this,choice,"

选择图片"

JOptionPane.OK_CANCEL_OPTION);

//弹出对话框

if(i==JOptionPane.YES_OPTION){//选择对话框的确定按钮

PanelOfImage.currentPID=choice.getSelectedIndex()+1;

//获得列表项的编号

imagePanel.reLoadPictrue();

//图片重载

Iconicon=newImageIcon("

+PanelOfImage.currentPID+"

//获得图片图标

JLabellabel=newJLabel(icon);

//根据图标设置标签

label.setBounds(0,0,300,300);

//设置标签的方位

panelOfLook.removeAll();

panelOfLook.add(label);

panelOfLook.repaint();

publicstaticvoidmain(String[]args){//java程序主入口处

newTextImagePieceTogether();

//实例化对象

七、运行结果

游戏界面:

开始游戏:

查看全图:

更换图片:

8、编程经验

本练习制作拼图游戏的实例,运用了Java2中的图形处理技术和消息响应技术。

9、设计体会

在编程过程中,使我更进一步理解了JAVA编程的思想,体会

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

当前位置:首页 > 幼儿教育 > 育儿知识

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1