2014-01-18 3 views
1

코드를 연습하고있는 Bejeweled 클론에서이 중첩 if 문에 대해 for 루프를 만들려고합니다. 보시다시피, 더 많은 성냥을 통해 반복하기를 원하기 때문에 이런 식으로하는 것은 매우 바보입니다. 따라서 If 문은 약 7 번 AND 문을 중첩하는 것보다 더 효율적인 방법이 있는지 궁금합니다. 그리드는 8 x 8이기 때문에 방향을 지정하십시오.중첩 된 IF 문의 For 루프를 만드는 방법?

if (i! == 0) 비트는 널 (NULL) 오류를 방지하기위한 것입니다. 그것이 경우 (내가 < loopvar) 같은 것을 할 수 있습니다 사용할 수 있다면 나는 For 문으로 생각하는 대신

감사 :

  if (i !== 0 && map[i][j].name == map[i-1][j].name) // this nest of if statements are gonna check the one to the left of the jewel we are looping through, and see if they match. 
       { 
        map[i][j].jewelsWest++; 
        if (i !== 1 && map[i-1][j].name == map[i-2][j].name) 
        { 
         map[i][j].jewelsWest++; 
        } 
      } 

답변

1

3 내가 재귀이 경우 나 편리한 것 같아요 :

map[i][j].jewelsWest = countMe(i, j, -1, 0); 
map[i][j].jewelsEast = countMe(i, j, 1, 0); 
map[i][j].jewelsNorth = countMe(i, j, 0, -1); 
map[i][j].jewelsSouth = countMe(i, j, 0, 1); 


private function countMe(x, y, xDiff, yDiff):int 
{ 
    if(map[x+xDiff] && map[x+xDiff][y+yDiff] && map[x][y].name == map[x+xDiff][y+yDiff].name) 
    { 
     return 1 + countMe(x+xDiff, y+yDiff, xDiff, yDiff); 
    } 
    else 
    { 
     return 0; 
    } 
} 
+0

Wooooooow you rock. 나는 무슨 일이 일어 났는지 알지 못했고, 나중에이 코드를 깊이 연구해야 할 것입니다. D 재귀가 어떻게 작동하는지 완전히 잊어 버렸지 만, 어떻게 그렇게 편리 할 수 ​​있는지 알았습니다. + + + + + + + + + + + + + + + – iCeCee

+0

걱정할 필요가 없습니다. 비쥬얼드와 함께 행운을 빌어 요. – 3vilguy

+0

게임 프로젝트에 도움이되는 코더를 찾고 있습니다. 아마도 관심이 있습니다. http://www.gamedev.net/classifieds/item/2721-professional-designer-seeking-programmer-oror -musician/ – iCeCee

관련 문제