java创建toolkit对象_JAVA版连连看界面对象创建算法研究

在介绍游戏界面对象如何创建之前,首行得介绍一个我抽象的这个对象的类结构和实现情况:

/*

* 抽象连连看当中的

* 所要连的对象

* */

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;

}

}

为了使游戏最后不出现不相符不成对的对象出现,使玩家无法玩完游戏,就必须在创建对象时,随机抽取一个图片样式编号时,那就同时创建两个以此图片样式编号的对象,但是抽取的矩正位置必须不同,那么就实现了游戏不会出现重叠的对象的现象和游戏成对出现的结果。

连连看游戏游戏界面对象创建算法介绍和实现就介绍到这了,如果需要具体的实现,可以去下载我的源码,研究具体的实现方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值