더북(TheBook)

코드를 작성해 봅시다.

main()함수 위에 shuffleAnimal()함수를 선언합니다. 동물 이름을 카드 지도에 무작위로 배치하는 작업만 하므로 이 함수도 전달값과 반환값은 필요 없습니다.

main()함수 아래에 shuffleAnimal()함수를 정의합니다. shuffleAnimal()함수는 안쪽 for 문에서 동물 이름을 배치하는 작업을 2번 반복합니다. 그리고 바깥쪽 for 문에서 이를 10번 반복합니다.

안쪽 for 문에서는 카드 지도에서 빈 공간을 찾아야 하는데, 이 부분도 getEmptyPosition이라는 이름의 함수를 사용해 처리합니다. 함수 정의는 뒤에서 설명하고 여기서는 getEmptyPosition()함수를 호출하는 부분만 작성합니다. 이 함수는 카드 지도에서 빈 공간을 찾아 해당 위치를 반환합니다. 이 값을 받아 동물 이름을 배치하므로 pos라는 변수를 선언해 저장합니다. 반환값은 0~19의 카드 번호이므로 int형으로 선언합니다.

pos 변수의 값, 즉 getEmptyPosition()함수가 반환한 카드 번호를 카드 지도의 인덱스로 바꿔야 합니다. 이 부분도 함수를 만들어 처리합니다. 2차원 배열의 인덱스는 x, y 좌표로 생각할 수 있습니다. x 좌표는 conv_pos_x라는 함수를, y 좌표는 conv_pos_y라는 함수를 사용해 바꿉니다. 두 함수가 어떻게 작동하는지도 뒤에서 정의합니다. 각 함수는 카드 번호를 인덱스로 변환하므로 호출할 때 pos 변수를 전달합니다.

바깥쪽 for 문은 동물 이름 수만큼 반복하므로 변수 istrAnimal 배열의 인덱스와 같습니다. 따라서 x, y 좌표를 구하고 나면 카드 지도의 arrayAnimal[x] [y]에 동물 번호인 i를 저장합니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.