java实现拼图游戏
本文实例为大家分享了java实现拼图游戏的具体代码,供大家参考,具体内容如下
游戏说明:
设计一款拼图游戏,要求点击图片按钮,实现图片按钮的移动,直到每一个按钮都到达指定位置游戏终止退出。
游戏设计思路:
1.准备一张图像文件;
2.创建N个按钮图标,每个按钮图标里面存入一张分割后的图片信息;
3.创建一个空白按钮用于和图标按钮交换位置,达到移动的效果;
4.乱序,将按钮图标乱序,完成游戏效果;
5.创建一个面板添加游戏开始和游戏结束按钮;
6.设计游戏窗口;
游戏界面设计基本结构:
代码实现:
Cell类----设计每个按钮对象应该具备的属性功能---针对按钮
packagepuzzle_game;
importjava.awt.Rectangle;
importjavax.swing.Icon;
importjavax.swing.JButton;
@SuppressWarnings("serial")
publicclassCellextendsJButton{
privatestaticintIMAGEWIDTH;//设置按钮的宽度大小
privatestaticintIMAGEHEIGHT;
privateintID=0;//设置当前按钮的指向坐标
publicCell(Iconicon,intid,intimagewidth,intheight)//构造函数初始化,传入两个参数,一个是图像的图标,一个是该按钮的数组ID
{
this.setIcon(icon);
this.ID=id;
this.IMAGEWIDTH=imagewidth;
this.IMAGEHEIGHT=height;
this.setSize(IMAGEWIDTH,IMAGEHEIGHT);
}
publicvoidmove(Directiondir)//移动
{
Rectanglerec=this.getBounds();//获取当前对象的这个边框
switch(dir)
{
caseUP://向上移动,改变坐标
this.setLocation(rec.x,rec.y+IMAGEHEIGHT);
break;
caseDOWN://向下移动
this.setLocation(rec.x,rec.y-IMAGEHEIGHT);
break;
caseLEFT://向左移动
this.setLocation(rec.x-IMAGEWIDTH,rec.y);
break;
caseRIGHT://向右移动
this.setLocation(rec.x+IMAGEWIDTH,rec.y);
break;
}
}
publicintgetID(){
returnID;
}
publicintgetX()
{
returnthis.getBounds().x;
}
publicintgetY()
{
returnthis.getBounds().y;
}
}
Direction类------方向枚举类,存放移动的方向
packagepuzzle_game;
publicenumDirection{
UP,
DOWN,
LEFT,
RIGHT
}
GamePanel类-----游戏面板设计类,真正的游戏思想从此开始
主要实现的功能有:
1.初始化面板按钮数组,将图像转化成图标然后存入按钮中;
2.打乱数组面板中的按钮排序,实现游戏娱乐功能;
3.每个按钮添加监听机制,实现点击按钮后的移动功能;
packagepuzzle_game;
importjava.awt.event.MouseEvent;
importjava.awt.event.MouseListener;
importjava.awt.image.BufferedImage;
importjava.io.File;
importjava.util.Random;
importjavax.imageio.ImageIO;
importjavax.swing.ImageIcon;
importjavax.swing.JOptionPane;
importjavax.swing.JPanel;
@SuppressWarnings("serial")
publicclassGamePanelextendsJPanelimplementsMouseListener{
privateCellBlankCell=null;
privateintrow=4;
privateintcol=4;//设置这个拼图的行列
privateCellcells[]=newCell[row*col];//创建一个按钮对象数组
intImageWidth;
intImageHeight;
publicGamePanel()//构造函数
{
this.setLayout(null);
init();
}
publicvoidinit()//初始化完成以下功能--完成图像的切割,完成图像到图标的转换,完成按钮图标的添加,将按钮添加到面板上,并且给每一个按钮添加监听机制
{
intnum=0;
BufferedImagebuf=null;
BufferedImagebufnew=null;
ImageIconicon=null;
intwidth=0;
intheight=0;
try
{
buf=ImageIO.read(newFile("F:/Image/Puzzle_game/puze.jpg"));//读取文件图像
ImageWidth=buf.getWidth();
ImageHeight=buf.getHeight();
System.out.println("ImageWidth->"+ImageWidth+"ImageHeight->"+ImageHeight);
width=ImageWidth/col;
height=ImageHeight/row;
}catch(Exceptione)
{
System.out.println(e);
}
for(inti=0;i
GameFrame类------设置游戏的打开窗口类,创建了一个菜单面板存放游戏开始和游戏结束两个按钮,并且对游戏的窗口进行了基本设置,这是整个游戏的入口。
packagepuzzle_game;
importjava.awt.BorderLayout;
importjava.awt.Container;
importjava.awt.EventQueue;
importjava.awt.FlowLayout;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjavax.swing.JButton;
importjavax.swing.JFrame;
importjavax.swing.JPanel;
publicclassGameFrameextendsJFrame{
publicJPanelpane1=newJPanel();
publicJButtonbutton1=newJButton("游戏开始");
publicJButtonbutton2=newJButton("游戏结束");
publicGameFrame()
{
super("拼图游戏");
pane1.setLayout(newFlowLayout());
pane1.add(button1);
pane1.add(button2);
Containercon=this.getContentPane();
con.add(pane1,BorderLayout.NORTH);
GamePanelgamepane=newGamePanel();
con.add(gamepane,BorderLayout.CENTER);
this.setBounds(300,300,600,600);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
button1.addActionListener(newActionListener()
{
publicvoidactionPerformed(finalActionEvente)
{
gamepane.OutOfOrder();
}
});
button2.addActionListener(newActionListener()
{
publicvoidactionPerformed(finalActionEvente)
{
System.exit(1);
}
});
}
publicstaticvoidmain(String[]args){
newGameFrame();}
}
这是刚运行程序以后的界面,也是拼图成功的界面,我设置的是4*4模式,你也可以根据自己的喜好设计模式诸如–2*3,3*4,都可以;
这是我点击开始以后运行的界面,当然每次都不同,因为乱序是随机生成的顺序,那么现在就可以玩你自己的游戏了:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。