카드 섞기의 마지막 단계로 conv_pos_x()함수와 conv_pos_y()함수를 작성하겠습니다. 함수 호출은 미리 작성했으니 선언과 정의만 작성하면 됩니다.
➊ main()함수 위에 두 함수를 선언합니다.
➋ 두 함수를 호출할 때 카드 번호(randPos)를 넘기므로 이를 받는 매개변수를 선언합니다. conv_pos_x()함수의 매개변수는 int x로, conv_pos_y()함수의 매개변수는 int y로 선언합니다. 두 함수는 무작위로 뽑은 카드 번호를 좌표로 바꾸는 역할을 합니다. 만약 뽑은 번호가 19라면 x 좌표는 3, y 좌표는 4로 바꿔서 반환합니다. 그렇다면 카드 번호를 좌표로 어떻게 바꿀까요? 다음 그림을 봅시다.
그림 8-14 카드 번호의 좌표 변환
➌ 카드 번호에 따른 2차원 배열의 좌표를 보면 첫 번째 행의 x 좌표는 모두 0, 두 번째 행은 1, 세 번째 행은 2, 네 번째 행은 3입니다. 이는 카드 번호를 배열의 열 개수인 5로 나눈 몫과 같습니다. 카드 번호 0~4를 5로 나누면 몫은 0, 카드 번호 5~9를 나누면 1, 10~14를 나누면 2, 15~19를 나누면 3이 됩니다. 따라서 conv_pos_x()함수의 반환값은 x / 5입니다.