2012-10-25 2 views
1

임 4 개를 연결하여 드롭 기능을 구현하려고 시도하고 특정 열의 맨 아래 행에 추가합니다. I = 1, 다음 장소 [1] [COL] 이걸 표시 한 경우에 *이 하지만, 그것은 표시 설정까지를 heres 어떤 이유로 기판C++ 2d Char 배열이 부적절하게 비교되었습니다.

Board::Board() 
{ 
    for(int i=0;i<8;i++) 
     for(int j=0;j<8;j++) 
      place[i][j] = EMP; // EMP is a const char = '-' 

    cout << "Initalized.\n"; 
} 

대한 초기화는이 코드는 모든 방법을 실행 * 배열의 맨 아래에서 [7] [col]을 배치하십시오.

처음에이 -> 장소와 장소는 나에게 '-'의 결과를주지 않습니다.

int Board::add(int player, int col) 
{ 
    char piece; 
    col--; // Dealing with array starting at 0, not 1 
    (player==1) ? piece = P1: piece = P2; // Character defining players piece 
    int i; 

    for (i = 7; i >= 0; i--) 
    { 

     cout << "this - " << this->place[i][col] << endl; 
     cout << "place - " << place[i][col] << endl; 
     if(place[i][col] == EMP) 
     { 
      cout << "Empty looks like " << place[i][col] << "\ti: " << i << endl; 
      place[i][col] = piece; 
      system("pause"); 
      return i; 
     }else 
     { 
      cout << "not EMP - " << place[i][col] << endl; 
      system("pause"); 
     } 
    } 

    return 0; 
} 
+0

귀하의 질문은 막연합니다. "1까지 인쇄 한 다음 무엇을합니까?" 문제에 대한 많은 코드가 있습니다. 적어도 어떤 사람에게는 그것을 조금씩 줄여 줄 수는 없습니까? 두 번째로 여러 번 붙여 넣은 하나의 함수가있어 독자를 혼란스럽게합니다. 문제를 잘 설명하는 데 시간을 투자하면 확실하게 대답을 얻을 수 있습니다. – fayyazkl

+0

작동하지 않는 부분과 예상했던 부분을 명확하게 기술하십시오. 너는 그것을 너무 많이 망쳐 놓고있다. 나는 심지어 당신의 코드에 무엇이 잘못되었는지 알아낼 수 없다. – fayyazkl

+0

통상적 인 구문은 다음과 같다 : char piece = (player == 1)? P1 : P2; –

답변

2

숫자를 char 변수로 변환하는 int 함수에 char을 전달합니다 (가비지를 제공함). 나는 함수를 조금 썼는데 모든 것이 잘 작동하는 것 같다.

int Board::add(int player, char col) 
{ 
    char piece; 
    int Num; 
    Num = atoi(&col); 
    cout << Num << endl << endl; 
    Num--; // Dealing with array starting at 0, not 1 
    (player==1) ? piece = P1: piece = P2; // Character defining players piece 
    int i; 

    for (i = 7; i >= 0; i--) 
    { 

     cout << "this - " << this->place[i][Num] << endl; 
     cout << "place - " << place[i][Num] << endl; 
     if(place[i][Num] == EMP) 
     { 
      cout << "Empty looks like " << place[i][Num] << "\ti: " << i << endl; 
      place[i][Num] = piece; 
      return i; 
     }else 
     { 
      cout << "not EMP - " << place[i][Num] << endl; 
     } 
     system("pause"); 
    } 

    return 0; 
} 

희망이 있습니다.

+0

위선적 인 말투는 내가 이것을 인정하지 않았다라고 생각한다, 고마워. – George

0

몇 가지 생각 :

하지 delete place를 수행, 당신은 메모리를 얻기 위해 new을 사용하지 마십시오. piece = (player==1) ? P1: P2;

코드는, 초기화 추가하고, 여기에 디스플레이 조각 꽤 많은 작품 수 : http://codepad.org/QIWHagMk

당신이 무엇을 요구하거나하고 더 구체적으로 할 수
그것은이 같은 조건 연산자를 사용하는 것이 더 관용적이다 보고있는 문제를 보여주는 훨씬 작은 코드 스 니펫을 보여주십시오.