代码如下
public void action(){
//tetromino = Tetromino.randomTetromino();
//nextOne = Tetromino.randomTetromino();
//wall[19][2] = new Cell(19,2,Tetris.T);
startAction();
repaint();
KeyAdapter l = new KeyAdapter() {
public void keyPressed(KeyEvent e) {
int key = e.getKeyCode();
if(key == KeyEvent.VK_Q){
System.exit(0);//退出当前的Java进程
}
if(gameOver){
if(key==KeyEvent.VK_S){
startAction();
}
return;
}
//如果暂停并且按键是[C]就继续动作
if(pause){//pause = false
if(key==KeyEvent.VK_P){ continueAction(); }
return;
}
//否则处理其它按键
switch(key){
case KeyEvent.VK_RIGHT: moveRightAction(); break;
case KeyEvent.VK_LEFT: moveLeftAction(); break;
case KeyEvent.VK_DOWN: softDropAction() ; break;
case KeyEvent.VK_UP: rotateRightAction() ; break;
case KeyEvent.VK_Z: rotateLeftAction() ; break;
case KeyEvent.VK_SPACE: hardDropAction() ; break;
case KeyEvent.VK_P: pauseAction() ; break;
case KeyEvent.VK_5:
//AI入口
if(IfAutoRun==false){
timerAuto = new Timer();
timerAuto.schedule(new TimerTask(){
public void run(){
Auto auto = new Auto();
auto.myRobot();
}
},100,100);
IfAutoRun = true;
}else{
timerAuto.cancel();
IfAutoRun = false;
}
}
repaint();
}
};
this.requestFocus();
this.addKeyListener(l);
}
如果在action()函数中声明Timer timerAuto;会提示The value of the local variable col is not used,
而且函数中是不支持声明函数的,所以系统默认,在函数中新创建的类中的方法是不在该函数范围内的,所以新方法是不在函数内声明的变量的覆盖范围内的。
所以只能在类体中声明。