设置java GUI构建和房间

时间:2014-03-03 00:17:58

标签: java user-interface

我正在寻找更有经验的程序员的建议和想法。

我要做的是创建我学校建筑的一个楼层的布局,所有的房间都在这样,然后让“人”像一天的模拟一样四处走动(想想来自哈利波特的掠夺者地图)。

我真正想知道的是我如何设置所有内容以实际制作地板的2D版本并保持代表人们通过墙壁的点,并使他们实际上根据他们的时间表去上课。

我已经考虑过尝试使用A *算法并使用节点让人们移动,但我不知道这会有多么有效,以及我如何为人们创造通过的墙壁和门廊。

有没有人对此有任何想法或建议?

编辑::另一个快速问题。我怎样才能让人们去上课等等?特别是如果A *不是最好的想法。

2 个答案:

答案 0 :(得分:2)

你可以......

创建一个代表楼层平面图的位图,这将显示在屏幕上。然后,您将创建平面图的面具,该面具定义了演员可以移动的区域。

面具基本上代表演员可以移动的核心颜色,移动时,你会检查演员周围的像素,以确定演员可以朝他们想要的方向移动,例如

平面图:
Floor
面膜:
Mask

第一个图像将是屏幕上显示的图像,该掩模将用于确定给定的x / y位置是否表示可移动像素位置(即黑色)。我还包括不同的门类型,但这取决于你。

这种方法的问题在于它的可扩展性不是很高,因为你希望屏蔽不包含任何抗锯齿,你故意要让它在边缘粗糙。

你可以......

使用Java中的2D图形API生成某种多边形。就个人而言,我会使用某种Shape,例如Path2D。这可以从文件中读取信息,或者只是硬编码。

这样您就可以使用可用的API功能轻松确定某个点是否包含在形状中(Shape#contains

这种方法允许您对形状应用变换,可以轻松地绘制和翻译。

答案 1 :(得分:0)

一些想法:

  • 不要使用路径查找算法来移动人。您可能会有平面图的图片(jpg / png)背景。代替
  • 如果您的平面图似乎是静态的,请使用预定的路径。也许在路径上添加一些随机性。
  • 您的主要问题似乎是图形操作,特别是移动组件。空布局可防止任何布局管理器干扰。
  • 预定路径可以在图像中编码(根据MadProgrammers建议),在这种情况下,移动逻辑将指示如何使用该信息。