문제
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 }
}