본문 바로가기

cocos2d-x/pyocopang

cocos2d-x 포코팡 류 게임만들기!! - 8 - 없어진 coin 채우기 : idea

한 번에 너무 많은 내용을 담으려고 해서, 글이 길어져서 읽기 힘들고, 게시하는 간격도 점점 늘어나는 것 같습니다. 좀 더 세분화해서 자주 올리도록 하겠습니다.


지난 시간까지 코인을 없앴으니, 이제는 없어진 코인을 채워보도록 하겠습니다.
크게 두 가지로 나눠서 생각해보려고 합니다.

1. 어떻게 남은 코인을 바닥쪽으로 배치할 것인가

2. 남은 코인과 새로 생성되는 코인이 아래로 내려가는 동작

시작합니다.


- 8 - 없어진 coin 채우기 : idea

1. 어떻게 남은 코인을 바닥쪽으로 배치할 것인가



당연히 더 좋은 방법이 많이 있겠지만, 나름 생각해본 제 아이디어를 설명하고, 그대로 구현해보려고 합니다.
우선, [ 6 * 7 ] 크기로 배치되는 게임판에서 세로 줄 끼리는 사실 지금 단계에서는 서로 관련이 없다고 볼 수 있습니다. 한 줄에 대한 동작을 잘 생각해서 전체 7줄에 대해 적용시키면 될 것 같습니다.

기본적인 아이디어는 아래 그림과 같습니다.


제일 왼쪽부터 오른쪽으로 한 라인의 코인위치가 변경되는 과정을 그려보았습니다.
[3],[5] 번이 사용자에 의해 선택된 경우, 제일 아래 [5] 부터 위로 순서대로 확인합니다. 

1. [5] 번의 경우 선택된 coin이므로, 넘어갑니다.
    [4] 번은 선택되지 않았고, 자신의 아래로 선택된 coin이 1개이므로([5]번) 1칸 아래인 [5]번과 자리를 바꿉니다. 

2. [3] 번도 선택되었으므로 넘어갑니다.
    [2] 번은 선택되지 않았고, 아래로 2개의 선택된 coin([3], [5])이 있으므로 2칸 아래인 [5]번과 자리를 바꿉니다.

3. [1] 번은 선택되지 않았고, 아래로 선택된 coin이 2개!! 같은 방법으로 2칸 아래인 [3]번과 자리를 바꿉니다.

4. [0] 번도 선택되지 않았고, 아래로 선택된 coin이 2개. [5]번과 자리를 바꿉니다.

5. 최종적으로 선택되지 않은 coin은 아래로 모두 순서에 맞게 이동하였고, 선택된 coin은 모두 위로 올라갔습니다.
   남아있는 coin은 순서가 중요하지만, 선택된 coin은 어차피 제거될 것이기 때문에 순서따위는 중요하지 않습니다.


이후, [3],[5]번은 새로운 coin으로 교체하는 방식으로 진행합니다.
터치를 떼는 순간 총 7개의 세로 줄에 대해 동일한 방식으로 처리하고, 처음 위치에서 최종 변경된 위치로 coin을 움직이면, 중력에 의해 coin이 떨어지는 것 처럼 보일 것 같습니다.


간단하게 아이디어만 확인해봤습니다. 다음에는 지금의 아이디어를 실제 코드로 구현해보도록 하겠습니다.

읽어주셔서 감사합니다!! 끝.