퍼즐 게임 – 개발일지 : 1일차
핵심 알고리즘? 로직?을 구현중이다. 뭐 딱히 핵심은 아니지만 그래도 중요한 부분이니.
애니팡이나 비쥬얼드와 같은 게임 초기 보드 생성 알고리즘에서 처음에는 복잡하게 하나하나씩 비교해서 적어도 3개가 연속으로 안되게 생각했었는데, 그냥 무식하게 가로 또는 세로가 3개 연속이 되면 무조건 보드를 생성하게 만드는것도 복잡하지 않고 괜찮은 방법 같다.
7×7 보드 기준으로, 적으면 20번 내외, 많아도 수천번 내외로 1초 내로 무조건 생성되는 것 같다. 물론 다른 기기도 한 번 테스트는 필요하나 크게 부담을 없을 것 같음.
– (void)buildBoard{
SJPoint point;
NSInteger sameCount = 0;
for(int i = 0; i < kMAX; i++){
for(int j = 0; j < kMAX; j++){
point.x = j;
point.y = i;
int rand = [self random];
[self insertNumber:rand ToPoint:point];
if(j >= 2){
if((boardArray[i][j] == boardArray[i][j-1] && boardArray[i][j-1] == boardArray[i][j-2])){
i = 0;
j = 0;
sameCount++;
break;
}
}
if( i >= 2 ){
if((boardArray[i][j] == boardArray[i-1][j] && boardArray[i-1][j] == boardArray[i-2][j])){
i = 0;
j = 0;
sameCount++;
break;
}
}
}
}
NSLog(@”%d”, sameCount);
}
iPhone 5 기준
2014-02-26 21:33:06.577 [26042:60b] 90
2014-02-26 21:33:06.579 [26042:60b] 0.006682
2014-02-26 21:33:38.236 [26049:60b] 178
2014-02-26 21:33:38.237 [26049:60b] 0.011494
2014-02-26 21:33:49.827 [26055:60b] 389
2014-02-26 21:33:49.828 [26055:60b] 0.021833
2014-02-26 21:34:23.628 [26062:60b] 1107
2014-02-26 21:34:23.629 [26062:60b] 0.068760
2014-02-26 21:35:03.441 [26083:60b] 2126
2014-02-26 21:35:03.442 [26083:60b] 0.127345