2012-10-11 3 views
1

안녕하세요, iPhone 용 지그 소 퍼즐을 개발하고 있습니다.iPhone 지그 소 퍼즐 게임 완료 감지

여기 퍼즐 조각이 있는지 여부를 찾는 것 외에는 거의 앱을 완성했습니다.

각 조각은 UIImageView이며 고유 한 태그가 있습니다.

x y 좌표를 사용해 보았지만 사용자가 화면의 아무 곳에서나 퍼즐을 수정할 수 있기 때문에 사용하지 않았습니다.

그래서 이미지가 올바르게 정렬되었는지 여부를 감지하는 방법은 무엇입니까?

편집 : 고마워요. 마지막으로 모두 좌표를 사용했습니다. 위치 및 태그를 추적하여

+1

무엇이 문제입니까? –

+0

지그 소 퍼즐에서 사용자가 이미지를 올바르게 정렬했는지 확인하는 방법. – nik

+0

조각을 함께 붙이는 방법을 알지 못해서 도움이되지 않습니다. 시도한 코드를 게시 해보십시오. –

답변

1

아마, 당신은 일종의 '그리드에 스냅'메커니즘을 사용하여 각 조각을 한 번 정확하게 닫으면 정확한 위치에 놓을 수 있습니다 (실제 지그 소를 사용하면 효과적으로 발생합니다). 이를 각 조각에 대한 UIImageView의 원점에 대한 특정 x, y 좌표로 정의한다고 가정 해 보겠습니다.

그런 다음 각 조각이 올바른 위치에 놓이면 (해당 위치에 맞 춥니 다) 부울 'inPlace'를 YES로 설정하십시오.

모든 조각의 'inPlace'값이 '예'이면 조각 그림이 완성됩니다. ID의

각 조각 조각을 라벨에 대한

JigsawPiece.Id = 1 

같은 것을 가지고 (3 × 3 퍼즐에 대한)이처럼 레이블 무엇

+0

감사합니다. 좌표 좌표를 사용했지만 여기에 지정한 방식이 아닙니다. – nik

0

;

------------- 
| 0 | 1 | 2 | 
------------- 
| 3 | 4 | 5 | 
------------- 
| 6 | 7 | | 
------------- 

는 2 차원 배열

class JigsawPuzzle: 
    array[3][3] JigsawPiece; 

이러한 조각을 추가하고 숫자가 하나 증가하는 경우 솔루션이보고에 도달하면 마지막으로 확인합니다. 나는이 라인을 따라

뭔가 트릭을 할해야 ObjC

을 모르기 때문에

check_id == 1 
for int i = 0; i<numrows ; i++ 
    for int j = 0; j<numcols; j++{ 
    if i==numrows - 1 and j==numcols-1: break #last one, which should be empty, skip it    
    solved = jigsawpieces[col][row].id == check_id 
    check_id += 1 
    if !solved: break; 
    } 

if solved: You solved it! 

모든 의사 코드입니다!

+0

불규칙한 이미지 개념으로 운동하지 않습니다. – nik

0

체크 아웃 여기 내 질문 : Check how close UILabels are to each other

내가 레이블에 대한 질문입니다 제외하고는, 동일하지만, 당신이 이미지 것을 사용하려고 할 수 있습니다. 그러나 꽤 다른 번역 체계가 있다고 확신합니다.

0

x y 좌표를 사용하려고했으나 사용자가 화면의 아무 곳에서나 수정할 수 있기 때문에 사용하지 않았습니다.

"기본"퍼즐을 하나 선택하고 다른 퍼즐에 대해 상대 좌표를 얻어야합니다. 완료 확인 - 모든 조각은 현재와 동일한 저장된 상대 위치를 유지합니다. 그게 다야.

임의의 조각을 시작하는 퍼즐을 고치고 조각으로 조각난 조각이나 조각과 같은 조각으로 조각을 모으는 경우 다른 경우가 있습니다. 이 경우 각 퍼즐에 대해 가장 가까운 이웃 ID와 상대 위치를 저장해야합니다. 두 개의 이웃 조각이 제자리에 있다면 - 그것들에 합류하십시오. 승리 조건 - 모든 조각의 모든 이웃은 상대적인 위치에 있습니다.

관련 문제