在介绍游戏界面对象如何建立以前,首行得介绍一个我抽象的这个对象的类结构和实现状况:
/*
* 抽象连连看当中的
* 所要连的对象
* */
import java.awt.*;
public class ImageShow
{
private static Toolkit tk=Toolkit.getDefaultToolkit(); //工具对象
private Image p_w_picpath; //连连对象上的显示的图像对象
public int x; //坐标X的位置
public int y; //坐标Y的位置
public int p_w_picpathcount; //图像编制的序列引用
public boolean bmobang=false;
/*
* 构造一个连连对象
* */
public ImageShow(int x,int y,int p_w_picpathcount)
{
this.x=x;
this.y=y;
this.p_w_picpathcount=p_w_picpathcount;
p_w_picpath=tk.getImage(ImageShow.class.getClassLoader().getResource("p_w_picpath\\"+p_w_picpathcount+".gif"));
}
/*
* 用于在屏幕上画出此对象
* */
public void draw(Graphics g)
{
g.drawImage(p_w_picpath,x,y, 50, 50,null);
g.draw3DRect(x, y, 50, 50, true);
}
}
这个对象的类结构和实现看起来是很简单,可是这个类在整个游戏当中是很是重要的,几乎能够说整个游戏是围绕着这个对象在展开的。
下面来看对象的建立方式:
本连连看游戏,没有固定的对象排列方式,每一次游戏开始都是随机产生的,此随机产生,也不会影响到游戏的可玩性的。
算法和实现方法以下:
本游戏总共有30种不一样的图片可供随机产生,可是第一关只能是从前十张图片当中抽取,游戏总共有十关,而后的每一关都是以两张图片在递增,从而实现了每一关图片种数在增长。
本游戏建立游戏对象的对数方法,每一关都是建立以20对对象为基础,而后再加上关数乘以3,从而实现了每一关上的对象对数都不一样。
说到底,要想对象随机的出如今屏幕上,并且没有重叠对象的状况,全部出现的对象则彻底是能够被连的,也就是说不可能出现倚数的状况,不可能出现最后没有成对匹配的状况,是一个至关复杂的工做,还要为后面的连连看算法设计出应用的须要。
我采用的方式是将屏幕划分红一个矩正的形式,第一个对象正好占住一个矩正当中的位置,也就很好的定位好了对象,设计矩正以前首先肯定好游戏对象的大小,
我将对象的大小设置成宽50,高50的正方形体,那么就能够将游戏屏幕划分红以宽为50,高为50的矩正排列形式,从起始位置开始,将每个矩正的x,y信息保存在一个集合当中,为建立对象使用,当随机建立一个对象,也必须从矩正集合当中选取一个矩正X,Y轴信息,做为此建立对象的X,Y轴的属性,而后就将此矩正的信息从矩正集合当中删除掉,那么建立下一个对象时就不会有重叠的现象。
代码实现以下:
建立矩正信息:
/*
* 建立游戏场景X,Y轴的矩正序列
* */
public void addItxy()
{
for(int i=100;i<=500; i+=50 )
{
for(int n=0;n<=750;n+=50)
{
itx.add(n);
ity.add(i);
}
}
}
I表示的Y轴,N表示的是X轴,Y轴是从100开始是由于让出一些位置给游戏其余元素用的,结束于500,X轴是从0开始到750以50*50的宽高产生的矩正集合.
建立对象的代码实现方式和建立隐藏在对象上的魔棒工具:
/*
* 建立连连对象
* */
public void addImage()
{
id=10+num*2; //这个属性就是要从多少张图片样式中随机抽取
for(int i=0;i<20+num*3;i++)
{
int rn=r.nextInt(itx.size());
int rid=r.nextInt(id);
ImageShow is=new ImageShow(itx.get(rn),ity.get(rn),rid);
itx.remove(rn);
ity.remove(rn);
p_w_picpathshows.add(is);
int rn1=r.nextInt(itx.size());
ImageShow is1=new ImageShow(itx.get(rn1),ity.get(rn1),rid);
p_w_picpathshows.add(is1);
itx.remove(rn1);
ity.remove(rn1);
}
/*
*下面就是实现建立魔棒工具的实现
*就是随机得到此局有多少个对象上有魔棒工具
*而后随机抽取上面得到的一个数的个数的对象上有
*魔棒工具,这样当用户连了具备魔棒工具属性的
*对象就在魔棒工具包里加上一个魔棒工具
*/
int n=r.nextInt(10);
int m=0;
for(int i=0;i<n;i++)
{
m=r.nextInt(p_w_picpathshows.size()-1);
p_w_picpathshows.get(m).bmobang=true;
}
}
为了使游戏最后不出现不相符不成对的对象出现,使玩家没法玩完游戏,就必须在建立对象时,随机抽取一个图片样式编号时,那就同时建立两个以此图片样式编号的对象,可是抽取的矩正位置必须不一样,那么就实现了游戏不会出现重叠的对象的现象和游戏成对出现的结果。
连连看游戏游戏界面对象建立算法介绍和实现就介绍到这了,若是须要具体的实现,能够去下载个人源码,研究具体的实现方法。