그림맞추기 게임(20170807) 관련 로직. - 배열 체킹 & 전달.

로직 고민은 했지만 중요로직은 아님.

1. 배열 체킹


그림 자체를 9분할 해서 한군데는 빼주고, 나머지를 섞은 형태로 함.(이미지는 자체 삭제.)

각각 그림들은 특정 정보를 가지고 있는데, 이는 원 이미지 소스랑 자기 위치를 가지고 있음.

struct PieceImage
{
 Image* image; // 제작 프레임워크 이미지 시스템.
 int xPos, yPos; // 원 위치.
 RECT rc; // 드로잉 위치.
};

이미지 소스들은 각각 이미지를 등록하고, Pos 들에 각각 자신의 원래 위치값을 순서대로 등록해줌. 그 뒤에 섞어줌.(맨 마지막 조각은 빈 파일을 하나 입력해둠.)

2. 전달.

WinApi 업데이트단에서 이동 행동을 하면, 빈 타일이 입력한 방향에 있는 타일들과 교환을 함.
교환이 가능한 상태일때 옆 그림과 바꿔줌.

if (KEYMANAGER->isOnceKeyDown(VK_LEFT)) // 여기부터.
 {
  int pieceBlank = ConXPos * 3 + ConYPos;
  if (pieceBlank - 3 >= 0)
  {
   PieceImage tempPiece;
   tempPiece = piece[pieceBlank];
   piece[pieceBlank] = piece[pieceBlank - 3];
   piece[pieceBlank - 3] = tempPiece;
   pieceBlank -= 3;
   ConXPos = pieceBlank / 3;
   ConYPos = pieceBlank % 3;
  }
 }

왼쪽 이동 관련 소스.

왼쪽으로 이동한다 쳤을때, 빈 칸은 왼쪽으로 이동하고, 그 위치에 있던 다른 이미지 파일과 교환하게 됨. 원래는 이미지만 교환하고 원래 위치와 이전 위치를 넣으려 했는데 정상동작하지 않아서 쓰지 않게됨.

그렇게 교환한 소스들은 배열위치가 바뀌지만 자기가 어느 위치였는지 기억한 xPos, yPos를 가지고 있음.

그럼 배열 번호와 각각의 번호들과 체크하여 모두 일치하는 경우, 완성그림을 표시해주는걸로 종료.

댓글

이 블로그의 인기 게시물

[Unity2018.3.0f2] 코루틴 - 유니티에서 While문 멈추지 않고 돌리기.

[Unreal 4.20] 애니메이션 블루프린트에 캐릭터 가져오기.

[Unreal] AnimNotify 애님 노티파이 시스템.