对于在网格上进行的许多游戏来说,六边形是“明显优越的选择”。不幸的是,许多免费游戏美术网站仅具有用于正方形地图的无缝磁贴集。在过去的项目中,我使用了其中一些,并将其手动转换为六边形。
但是,我在晚年变得懒惰。用一个小的脚本来自动化该过程应该很容易。
但是,我在晚年变得懒惰。因此,我将其外包给您,并将其伪装成高尔夫挑战赛1。
输入项
输入是具有24位RGB颜色的任何常见图像格式的正方形图像。您也可以将文件名而不是图像数据本身作为输入。
您可以假设图像是正方形的,并且边长是四的倍数。
输出量
输出是输入图块,但转换为六边形(图像本身将是正方形,带有透明区域)。您可以将其保存到文件或显示在屏幕上。
同样,任何常见的图像格式都可以。如果您使用的格式支持透明,则背景区域必须是透明的。如果不是,您可以使用#FF00FF颜色(可怕的紫红色)作为替代。
方法
那么我们该怎么做呢?我使用2的方法在垂直方向上稍微挤压图像,但总体而言,对于大多数情况而言,它看起来都不错。我们将使用此输入图像做一个示例:
- 缩放:将图像缩放到3:2的比例。由于我们的图像将是正方形,这意味着您只需将它们缩放到75%的宽度和50%的高度即可。我们的示例输入为200x200,因此最终得到以下150x100的图片:
- 平铺:将缩放后的图像的副本放到2x2的网格中:
- 裁剪:从2x2网格中的任意位置抓取大小适当的六边形。现在,为了便于平铺,此六角形并非完全规则。在裁剪了原始大小的正方形(此处为200x200)后,您便裁剪了角落。裁剪线应从(大约)每个左侧/右侧的中心延伸到顶部/底部边缘的四分之一:
这就是您的输出!
这是平铺时的外观示例(此处放大):
这是代码高尔夫,因此以字节为单位的最短代码获胜。适用标准漏洞,依此类推。