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