我正在编程一个基于六角形网格的游戏,您在其中点击相邻的玩家贴图时,以及玩家移动地图/网格时向相反方向移动(在主jframe内的jpanel上使用setLocation(),这样相对于屏幕来说,玩家仍然居中。我传入我的GameBoard类的构造函数中,最大数量的六边形高度,我希望网格位于中间和单个六边形的半径,并且它工作得很好(在某种程度上)。六角形格栅在生成流出框架时被切断
当我传入足够多的六角形时,一些网格会在jframe外部产生(与普通的1080x1920大小的显示器一样高和宽)。当发生这种情况时,我仍然可以让玩家四处移动并打开菜单并更改玩家皮肤,但是当在网格上向北移动时(当网格的顶部是在jframe外部生成的)时,网格会被切断,在整个六角形重新粉刷之前结束。
我想知道是否有解决这个问题,也许我只是简单地被忽视的方式。我的第一个想法是每次玩家移动并且根本不使用setLocation()方法时,用新的x,y坐标删除并重新生成网格,但我觉得这样做效率很低,而且更多的是暴力解决方案(last采取)。我只是觉得必须有一个更优雅或有效的方式。即使在一般方向稍有微调,也将不胜感激。我已经玩弄了setSize(),setMinimumSize()和setPreferredSize()方法来尝试使jpanel或jframe的内容窗格变大。
图片的帮助:
这个问题可能更适合于https://gamedev.stackexchange.com/顺便说一下 –