所以这是背景故事。我正在研究一个叫做生命游戏的程序,它模拟了一个世界上非常原始和基本的生活,每个“土地”都可以居住在生命中,无论细胞是否出生,生命或死亡,根据它拥有的邻居数量。因此,在一次“转弯”期间,土地会计算其周围生物体的数量,而不是取决于细胞在空方块中出生的数量,保持活力或死亡。
现在出现问题。对于程序,我必须创建一个图形版本。我想出了如何在屏幕上绘制图形,但每次转弯后我都需要重新绘制图形,以便它们与世界上的生物体相匹配。然而,该程序正在做的是“跳过”重绘直到最后一步。
以下是代码:
private void nextBtnActionPerformed(java.awt.event.ActionEvent evt) {
if(stepField.getText().isEmpty()){
numSteps = 1;
}
else{
numSteps = Integer.valueOf(stepField.getText());
}
Thread thread = new Thread(new nextStep());
thread.start();
}
private class nextStep implements Runnable{
@Override
public void run() {
for(int i = 0; i < numSteps; i++){
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
view.validate();
view.repaint();
}
});
waitToDraw();
}
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
sim.simOneStep();
}
});
}
}
private void waitToDraw(){
try{
Thread.sleep(100);
}catch(InterruptedException e){
System.out.println("nope");
}
}