文档章节

auto tile 2

angrycans
 angrycans
发布于 2017/03/24 16:59
字数 328
阅读 20
收藏 0

https://www.codeproject.com/kb/game/autotiles_algorithm.aspx#_comments

这篇文章的js实现

演示和具体代码请看这里http://jsdo.it/Acans/qRex

实际上个算法很简单,实现起来比rpg maker的模式简单很多

图1

图2

算法核心

地块区域如图2,由1~9个tile组成,需要在5号目标地方放入图块时,只需要改变红色区域的bit块为1 ,重新计算每个tile的二进制下标,对应显示图1的图块即可。

            if (x > 0) {
                if (y > 0) tile[x - 1][y - 1] |= 0x8;    // 1000
                tile[x - 1][y] |= 0xA;   // 1010
                if (y < tile_width - 1) tile[x - 1][y + 1] |= 0x2;   // 0010
            }

            if (y > 0) tile[x][y - 1] |= 0xC;    // 1100
            tile[x][y] |= 0xF;   // 1111
            if (y < tile_height - 1) tile[x][y + 1] |= 0x3;   // 0011

            if (x < tile_width - 1) {
                if (y > 0) tile[x + 1][y - 1] |= 0x4;    // 0100
                tile[x + 1][y] |= 0x5;   // 0101
                if (y < tile_height - 1) tile[x + 1][y + 1] |= 0x1;   // 0001
            }

这个算法是根据tile计算的。

还有个算法可以根据顶点来计算

图3

需要在红色区域的中心放置图块时,只需要设置红色区域bit=1 ,重新计算下标对应到图1的图块即可。

            if (x > 0) {
                if (y > 0) tile[x - 1][y - 1] |= 0x8;    // 1000
                if (y < tile_height) tile[x - 1][y] |= 0x2;   // 0010
            }

            if (x < tile_width) {
                if (y > 0) tile[x][y - 1] |= 0x4;    // 0100
                if (y < tile_height) tile[x][y] |= 0x1;   // 0001
            }

 

效果图

© 著作权归作者所有

共有 人打赏支持
angrycans
粉丝 0
博文 9
码字总数 3025
作品 0
南京
私信 提问
Fiori Launchpad Tile点击后跳转的调试技巧

在SAP Fiori launchpad 里点击某个tile之后,后台会计算出跳转的目标url返回给前台。 下图中一个个白色的方框就成为tile。每个tile点击之后,会打开一个对应的Fiori应用。 本文介绍如何在后台...

JerryWang_SAP
02/26
0
0
在浏览器里使用SAPGUI里的SE80

效果如图:点击Fiori launchpad的SE80对应的tile: 即可在浏览器里打开SE80 具体步骤 (1). 在后台找到Fiori catalog page ID: SAPFIORIEXTENSIBILITY (2). 打开Open Fiori Launchpad Design...

JerryWang_SAP
03/10
0
0
如何将UI5应用部署到Fiori On-Premise和On-Cloud的Launchpad上去

On-Premise Launchpad 具体步骤参考我的博客: 如何将BSP应用配置成Fiori Launchpad上的一个tile On-Cloud Launchpad Fiori Cloud Launchpad里每个tile分配的应用必须是已经部署到SAP Cloud P...

JerryWang_SAP
04/07
0
0
Auto Tile 自动拼接地图和墙壁

Auto Tile 自动拼接地图和墙壁算法google 了一下,自动拼接地图算法。 rpgmaker算法的大概思路就是素材图如下 每个tile 32X32 实际拼接的时候 是把素材图片分为16X16的小格子。如图: 自己观...

angyr
2016/05/28
84
0
ABAP,Java, nodejs和go语言的web server编程

ABAP and Java see my blog). nodejs 用nodejs现成的express module,几行代码就能写个server出来: go 要获取更多Jerry的原创文章,请关注公众号"汪子熙":...

JerryWang_SAP
10/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

微服务分布式事务实现

https://www.processon.com/view/link/5b2144d7e4b001a14d3d2d30

WALK_MAN
今天
2
0
《大漠烟尘》读书笔记及读后感文章3700字

《大漠烟尘》读书笔记及读后感文章3700字: 在这个浮躁的社会里,你有多久没有好好读完一本书了? 我们总觉得自己和别人不一样,所以当看到别人身上的问题时,很少有“反求诸己”,反思自己。...

原创小博客
今天
3
0
大数据教程(9.5)用MR实现sql中的jion逻辑

上一篇博客讲解了使用jar -jar的方式来运行提交MR程序,以及通过修改YarnRunner的源码来实现MR的windows开发环境提交到集群的方式。本篇博主将分享sql中常见的join操作。 一、需求 订单数据表...

em_aaron
今天
3
0
十万个为什么之什么是resultful规范

起源 越来越多的人开始意识到,网站即软件,而且是一种新型的软件。这种"互联网软件"采用客户端/服务器模式,建立在分布式体系上,通过互联网通信,具有高延时(high latency)、高并发等特点...

尾生
今天
3
0
Terraform配置文件(Terraform configuration)

Terraform配置文件 翻译自Terraform Configuration Terraform用文本文件来描述设备、设置变量。这些文件被称为Terraform配置文件,以.tf结尾。这一部分将讲述Terraform配置文件的加载与格式。...

buddie
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部