0

我正在尝试在我正在制作的浏览器游戏中使用我为坐标系制作的像素图。每种颜色代表一种地形类型,其相关值会影响游戏的各个方面。

所以问题是:有没有办法使用 PHP 或 JavaScript 逐像素“读取”图像,然后返回数组中每个像素的颜色值以存储在数据库中,以便我可以快速将每种颜色附加到我自己的 x ,y 坐标基于图像的中心而不是角落?

4

1 回答 1

0

对于基于 javascript 的游戏,我建议在客户端硬编码数组并仅在其中存储重要的坐标以减小数组的大小,这样您就不必经常检查它。然后切换到位图/位板表示,就像当今大多数现代国际象棋引擎的功能一样。然后为每个可能的块类型(例如墙、空、楼梯等)创建一个位图。位图的概念是映射感兴趣的块的坐标。地图上的部分被赋予一个布尔真值,而未映射的坐标将具有一个布尔假值。然后对每种块类型重复此过程。

例如

walls:[[3,-7],[-8,9],[30,67],[31,67],[32,68]]
ustairs:[[4,6],[7,8],[8,9]]
dstairs:[[7,6],[-2,-4],[-7,-9]]

即使您决定不切换到位图/位板表示,如果您最终将所有坐标存储在那里,至少对您的数据库后端有怜悯之心。

您可以使用 PHP 的imagecolorat()函数来填充您的数据库,但每次您需要检查坐标时,我都会投票反对在运行时使用此函数。此功能适用于非索引图像,例如 PNG。

但是,如果您在 PHP 中打开一个索引图像(例如 GIF),那么您必须先查找图像中使用的索引的颜色,然后才能获取其颜色值。因此,您将使用imagecolorsforindex(). 编辑:对不起,我的意思是imagecolorexact()

于 2012-10-08T00:22:24.823 回答