我正在尝试实现一个小规模的策略,轮流用Java实现游戏,GUI是用JFace和SWT制作的。
我的挑战是编写世界地图的 GUI 实现,其中国家将充当可点击按钮。但是,国家没有固定的边界,没有长方形,我根本想不到用网格布局来描述。
这是我第一次尝试实现这种类型的项目,请指教
如果它是基于图块的地图(如 Civilization)或显示为像素图,您可以将每个图块/像素的所有权保存在二维数组中。只需在画布中显示地图一个简单的、可点击的像素图并添加一个 MouseListener。如果您在坐标 (X,Y) 处获得点击事件,您可以像这样获得您的国家/地区:
Country clickedCountry = myCountriesOnMap[X][Y];
...在您的侦听器中实现 MouseListener 接口。myCountriesOnMap 将是 Country[][] 类型。
当然,您将需要一种算法来解决启动时每个图块/像素的所有权,或者如果领土被征服(我不知道,如果这可能发生)。可能您必须将您的国家/地区定义为多边形(就像您为 HTML 地图所做的那样)。我无法帮助你,因为我没有做过类似的喷气机,但我相信你会在谷歌上找到一些东西。
问候
萨赫
尝试使用OpenStreetMap数据。它包含确切的国家边界和良好的图像导出可能性。
Key:border 标签将显示所有边框。您可以提取它并计算您的可点击区域。