gpt4 book ai didi

java - 为迷宫创建平铺 map n*n

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:22:55 26 4
gpt4 key购买 nike

我需要创建一个 nxn 列/行的平铺 map 。首先,程序会询问用户他想要多少 block 瓷砖,然后创建一张瓷砖 map 。之后,用户单击一个图 block ,图 block 会改变颜色。然后他点击另一个方 block ,颜色也随之改变。之后,程序将找到从所选图 block 到另一个图 block 的解决方案。

目前,我使用 Graphics2D 组件创建了分块 map ,但是当我点击分块时,整个图形都会改变颜色,而不仅仅是一个分块...你能告诉我怎么了吗?绘制平铺 map 的好方法是什么?谢谢 !迷宫应该是这样的:

enter image description here

我仍然需要输入墙的代码并找到解决方案。这是我的 JPanel 代码,我在其中创建 map 。

public LabyrintheInteractif (){
addMouseListener(new MouseAdapter() {

@Override
public void mouseClicked(MouseEvent e) {
click=true;
repaint();
xClick=e.getX();
yClick=e.getY();
}
});

tiles=Integer.parseInt(JOptionPane.showInputDialog("How many tiles ?"));
Quadrilage", JOptionPane.YES_NO_OPTION);

setPreferredSize(new Dimension(734, 567));
setVisible(true);
}

@Override
public void paintComponent(Graphics g) {

super.paintComponent(g);

Graphics2D g2d = (Graphics2D) g;
g2d.setColor(Color.white);

rect = new Rectangle2D.Double(0, 0,getWidth(), getWidth());
g2d.fill(rect);
g2d.setColor(Color.black);

for (row = 0; row <tuiles; row++) {
for (column = 0; column < tuiles; column++) {
g2d.setStroke(new BasicStroke(3));
g2d.draw( square=new Rectangle2D.Double(column*100 , row*100,100,100));
}
if(click){
g2d.setColor(Color.green);
g2d.fill(square);
repaint();
}
}

最佳答案

这里的问题是您没有检查用户点击了哪个磁贴。相反,您只是检查他的用户是否点击过。

您需要做的是找到图 block 的宽度高度。然后您需要像这样在嵌套的 for 循环中检查用户点击了哪个图 block 。

for (row = 0; row <tuiles; row++) {
for (column= 0; column<tuiles; column++) {
if(clicked){

//check if the click x position is within the bounds of this tile
if(column * tileWidth + tileWidth > xClick && column * tileWidth < xClick){

//check if the click y position is within the bounds of this tile
if(row * tileHeight + tileHeight > yClick && row * tileHeight < yClick){
//mark this tile as being clicked on.
clicked = false;
}
}
}
}
}

然后您将需要存储 boolean 值,该值将说明是否已单击特定图 block 。这样当你绘制瓷砖时,你可以使用这样的东西:

if(thisTileHasBeenClicked){

//if the tile has been clicked on
g2d.setColor(Color.green);
g2d.fill(square);
}else{

//if the tile has not been clicked on
g2d.setColor(Color.gray);
g2d.fill(square);
}

关于java - 为迷宫创建平铺 map n*n,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26540237/

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