【发布时间】:2014-10-24 01:44:19
【问题描述】:
我需要创建一个平铺地图 nxn 列/行。首先,程序会询问用户他想要多少瓦片,然后它会创建一个瓦片地图。之后,用户单击一个图块,图块会改变颜色。然后他点击另一块瓷砖,颜色也发生了变化。之后,程序会从选定的图块到另一个图块找到解决方案。
现在,我使用 Graphics2D 组件创建了平铺地图,但是当我单击平铺时,改变颜色的是整个图形,而不仅仅是一个平铺... 你能告诉我有什么问题吗?绘制平铺地图的好方法是什么?谢谢 ! 迷宫应该是这样的:
我仍然需要输入墙壁的代码并找到解决方案。 这是我创建地图的 JPanel 的代码。
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();
}
}
【问题讨论】:
-
现在,我想说你最好的做法是将逻辑与渲染分开。整理出你的模型的数据结构、算法和行为,一旦测试和工作,然后才处理如何渲染模型。见MVC。现在,您已经将所有内容硬连在一起,难以设计、调试和理解。
标签: java swing graphics mouselistener maze