오래된 UI를 다시 구현하려고합니다. 좀 더 멋진 UI를 사용하여 글을 올렸습니다. Reversi board game 저는 Jens Alfke의 GeekGameBoard 코드에서 영감을 얻었습니다. CALayers는 UI 구현 방법과 비슷합니다.모델 및 컨트롤러를 CALayer 기반 UI와 별도로 유지하는 방법은 무엇입니까?
그러나 GeekGameBoard 코드에서 모델과 뷰를 명확하게 구분할 수는 없습니다. 모델 은보기가이므로 AI 플레이어에 대한 게임 트리 검색을 수행하기 위해 예를 들어 게임 상태의 복사본을 만들기가 어렵습니다. 그러나, 나는 두 개의 병렬 그리드를 유지하기위한 지속적인 전투를 포함하지 않는 모델과 뷰의 분리를 가능하게하는 구조에 대한 대안적인 방법을 생각해 낼 수없는 것처럼 보인다 (모델의 경우, 뷰의 경우 하나) 동기화합니다. 물론 이것은 고유 한 문제가 있습니다.
AI 검색 친화적 인 모델 구조와 디스플레이 친화적 인보기 간의 관계를 가장 효과적으로 구현하려면 어떻게해야합니까? 모든 제안/경험은 인정 될 것입니다. 나는 "좋은 대답은 없습니다. 당신이 할 수있는 한 최선을 다해 대하십시오"라고 말하면서 놀랄 준비가되어 있습니다.
답변 해 주셔서 감사합니다. 그러나 나는 그것을 완전히 이해하고 있는지 잘 모르겠습니다. 나는 당신이 조각을 옮기고 심지어는 제거하는 초기 세트를 가지고 있다면 사람이 새로운 조각을 집어 넣을 때 어떻게 될까? 다음과 같이 작동합니까?
- 보기에서 사용자가 클릭합니다.
- View를 보드 위치로 변환하면 컨트롤러에 통지됩니다.
- 컨트롤러가 후임자 상태로 새 보드를 만듭니다 (해당되는 경우 합법적 인 이동이었습니다).
- 뷰는 바인딩을 통해 새 보드를 선택하고 기존 뷰/계층 계층 구조를 찢어 버리고 현재 상태로 바꿉니다.
맞습니까?
PS : iPhone 또는 Mac 용인지 여부를 지정하지 못해 죄송합니다. 저는 iPhone에서 작동하는 것에 가장 관심이 있습니다. 그러나 Mac에서 처음으로 제대로 작동하도록 할 수 있다면 iPhone에서 직접 작업 할 수있는 솔루션을 채택 할 수있을 것이라고 확신합니다. (또는 새로운 질문을 게시하십시오!)
아니요, 새 보드를 만들지 않으실 겁니다. 당신은 새로운 조각을 만들어 그것을 보드에 추가 할 것입니다. 보드에서 두 단계 중 하나를 수행할지 (즉, 컨트롤러가 보드에 "x, y로 새 조각 만들기 및 추가"를 지시하게하십시오) 또는 별도로 (즉 컨트롤러가 조각 자체를 만든 다음 이사회에 전달). –
iPhone에서 내 제안을 사용할 수는 있지만 Bindings가 없으므로 KVO를 직접 사용해야합니다. 보드 레이어는 보드의 속성을 관찰하고 조각 레이어는 각각의 조각의 속성을 관찰합니다. 너무 고통스러워서는 안된다. 그러나 나는 그것을 시도하지 않았다. –