gpt4 book ai didi

java - 在事件上创建方 block

转载 作者:行者123 更新时间:2023-12-01 14:48:03 27 4
gpt4 key购买 nike

我正在尝试创建一个与贪吃蛇相同系统的游戏。我创建了一个带有 JPanel 的窗口,给它一个背景并绘制线条来向用户显示方 block 。

板的尺寸为 600x600(601x601 以使所有内容都可见)。正方形为 20x20。

现在我正在尝试添加一种方法,将彩色方 block 放置到板上,并检测彩色方 block 是否已经理想地存在。

public class CreateWindow extends JFrame {

JPanel GameArea;
static JLayeredPane Java_Window;
Image Background;

public void CreateWindow() {
Dimension Panel_Size = new Dimension(800, 800);
this.setSize(800,800);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible( true );
this.setTitle("LineRage");
getContentPane().setBackground(Color.white);

Java_Window = new JLayeredPane();
this.add(Java_Window);
Java_Window.setPreferredSize(Panel_Size);

GameArea = new JPanel()
{
@Override
public void paint(Graphics g) {
g.setColor(Color.BLACK);
g.fillRect(0,0,601,601);

g.setColor(Color.GRAY);
// Cut map into sections
int x;
//draw vertical lines
for(x = 0; x < 31; x++) {
g.drawLine(x*20,0,x*20,600);
}
//draw horizontal lines
for(x = 0; x < 31; x++) {
g.drawLine(0,x*20,600,x*20);
}
}

public void PaintSquare (int x,int y) {
//Check if square painted

//Paint square
Rectangle rect = new Rectangle(x, y, 20, 20);
GameArea.add(rect);
}
};
Java_Window.add(GameArea, JLayeredPane.DEFAULT_LAYER);
GameArea.setBounds(20, 20, 601, 601);
GameArea.setVisible(true);
}
}

所以Java_Window (800x800)有一个白色背景,Game_Area (601x601) 具有黑色背景,有 32 条线沿着和穿过它,将其划分为正方形。

public void PaintSquare (int x, int y) {
//Check if square painted

//Paint square
Rectangle square = new Rectangle(x, y, 20, 20);
GameArea.add(square);
}

PaintSquare 将从另一个对象(主游戏)调用并检查正方形的背景,如果它是空闲的,它将在其上绘制一个正方形(20x20)。

最佳答案

您的具体问题尚不清楚,但这里有一些提示:

  • 在 Swing 中进行自定义绘制时,使用 paintComponent 而不是 paint。不要忘记调用 super.paintComponent(g)
  • java.awt.Rectangle 不是从 JComponent(或 Component)派生的,因此无法添加到容器中。<
  • 一种方法是使用 fillRect并“绘制”方 block :

此外,在 Java 中,方法以小写字母开头。将这一点和上一点加在一起,您可以这样做:

public void paintSquare(Graphics g, int x, int y) {
g.fillRect(x, y, 20, 20);
}

这里,将从 paintComponent 调用 paintSquare 方法。

关于java - 在事件上创建方 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15201539/

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