2012-01-29 2 views
2

체스 게임을위한 보드 역할을하는 2D 배열을 가지고 있습니다. 사용자 입력이 Smith Notation 일 것으로 예상됩니다. 배열이 설정되는 방식은 사용자가 8 행 (사용자의 관점에서 볼 때 맨 위)으로 또는 8 행 (위)으로 이동하려는 경우 배열에서 row[0]과 상호 작용하는 것입니다. 그래서 이것을 처리하기 위해 사용자의 입력을 배열의 올바른 행으로 변환하는 함수를 작성했습니다. 그러나, 그것은 조금 clunky 것 그리고 나는 더 많은 경험을 가진 프로그래머가이 문제를 어떻게 해결할 지 궁금해하고 있었다.올바른 번호를 찾는 데 더 효과적인 방법이 있습니까?

int convertToCorrectRow(int row) 
{ 
    int newRow; 
    switch (row) { 
     case 1: 
      newRow = 7; 
      break; 
     case 2: 
      newRow = 6; 
      break; 
     case 3: 
      newRow = 5; 
      break; 
     case 4: 
      newRow = 4; 
      break; 
     case 5: 
      newRow = 3; 
      break; 
     case 6: 
      newRow = 2; 
      break; 
     case 7: 
      newRow = 1; 
      break; 
     case 8: 
      newRow = 0; 
      break;    
     default: 
      assert(false); 
      break; 
    } 
    return newRow; 
} 

내가 배열을 틀지 가진 사용자가 행 (8)와 상호 작용할 때 실제로 배열에 row[7]와 상호 작용하고, 그이 기능에 대한 필요성을 제거 할 수 있도록 사용자에게 역을 표시하는 생각 했 . 그러나 나는 아직도이 문제를 해결하는 다른 방법을 알고 싶다. 미리 답변 해 주셔서 감사합니다. row 더 확인하지 않고 사용자 입력에서 오는

int convertToCorrectRow(int row) { 
    assert(row > 0 && row <= 8); 
    return 8 - row; 
} 

경우에, 나는 그래도 어설를 사용하지 것이다 : 그것은 다음과 같습니다

답변

6

는에 단순화합니다.

+0

DERP. 이제 나는 당혹 스럽다. 이 작업을 수행하는 훨씬 간단한 방법이 있다는 것을 알았지 만 생각하기에는 너무 바보 같았습니다.) 감사합니다! –

5

왜 그냥 ...

int convertToCorrectRow(int row) 
{ 
    assert(row < 9 && row > 0); 
    return 8 - row; 
}