gpt4 book ai didi

java - 在 Java 中绘制二维数组

转载 作者:行者123 更新时间:2023-11-30 06:14:38 25 4
gpt4 key购买 nike

我是 Java 初学者,对于任何错误的术语表示歉意。

我正在尝试创建一个简单的 2D 游戏,只是为了了解有关 java 工作原理的更多信息。

现在我想知道的是如何使用二维数组并绘制它。也许可以添加一个简单的图标(播放器),您可以使用箭头键移动。

目前我有以下类(class) Keybarricade:

public class Keybarricade{

public static void main(String[] args)
{
JFrame obj = new JFrame();
Playingfield playingfield = new Playingfield();

obj.setBounds(0, 0, 900, 900);
obj.setBackground(Color.GRAY);
obj.setResizable(false);
obj.setVisible(true);
obj.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
obj.add(playingfield);
}

和比赛 field :

public class Playingfield extends JPanel{
private ImageIcon playerIcon;
private int [][] playinggrid = new int[10][10];
private int [] playerX = new int[10];
private int [] playerY = new int[10];

public Playingfield()
{

}

public void paint (Graphics g)
{
//draw border for playingfield
g.setColor(Color.white);
g.drawRect(10, 10, 876, 646);

//draw background for the playingfield
g.setColor(Color.LIGHT_GRAY);
g.fillRect(11, 11, 875, 645);

//draw player imageicon
playerIcon = new ImageIcon("src/images/playerIcon.png");
playerIcon.paintIcon(this, g, playerX[1], playerY[1] );

}

这会显示以下窗口:window I have right now

我想要的是使用 2D 数组来绘制/绘制 10x10 网格,如下所示: window I would like

但遗憾的是我找不到办法做到这一点,或者我找到了但不明白。如果有人能指出我正确的方向,那就太好了!

提前致谢。

最佳答案

你可以在你的绘图函数中使用这样的东西:

    int boxWidth = 30;
int boxHeight = 30;

for (int currentX = 0;
currentX < playinggrid.length * boxWidth;
currentX += boxWidth) {
for (int currentY = 0;
currentY < playinggrid[0].length * boxHeight;
currentY += boxHeight) {
g.drawRect(currentX, currentY, boxWidth, boxHeight);
}
}

如果您想在单元格中间绘制图标,您可以在两个 for 循环内执行以下操作:

    g.drawImage(playerIcon.getImage(),
currentX + boxWidth/2 - playerIcon.getIconWidth()/2,
currentY + boxHeight/2 - playerIcon.getIconHeight()/2,
null);

顺便说一句:我认为最好重写paintComponent而不是paint,参见this post

关于java - 在 Java 中绘制二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49493733/

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