// 파일명 : ./Chapter07/CharacterMovement.java
import java.util.Scanner;
public class CharacterMovement
{
// 프로그램 시작
1 public static void main( String[] args ) {
Scanner scan = new Scanner( System.in );
// 맵 출력
2 int row = 0, column = 9;
System.out.print( " \033[44m \033[0m" );
3 while( ++row < 8 )
4 System.out.print( "\n \033[44m \033[0m \033[44m \033[0m" );
System.out.print( "\n \033[44m \033[0m" );
// 입력 방향에 따라 캐릭터 이동시키기
5 char direction = 'w';
6 do {
// 캐릭터의 기존 위치 지우고 새 위치로 업데이트
System.out.print( " \033[" + row + ";" + column + "f " );
7 switch( direction ) {
// W는 위로 이동
8 case 'w': case 'W':
9 row = ( row <= 2 ) ? 2 : row - 1;
10 break;
// A는 왼쪽으로 이동
11 case 'a': case 'A':
12 column = ( column <= 3 ) ? 3 : column - 1;
13 break;
// S는 아래로 이동
14 case 's': case 'S':
15 row = ( 8 <= row ) ? 8 : row + 1;
16 break;
// D는 오른쪽으로 이동
17 case 'd': case 'D':
18 column = ( 14 <= column ) ? 14 : column + 1;
19 break;
}
System.out.print( " \033[" + row + ";" + column + "f옷" );
// 캐릭터의 다음 이동 방향 입력 받기
System.out.print( " \033[10;1f \033[2KWASD와 [Enter]를 입력하세요: " );
direction = scan.nextLine().charAt(0);
20 } while( ( direction == 'W' ) || ( direction == 'A' ) || ( direction == 'S' ) || ( direction == 'D' )
|| ( direction == 'w' ) || ( direction == 'a' ) || ( direction == 's' ) || ( direction == 'd' ) );
scan.close();
// 프로그램 종료
21 }
}