-1
이 KeyListener에있는이 4 개의 if 문은 입력 된 화살표 키를 확인합니다. 4 if 문을보다 간결한 switch 문 또는 조건문에 결합하여보다 효율적으로 만들고 싶습니다.if 문을 1 switch 문에 결합
4 if 문을 하나의 조건문 또는 switch 문으로 결합하려면 어떻게해야합니까?
class MyKeyListener implements KeyListener {
public void keyReleased(KeyEvent e) { }
public void keyTyped(KeyEvent e) {}
public void keyPressed(KeyEvent e) {
int keyCode = e.getKeyCode();
for (int i=0; i < a.length;i++){
for (int k=0; k < a[i].length;k++){
Contents tileLeft = lr.getTile(levelData, i-1, k);
Contents tileUp = lr.getTile(levelDate, i, k+1);
Contents tileRight = lr.getTile(levelDate, i+1, k);
Contents tileDown = lr.getTile(levelData, i, k-1);
if(keyCode == KeyEvent.VK_LEFT) {
if (tileLeft == Contents.EMPTY || tileLeft == Contents.GOAL) {
levelData[i][k] = Contents.EMPTY;
levelData[i-1][k] = Contents.PLAYER;
}
}
if(keyCode == KeyEvent.VK_UP) {
if (tileUp == Contents.EMPTY || tileUp == Contents.GOAL) {
levelData[i][k] = Contents.EMPTY;
levelData[i][k+1] = Contents.PLAYER;
}
}
if(keyCode == KeyEvent.VK_RIGHT) {
if (tileRight == Contents.EMPTY || tileRight == Contents.GOAL) {
levelData[i][k] = Contents.EMPTY;
levelData[i+1][k] = Contents.PLAYER;
}
}
if(keyCode == KeyEvent.VK_DOWN) {
if (tileDown == Contents.EMPTY || tileDown == Contents.GOAL) {
levelData[i][k] = Contents.EMPTY;
levelData[i][k-1] = Contents.PLAYER;
}
}
}
}
}
}
'switch ... case'를 사용하십시오. – AntonH
[이 예제] (http://stackoverflow.com/a/21817447/522444) (보기 위해 실행)에 따라 KeyListener가 아닌 Direction 및 Key Bindings 열거 형을 사용하는 것이 좋습니다. [이 비슷한 예] (http://stackoverflow.com/a/12545773/522444)를 참조하십시오. –