我试图制作游戏蛇并遇到问题。我所拥有的是一个名为Segment的类,用于创建保持x和y位置的对象以及蛇的方向。该类扩展了JPanel并重写了paintComponent()方法。然后,我将一个Segment类型的对象添加到另一个类的JFrame中。我用来移动/改变蛇方向的方法(目前实际上只是一个方格)工作得很好但我的问题是:
当方块达到框架宽度的大约一半或框架高度的一半时,它将停止被绘制。我已经将JPanel的背景变为浅灰色了,所以我知道当它停止时,方块没有到达JPanel的末尾。下面是我的简单paintComponent()方法和类中扩展JFrame的部分,我添加对象。
long result = end - start;
我也知道对象的位置并没有停止更新,所以它只是在整个面板/框架中绘制正方形的问题。感谢任何帮助!
这是一个MCVE:
System.nanoTime
答案 0 :(得分:3)
不要覆盖Segment类的getX()和getY()。
这些是所有Swing组件的方法。它们获取父容器中组件的当前位置。
使用不同的方法名称来控制蛇的绘画位置。由于您的变量名称是xPos和yPos,因此可以使用getXPos()和getYPos()。
所以会发生的是蛇相对于Segment面板以xPos / yPos绘制,而Segment面板也是相对于其父容器以xPos / yPos绘制的。