반응형
1. 코드란?
막상 코드가 무엇인지 물어봤을 때 선뜻 대답을 못했다.
코드가 무엇일까?
코드란 기호이다. 여러 가지 기호가 있는데 각 기호들만의 특징은 의미가 부여되어있으며 기호만으로 의미를 알 수 있다는 것이다. 어떠한 언어도 보았을 때 의미를 알 수 있어야 한다.
우리는 자바라는 코드로 프로그램을 작성하는데 작성된 코드를 보고 각 의미를 알 수 있어야 좋은 코드라 하는 이유인 거 같다.
2. 비트 연산자의 활용
8 방향에 대한 움직임을 연습하기 위해 배웠던 비트 연산자로 8방향에 대한 기본 로직을 작성한다.
public static final int N = 1;
public static final int E = 2;
public static final int S = 4;
public static final int W = 8;'
int d = 0;
// 키를 눌렀을 때의 상태 정보를 저장
// d는 int형 변수라서 32개의 비트를 가진다(이진수)
// 각 비트는 0일 때 상태가 없고 1일 때 상태를 가진다
// 각 키 입력에 대한 상태를 비트연산자를 통해 d에 저장
// Dir.N은 1이고 Dir.E는 2인데 이는 각각 0011으로 저장됨
addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
switch (e.getKeyCode()) {
case KeyEvent.VK_UP:
d |= Dir.N; //0000 |= 0001 : 0001
break;
case KeyEvent.VK_RIGHT:
d |= Dir.E; //0000 |= 0010 : 0010
break;
case KeyEvent.VK_LEFT:
d |= Dir.W; //0000 |= 1000 : 1000
break;
case KeyEvent.VK_DOWN:
d |= Dir.S; // 0000 |= 0100 : 0100
break;
}
}
// 키에서 손을 뗄 때는 기존의 저장된 상태 정보를 제거해야 함
// N 방향키와 E 방향키를 동시에 누르면 d에 0011이 저장된다
// N 방향키에서 손을 떼면 N 방향키 상태 정보가 사라져야 한다
// N 방향키의 상태 정보는 0001이므로 이것만 없앤다
// 없애고자 하는 상태 정보인 Dir.N을 ~Dir.N으로 만든다.
// Dir.N이 0001이므로 ~Dir.N은 1110이다.
// 0011인 d와 ~Dir.N를 &연산하면 다음과 같다.
// 0011
// 1110 &
// ---------------
// 0010이 된다. 0001이 지워졌다
// E 방향키의 상태 정보만 저장됐다
@Override
public void keyReleased(KeyEvent e) {
switch (e.getKeyCode()) {
case KeyEvent.VK_UP:
d &= ~Dir.N;
break;
case KeyEvent.VK_RIGHT:
d &= ~Dir.E;
break;
case KeyEvent.VK_LEFT:
d &= ~Dir.W;
break;
case KeyEvent.VK_DOWN:
d &= ~Dir.S;
break;
}
}
});
반응형
'웹 프로그래밍 기초 > 자바기반의 웹&앱 응용SW 개발자' 카테고리의 다른 글
자바기반의 웹&앱 응용 SW개발자 양성과정 23일차 -40 (0) | 2020.03.25 |
---|---|
자바기반의 웹&앱 응용 SW개발자 양성과정 23일차 -39 (0) | 2020.03.25 |
자바기반의 웹&앱 응용 SW개발자 양성과정 21일차 -37 (0) | 2020.03.24 |
자바기반의 웹&앱 응용 SW개발자 양성과정 20일차 -36 (0) | 2020.03.24 |
자바기반의 웹&앱 응용 SW개발자 양성과정 19일차 -35 (0) | 2020.03.24 |
댓글