如何使用C语言创建世界地图?

时间:2016-01-13 13:31:05

标签: c procedural-generation world-map

如何使用C语言创建世界地图?

在这里,我想生成一个1000 * 1000的二维世界地图数组。在阵列中,陆地部分标记为值1,海洋部分标记为值0.是否有任何简单的方法可以创建?

3 个答案:

答案 0 :(得分:4)

显然,没有算法描述大陆海岸线的形状;)

但你可以使用例如Smrender(http://www.abenteuerland.at/smrender/),用它的海岸线喂它。 OpenStreetMap或Naturalearthdata和单一规则。让它创建一个1000x1000像素的PNG图像。

编辑: 使用ImageMagick(转换),您可以将PNG直接转换为C头文件作为数组。 转到Openstreetmap.org(或Googlemaps),缩小直到看到整个世界,制作屏幕截图,在您喜欢的图像处理程序中打开它并剪切并调整大小为1000x1000,然后运行convert input.png output.h

哈德

答案 1 :(得分:1)

我在几个小时前在游戏开发中写了一个可以帮助你的答案,这是用topic编写的,用javascript写的,但它很难翻译成c。< / p>

在示例中,您填充0的整个地图,然后随机跟踪路径,如果您想稍后平滑地图,您可以制作一个循环所有watter切片的片段并将其转换为土地它附近有3个或更多的地砖,做40到60次,你会得到一个更光滑的岸边,没有&#34;洞&#34;在非洲大陆。

EDIT 使用C中的演示更新答案。 我没有对它进行测试,但是如果你包含标题并检查代码,那就是答案。

   data: [
    {
        x:0,
      y:5,
      dataLabels:{ 
        enabled: true,
        format: 'label 1: {y}'
      }
    },
    [10,5]
  ] 

答案 2 :(得分:0)

你可以有一些程序或脚本(作为输入一些地球图像的表示),它会生成一个长C文件,如

const char map[1000][1000] = {
  {'0', '1', //.... etc for the first fow
  },
  {'0', '0', '0', '1', //... etc
  }
  /// etc for other rows
}; 

另请参阅XBM示例。