我正在为一个班级创建一个街机游戏。游戏是Columns。我试图让所有的自由浮动块每秒钟下降一次。我的代码使它们失效,但计时器没有。以下是我的代码的相关部分。摆动计时器不工作
前两个出现在我的图块管理员对象,我使用来管理内部逻辑
public void play(){
t = new Timer(1000, this);
t.start();
}
public void actionPerformed(ActionEvent e) {
for(int v = 0;v < this.x; v++){
if(v > this.x || v < 0){
break;
}
for(int b = 0;b < this.y ;b++){
this.gameScreen.get(v).get(b).setActive(true);
}
}
for(int i = 0;i < this.x; i++){
if(i > this.x || i < 0){
break;
}
for(int j = 0;j < this.y ;j++){
if(this.gameScreen.get(i).get(j).getActive() == true){
if(j + 1 < this.y){
if(this.gameScreen.get(i).get(j+1).toString().equals(".")){
Collections.swap(this.gameScreen.get(i), j, j+1);
this.gameScreen.get(i).get(j+1).setActive(false);
}
}
}
}
}
}
this is the main method that is another file.
public static void main(String[] args){
ColumnsUI Col = new ColumnsUI(9,9);
Col.game.nextBlock();
Col.gw.add(Col.show);
Col.game.play();
}
列UI对象是油漆基于内部逻辑的简单方法。我怀疑它与定时器故障有什么关系,因为它在我手动调用actionPerformed的内容时起作用。
感谢您的帮助!
“我的代码,使他们倒下的作品,但计时器没有。”请提供比更多信息“是行不通的。”什么是你期待发生?反而发生了什么? – VGR
我期待actionPerformed中的代码执行。当我将它移到该方法之外并手动执行时,它完全按照它的意图执行,也就是说它将块移开。 –
'Col.game.play();'是否可能执行与您的问题中显示的方法不同的play()方法? – VGR