找茬游戏中是如何设计两个图片的不同之处的

使用程序自动生成不同是一件几乎不可能的任务 因此找茬游戏的图片还是需要作者自己PS 但是一对图只能使用一次实在是太浪费了 

今天看了下Win8版的美女找茬的文件结构 搞清楚了他们的设计


首先处理图片 

在原图片的基础上尽可能的修改多的地方 每个修改后的区域另存为图片 

用JSON XML或者文本文件记录每个区域的坐标 

保存的形式可以用 左上坐标+长宽 或者左上坐标+右下坐标 或者中心坐标+长宽的1/2 

无论哪个都是4个整型 =.= 而最后一种格式 似乎于在应用中标识不同之处的矩形中更方便一些 但是生成数据难一点

这个应用使用的是文本文件保存区域的左上和右下坐标



范围以用矩形区域内的图片替换原文件相同区域不会有问题为准


使用图片时

假定 游戏设定中每一关的不同数量相同 为N个 某一对图中修改的数量为M

从一对图像的M个不同点中随机选取N个 同时随机生成N个Boolean

读取源图像为并显示到左右窗口中 然后读取已选中的不同点的信息 (图像和坐标)

如果N个随机Boolean第i个为true 将此区域的图像通过坐标重叠显示在左屏幕的对应位置 如果是false 显示在右屏幕 (或者反之 true右 false左 这个不影响)

检测到鼠标点击事件(或者触屏的话是触摸事件)判断点击坐标是否在已选中的不同点的区域中 

是就(通过已读取到的坐标)在左右屏幕同时标识 否就出现错误提示

JAVA语言的伪代码如下:


		int imageId =  getARandomImageId(MAX_USEABLE_IMAGE_ID); // 随机获得一个图像的ID
		Image src = new Image(imageId);  // 获得原图片
		ImageInfo info = new ImageInfo(imageId);  //获得此图片的信息 包括不同的坐标啊什么的
		drawIntoScreen(src,LEFT_SCREEN);  // 将源图片绘制到左屏幕
		drawIntoScreen(src,RIGHT_SCREEN);  // 将源图片绘制到右屏幕
		int [] diffList = getARandomDiffList(info.getDiffList(),DIFF_NUM_PER_STAGE);  // 获得一个随机的图片的N个不同点的列表

		Random r = new Random();
		for (int i = 0; i < diffList.length; i++) {
			drawIntoScreen(info.getDiffImage(i),r.nextBoolean(),info.getDiffX(i),info.getDiffY(i));  // 将不同点的图片绘制到屏幕上
		}
		startGame(); // 开始游戏 注册计时器 Lisenter什么的


基本上就是这样 剩下的就是计时啊 道具啊什么的...




至于不同点区域的坐标 指望美工人工搞似乎工作量有点大 美工修图完了之后 还得量像素啊 位置啊什么的 然后切下来

可以写个程序自动分析处理完了的图片和原图片 对每个像素逐一进行对比 差异超过阈值为1否则为0  得到差异map

然后对差异map进行分析 获得差异的宽高和中心点 计算出需要切割的坐标和宽高 自动切割存储图片

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值