본문 바로가기

iOS/CS193p - Developing Apps for iOS

[CS193p] Assignment 4 - Animated Set 문제 번역

728x90

 

과제 수행 중에 원본이 영어라서 보고도 까먹는 경우가 많아 한글로 번역합니다.

영한 번역이 아니라 이해한 것을 기반으로 작성한 번역입니다.

2021년 Spring 강의입니다

원본 보러 가기

 

Objective

이번 과제의 목표는 이전 Set 과제에 animation을 추가해보면서 이번 주에 강의한 animation mechanism을 이해하는 것이 목표입니다.

힌트도 확인하시구요. 평가항목도 확인해주세요.

 

Due

생략

 

Materials

이전 Set 과제

 

Required Tasks

  1. 이번 과제는 싱글 Set 게임을 계속 만듭니다.
  2. 이번 버전에서는 match가 표시되고 나서 유저가 다른 카드를 선택해도, match인 카드를 교체하지 않고 버립니다. (카드 수 감소)
  3. "deck"과 "discard pile"을 UI에 추가합니다. 크기나 위치는 원하는 대로 선택하면 되지만 main grid의 부분이 아니어야 하고 카드 stack처럼 보여야 됩니다.(예를 들면, 게임 중인 카드의 비율과 같아야 합니다.)
  4. deck에는 아직 table에 올라가지 않은 카드들을 가지고 있습니다. 그 카드들은 뒤집어진 상태입니다.
  5. discard pile은 게임에서 제거된 카드들을 가지고 있어야 합니다.(즉, 카드가 match 되었기 때문에 제거되었습니다.) 이 카드들은 공개되어야 합니다.(즉, 마지막으로 제거된 카드의 symbol을 확인할 수 있어야 합니다.) 게임이 시작될 때는 discard pile은 비어있어야 합니다.
  6. match 카드가 제거될 때는 discard pile로 "fly" 애니메이션 효과가 적용되어야 합니다.
  7. "Deal 3 More Cards" 버튼은 필요 없습니다. 대신 tapping on the deck이 3장의 카드를 deal 합니다.
  8. 어떤 이유 든 간에 게임에 카드가 dealt 될 때는(게임 시작 포함) deck에서 table의 각 위치로 "flying them" 애니메이션이 적용되어야 합니다.
  9. 카드가 match 해서 3장의 카드를 꺼내는 것과 match 카드를 discard pile로 보내는 것은 동시에 이루어져야 합니다.
  10. 저번 과제의 2번 task인 카드의 위치 이동이나 크기 변경은 애니메이션 되어야 합니다. 저번 주 과제에서 카드 크기나 위치가 변경되지 않으면 변경해야 합니다.
  11. match가 발생하면, match에 대한 애니메이션을 적용한다.
  12. mismatch가 발생하면, mismatch에 대한 애니메이션을 적용한다. 이 애니메이션은 match 애니메이션과 달라야 합니다.

 

Hints

  1. match, mismatch 애니메이션은 memorize에서 처럼 계속 반복될 필요가 없고 symbol이 포함될 필요도 없습니다.
  2. deck와 discard pile은 card stack처럼 보여야 합니다. 깔끔하게 카드 더미가 쌓여있어도 괜찮습니다.
  3. 영원히 반복되는 애니메이션은 가끔 다른 애니메이션과 결합할 때 문제가 있을 수 있습니다.(아이폰을 회전시켰을 때 같은)
    애니메이션이 약간 펑키 해지는 경우가 있더라고 문제 삼지 않습니다.(그러나 게임을 진행하기 위해 클릭하면 이런 문제가 사라집니다.)
  4. 카드 뒷면 표시는 원하는 대로 하면 됩니다.(단, 앞면을 알 수 있게 뜸하면 안 됩니다)
  5. 카드 "flip over"에 대한 요구사항은 없습니다.
  6. 필요한 작업 중 ViewModifier를 직접 만들 필요는 없지만, 이 작업을 통해 많것을 배울 수 있습니다.
  7. animatableBonusRemaining 같은 애니메이션 변수를 사용할 필요는 없지만, 사용하는 것을 환영합니다. 좋은 도전이 될 것입니다.
  8. 카드가 생기고 없어지는 transition(dect에서 field로, field에서 discard pile로)에 matchedGeometryEffect를 사용할 것이기 때문에, .transition을 사용할 필요는 없을 겁니다. 하지만 match, unmatch의 애니메이션에 따라서 사용할 수 도 있습니다.

 

Things to learn

animation을 배울 수 있다

 

Evaluation

생략

 

Extra Credit

  1. deck, discard pile을 "sloppy"하게 만든다
  2. 3장의 카드를 더 뽑고 match가 보일 때, 새로운 카드를 뽑기 전에 match 카드를 discard pile로 보낸다. 즉, 애니메이션에 약간의 delaying을 적용해서 사용자에게 3개의 카드를 변경한다는 것을 잘 알려준다. 애니메이션은 겹칠 수 있지만, 하나를 늦게 처리하는 것은 만족스러운 효과를 얻을 수 있습니다.
  3. 카드가 안 보이는 상태에서 뒤집을 때 flip 하게 만든다. 이번 강의의. cardify ViewModifer를 수정/사용해도 됩니다.
  4. 직관적인 새로운 애니메이션을 추가해보세요