Java ArrayList 的位置在更新后交替

Java ArrayList of positions alternates after updating

首先,抱歉! 我尝试自己调试所有内容,但我无法找出问题所在。所以从广义上讲,我在网格内创建了一个绿色网格和一个红色播放器。我保留了所有单元格的 ArrayList 以及它们应该是什么颜色。我用 KeyListeners 更新我的播放器的位置。当我 运行 程序时,播放器没有移动。我将 link 我所有的代码都放在下面,这样你们就可以跟进了。这是我的调试过程。请记住我是一个没有经验的程序员

老实说,我认为这也可能是硬件问题。这台笔记本电脑真的很慢。无论如何,如果有人能提供帮助,我们将不胜感激。 下面的 FYI 代码有多个 类,看起来最简单。很确定错误一定在游戏面板 Class 中。如果我可以澄清或提供任何信息,请询问。那么为什么 PlayerX 会交替出现?

在深入了解您的代码后,我发现了罪魁祸首:您在 Main class.

的构造函数中创建了 2 个 GamePanel 对象

它应该是这样的:

public Main()
{
    frame.setSize(SIZE);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);
    frame.setLocationRelativeTo(null);
    GamePanel panel = new GamePanel();
    frame.add(panel);
    frame.setResizable(false);
    frame.setFocusable(true);
    frame.addKeyListener(panel);
}

它随之移动。它仍然充满错误并且看起来不太好...但它会移动,因此您可以对其进行进一步的处理。

还有:

  1. 你的 GamePanel 中的 super.addKeyListener() 什么都不做。
  2. 不要覆盖 paintpaintComponent.
  3. 如果没有必要,请不要将 Graphics 转换为 Graphics2D
  4. 一定要改进格式并考虑添加一些文档。
  5. 不要将 KeyListener 添加到父对象并让子对象使用事件。这是一个奇怪的设计。