JAVA 프로그래밍

문제

WASD키를 이용하여 캐릭터를 상하좌우로 이동시키는 문제입니다 이를 해결하는 다음 프로그램을 해석하세요 1행, 9행, 1열, 16열을 기준으로 벽이 있으므로, 캐릭터는 2행부터 8행 사이, 2열부터 15열 사이에서 이동할 수 있습니다.
WASD와 [Enter]를 입력하세요: a WASD와 [Enter]를 입력하세요: q

WASD와 [Enter]를 입력하세요: d
WASD와 [Enter]를 입력하세요: D
WASD와 [Enter]를 입력하세요: q

WASD와 [Enter]를 입력하세요: W WASD와 [Enter]를 입력하세요: w WASD와 [Enter]를 입력하세요: q

알고리즘

프로그램 시작 
   맵 출력
   입력 방향에 따라 캐릭터 이동시키기
      W는 위로 이동
      A는 왼쪽으로 이동
      S는 아래로 이동
      D는 오른쪽으로 이동
   캐릭터의 다음 이동 방향 입력 받기
프로그램 종료

프로그램 코드

	// 파일명 : ./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		}
	}

실행 순서

 
 					※ 실행순서 및 메모리상태는 A키(이전) 및 D키(다음)를 눌러도 확인할 수 있습니다