gpt4 book ai didi

java - Tron Bike Game Java(通过 JPanel 移动角色)

转载 作者:行者123 更新时间:2023-12-02 06:59:37 26 4
gpt4 key购买 nike

我正在使用 Java 设计一款 Tron Bike 游戏,游戏中有两个角色,他们在不断移动时在身后留下一条踪迹。

Arena 由 JFrame 中的 JPanel 中的二维 JPanel 数组组成。我发现这种结构最简单。

我不知道如何实际通过多个 JPanel 移动角色并让它们通过 KeyListener 转动。任何帮助或想法将不胜感激。

这是我的 Arena 类的代码:

import javax.swing.*;
import java.awt.*;

public class Arena extends JPanel
{

public Arena()
{

setLayout(new GridLayout(15,15,0,0));
setPreferredSize(new Dimension(500,500));
JPanel panel;
JPanel[][] grids = new JPanel[15][15];

for(int r = 0;r<grids.length;r++)
{
for(int c = 0;c<grids[0].length;c++)
{
panel = new JPanel();
panel.setPreferredSize(new Dimension(25,25));
panel.setBorder(BorderFactory.createLineBorder(Color.BLACK));
add(panel);
}
}
}
public static void play()
{
JFrame fr = new JFrame();
fr.setTitle("Arena");
fr.setSize(520,540);
fr.setLocation(400,130);
fr.setLayout(new FlowLayout());
fr.setResizable(false);
fr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container contentPane = fr.getContentPane();
Color col = new Color(0,213,255);
contentPane.setBackground(col);

Arena ar = new Arena();

fr.add(ar);

fr.setVisible(true);
}
}

最佳答案

为什么不使用单个 JPanel 来表示竞技场区域,并使用支持 BufferedImage 来存储轨迹数据?您可以重写 JPanel.paintComponent() 将 BufferedImage 传递给 Graphics.drawImage() 来绘制每帧更新的场景。这将为您提供更高的分辨率,并且您只需监听单个对象上的击键即可。可以通过使用 BufferedImage.getRGB(x, y) 来确定是否有任何踪迹数据已写入循环正在进入的位置来实现碰撞。

关于java - Tron Bike Game Java(通过 JPanel 移动角色),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16827627/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com