提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
原创|其它|编辑:郝浩|2009-09-02 11:57:10.000|阅读 576 次
概述:很多网友都玩过连连看游戏,但是你有没有想过JAVA版连连看是什么样子的呢?本文我们将一起来研究JAVA版连连看界面对象创建算法。
#慧都22周年庆大促·界面/图表报表/文档/IDE/IOT/测试等千款热门软控件火热促销中>>
在介绍游戏界面对象如何创建之前,首行得介绍一个我抽象的这个对象的类结构和实现情况:
/*
* 抽象连连看当中的
* 所要连的对象
* */
import java.awt.*;
public class ImageShow
{
private static Toolkit tk=Toolkit.getDefaultToolkit(); //工具对象
private Image image; //连连对象上的显示的图像对象
public int x; //坐标X的位置
public int y; //坐标Y的位置
public int imagecount; //图像编制的序列引用
public boolean bmobang=false;
/*
* 构造一个连连对象
* */
public ImageShow(int x,int y,int imagecount)
{
this.x=x;
this.y=y;
this.imagecount=imagecount;
image=tk.getImage(ImageShow.class.getClassLoader().getResource("image\\"+imagecount+".gif"));
}
/*
* 用于在屏幕上画出此对象
* */
public void draw(Graphics g)
{
g.drawImage(image,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);
imageshows.add(is);
int rn1=r.nextInt(itx.size());
ImageShow is1=new ImageShow(itx.get(rn1),ity.get(rn1),rid);
imageshows.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(imageshows.size()-1);
imageshows.get(m).bmobang=true;
}
}
为了使游戏最后不出现不相符不成对的对象出现,使玩家无法玩完游戏,就必须在创建对象时,随机抽取一个图片样式编号时,那就同时创建两个以此图片样式编号的对象,但是抽取的矩正位置必须不同,那么就实现了游戏不会出现重叠的对象的现象和游戏成对出现的结果。
连连看游戏游戏界面对象创建算法介绍和实现就介绍到这了,如果需要具体的实现,可以去下载我的源码,研究具体的实现方法。
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@ke049m.cn
文章转载自:IT专家网



接DevExpress原厂商通知,将于近日上调旗下产品授权价格,现在下单客户可享受优惠报价!
面对“数字中国”建设和中国制造2025战略实施的机遇期,中车信息公司紧跟时代的步伐,以“集约化、专业化、标准化、精益化、一体化、平台化”为工作目标,大力推进信息服务、工业软件等核心产品及业务的发展。在慧都3D解决方案的实施下,清软英泰建成了多模型来源的综合轻量化显示平台、实现文件不失真的百倍压缩比、针对模型中的大模型文件,在展示平台上进行流畅展示,提升工作效率,优化了使用体验。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@ke049m.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢
半岛外围网上直营