当前位置: 首页 > 知识库问答 >
问题:

Tron自行车游戏Java(通过JPanels移动角色)

卢子民
2023-03-14

我正在设计一个使用Java的Tron自行车游戏,两个角色在他们不断移动的时候,在他们身后放出一条小路。

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

我不知道如何在多个JPanels中移动一个字符,并让它们通过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);
}
}

共有1个答案

凤凡
2023-03-14

为什么不使用一个JPanel来表示竞技场区域,并使用一个支持BufferedImage来存储跟踪数据呢?您可以重写JPanel.PaintComponent()以将BufferedImage传递给Graphics.DrawImage()以绘制每帧更新的场景。这会给你更高的分辨率,你只需要在一个物体上听击键。冲突可以通过使用bufferedimage.getrgb(x,y)来实现,以确定是否有任何跟踪数据已经写入循环正在进入的位置。

 类似资料:
  • 我正在尝试做一个贪吃蛇游戏,其中两条蛇相互竞争。一条蛇只是跟随食物,避开障碍物,另一条蛇是我正在编写代码的一条蛇,并且应该找到获取食物的最佳方式。食物的位置,地图上的每一点和另一条蛇的位置都是已知的,食物的位置随着蛇的每一次移动而变化。 如果地图允许,如果没有障碍物,蛇可以穿过墙壁,走到地图的另一边,就像地图是一个甜甜圈一样。蛇不对角移动,只能垂直和水平移动,不能向后移动。 我正在使用跳点搜索来找

  • 所以我手头有一个非常奇怪的问题,数小时的搜索没有提供任何信息。 我有一个包含uitextfield的uiview。现在,该视图最初位于可见屏幕之外,坐标为x=-500,y=-500。 然而,在响应按钮按下此视图动画和移动到屏幕的中心。 现在,每当我点击作为此视图子视图的uitextfield时。此视图会在屏幕外移动回其原始坐标。 我已经疯狂地检查了我的代码,一旦它进入,就没有任何东西会再次将视图移

  • 我有一个问题来写我的代码。这是一个代码,我必须创建一个对象类,并使用另一个类对象运行它。这个程序被称为自行车和自行车测试。我得到了自行车程序(它已经被写好了),我所需要的就是我写自行车测试来利用自行车。现在,问题是,我已经创建了2个对象,称为Nice自行车和酷自行车。我需要将我的NiceBCycle名称更改为“肯尼·麦考密克,但我不能这样做。我一直收到错误消息,说“错误:变量Nice自行车可能没有

  • 本文向大家介绍js实现坦克移动小游戏,包括了js实现坦克移动小游戏的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了js坦克移动的具体代码,供大家参考,具体内容如下 先看看,js超简单实现图片旋转: –附:简易的小坦克移动js小游戏 (注:键盘上的上下左右键 键值分别是37、38、39、40) 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 包含在程序启动时启动的线程。这个线程包含一个循环,每40毫秒更新一次游戏并重新绘制()board。 备选办法B: 板创建一个摆动计时器。这个计时器的动作监听器是板本身。actionPerformed()方法每40毫秒运行一次,并更新game+repaints Board()。 谢谢

  • 我正在学习Javascript,并作为一个项目作业在其中制作象棋游戏。我已经为Rook,Pawn,Knight和Bishop的移动编码了逻辑。现在我被女王运动困住了。一个女王的走位基本上都涉及到毕晓普和鲁克的走位逻辑。 我想做的是,当皇后被移动时,检查源磁贴的文件是否与目标磁贴相同。如果相同,则调用Rook的代码移动逻辑,否则调用Bishop的代码移动逻辑。例如,如果皇后被放置在d4(源平铺),并