这个问题在这里已经有答案了:
如何暂停/延迟,代码的特定部分(2个答案)
上个月关门了。
我试着用dfs构建一个迷宫生成器。我已经成功地实现了这个算法,但它不是可视化的(即,只要我运行程序,整个网格就会着色,但我希望看到每个框实时着色)。
下面是draw类,如果框被标记为已访问(按算法),它将绘制网格并为其着色。
class Draw extends JPanel{
public Draw() {}
public void paintComponent(Graphics g1) {
super.paintComponent(g1);
Graphics2D g= (Graphics2D) g1;
//Code Below makes the grid
for(Cell c: Maze_Generator.list) { //Maze_Generator.list, this is ArrayList, storing all the cells/boxes objects
//Cell c =(Cell)a;
if(c.top())
g.drawLine(c.x(), c.y(), c.x()+c.length(), c.y());
if(c.bottom())
g.drawLine(c.x(), c.y()+c.length(),c.x()+c.length(),c.y()+c.length());
if(c.left())
g.drawLine(c.x(), c.y(), c.x(), c.y()+c.length());
if(c.right())
g.drawLine(c.x()+c.length(), c.y(), c.x()+c.length(), c.y()+c.length());
}
//Code below colours the boxes if marked visited
for(Cell c:Maze_Generator.list) {
if(c.visited()) {
g.setColor(Color.cyan);
g.fillRect(c.x()+1, c.y()+1, c.length()-1, c.length()-1);
g.setColor(Color.black);
}
}
}
}
在给方框着色时,我应该做什么以及如何减慢/延迟代码?有什么建议吗?
1条答案
按热度按时间0wi1tuuw1#
你需要一个计时器,否则你会阻塞你的主线程。这应该是可行的,但要改进它以满足您的需要:
添加此方法: