JAVA 프로그래밍

문제

16장의 카드에서 같은 색을 가진 카드 짝을 찾는 문제입니다 실행순서를 클릭하세요 
11 12 13 14 21 22 23 24 31 32 33 34 41 42 43 44
첫번째 카드를 선택하세요: 11 두번째 카드를 선택하세요: 24
12 13 14 21 22 23 31 32 33 34 41 42 43 44
첫번째 카드를 선택하세요: 13 두번째 카드를 선택하세요: 12
14 21 22 23 31 32 33 34 41 42 43 44
첫번째 카드를 선택하세요: 54 두번째 카드를 선택하세요: 36

프로그램 코드

	import java.util.Scanner;
		
	public class CardMatching
	{
1		public static void main( String[] args ) {
			Scanner scan = new Scanner( System.in );
			int[][] output = { { 11, 12, 13, 14 },
			                   { 21, 22, 23, 24 },
			                   { 31, 32, 33, 34 },
			                   { 41, 42, 43, 44 } };
			int[][] color = { { 0, 1, 2, 7 },
			                  { 3, 5, 6, 0 },
			                  { 2, 4, 6, 3 },
			                  { 4, 5, 1, 7 } };
2			int card1 = -1, card2 = -1, card1Row = -1, card1Column = -1, card2Row = -1, card2Column = -1;
						
3			do {
4				if( ( card1 != card2 ) && ( color[card1Row][card1Column] == color[card2Row][card2Column] ) ) {
					output[card1Row][card1Column] = color[card1Row][card1Column];
5					output[card2Row][card2Column] = color[card2Row][card2Column];
				}
				
6				for( int row = 0; row < output.length; row++ ) {
7					for( int column = 0; column < output[0].length; column ++ ) {
8						if( ( output[row][column] <= 7 ) || ( output[row][column] == card1 ) || ( output[row][column] == card2 ) ) {
							System.out.print( " \033[4" + color[row][column] + "m" );
							System.out.print( " \033[" + (row*3+1) + ";" + (column*4+1) + "f    " );
9							System.out.print( " \033[" + (row*3+2) + ";" + (column*4+1) + "f    " );
							System.out.print( " \033[" + (row*3+3) + ";" + (column*4+1) + "f    " );
							System.out.print( " \033[0m" );
						}
10						else {
							System.out.print( " \033[" + (row*3+1) + ";" + (column*4+1) + "f    " );
11							System.out.print( " \033[" + (row*3+2) + ";" + (column*4+1) + "f " + (row+1) + (column+1) + " " );
							System.out.print( " \033[" + (row*3+3) + ";" + (column*4+1) + "f    " );
						}
					}
				}
					
				System.out.print( " \033[15;1f \033[2K첫번째 카드를 선택하세요: " );
				card1 = scan.nextInt();
				card1Row = card1 / 10 - 1;
12				card1Column = card1 % 10 - 1;
		
				System.out.print( " \033[16;1f \033[2K두번째 카드를 선택하세요: " );
				card2 = scan.nextInt();
				card2Row = card2 / 10 - 1;
13				card2Column = card2 % 10 - 1;
		
14			} while( ( 0 <= card1Row ) && ( card1Row < 4 ) && ( 0 <= card1Column ) && ( card1Column < 4 )
			      && ( 0 <= card2Row ) && ( card2Row < 4 ) && ( 0 <= card2Column ) && ( card2Column < 4 ) );
			scan.close();
15		}
	}








 
실행 순서