2013-07-08 4 views
-5

나는이 틱택 테크 발가락 프로그램을 작동 시키려고 노력하고 있습니다. 그러나 나는 완전히 손실되었습니다. 나는 그물 전체를 수색했지만 더 혼란 스러웠다. change player 함수 (playerTurn)를 사용할 수 없으며 넥타이가 올바르게 작동하는지 검사하는 함수 (checkTie)를 얻을 수 없습니다. 제발, 어떤 도움을 주시면 감사하겠습니다. 여기에 내가 무엇을 가지고있다 :제대로 작동하지 않는 기능을 얻을 수 없습니다.

#include <iostream> 
#include <stdlib.h> 
#include <cmath> 
#include <math.h> 
#include <cstdlib> 
#include <string> 

using namespace std; 



char checkWinner(char[][4]); 
bool checkTie(char[][4]); 
int playerTurn(int); 

const char PLAYER1='X'; 
const char PLAYER2='O'; 


int main() 
{ 
    //variable for player 
    int playerNum=1; 

    //Game over variable 
    bool bGameOver=false; 

    //Variable to hold winner status 
    char winner; 
    bool tie; 

    //Variable player 
    string player; 

    //Player mark 
    char mark; 

    //Constants for board size 
    const int ROWS=4; 
    const int COLS=4; 

    char board[ROWS][COLS] = {{' ', '1', '2', '3'}, 
          { '1', '*', '*', '*'}, 
          {'2', '*', '*', '*'}, 
          {'3', '*', '*', '*'}}; 


    //counter variable 
    int i; 
    //display the board    
    for (int i = 0; i <ROWS; i++) 
      { 
       cout << board[i][0] << "\t" << board[i][1] << "\t" << 
       board[i][2] << "\t" << board[i][3]<< endl; 
      }//end for     


    //Variables to hold selection 
    int rowx, colx; 

while(!bGameOver)//Main game loop 
{ 

    if(playerNum=1) 
    { 
     player="Player 1"; 
     mark=PLAYER1; 
    }//end if 
    else if(playerNum==2) 
    { 
     player="Player 2"; 
     mark=PLAYER2; 
    }//end else 

    //Get player selection 
    cout << player << " - enter row:"; cin >> rowx; 
    cout << player << " - enter column:"; cin >> colx; 
    cout << "" << endl; 

    if (board[rowx][colx] != '*') 
    { 
    cout << "This space is taken...try again" << endl; 
    cout << "row:"; cin >> rowx; 
    cout << "column:"; cin >> colx; 
    }//end if 

    board[rowx][colx]=mark; 



    for (int i = 0; i <ROWS; i++) 
      { 
       cout << board[i][0] << "\t" << board[i][1] << "\t" << 
       board[i][2] << "\t" << board[i][3]<< endl; 

      }//end for 

      //call checkwinner function 
      winner=checkWinner(board); 

      playerNum=playerTurn(playerNum); 


      cout << "the player number is: " << playerNum << endl; 


      if(winner=='X') 
      { 
      cout << "Player 1 wins!" << endl; 
      bGameOver=true; 
      }//end if 


      if(winner=='O') 
      { 
      cout << "Player 2 wins!" << endl; 
      bGameOver=true; 
      }//end if 

      //call checkTie function 
      tie=checkTie(board); 

      if(tie) 
      { 
      cout << "It's a tie!" << endl; 
      bGameOver=true; 
      }//end if 


}  

     if (bGameOver) 
     { 
      cout << "Game over!" << endl; 
     }//end if 




    system ("PAUSE"); 
    return 0; 

} //end main 



//Declare function checkWinner 
char checkWinner(char arr[][4]) 
{ 
    //variable to hold result 
    char result='B'; 

    //variable to hold counter 
    int i=1; 

    //Check player 1 status 
    for(i=1; i<4; i++) /* check rows */ 
    { 
     if(arr[i][1]=='X' && arr[i][2]== 'X' && arr[i][3]=='X') 
     { 
      result='X'; 
     } 
    } 

    for(i=1; i<4; i++) /* check columns */ 
    { 
     if(arr[1][i]=='X' && arr[2][i]== 'X' && arr[3][i]=='X') 
     { 
      result='X'; 
     } 
    } 
     /* test diagonals */ 
    if(arr[1][1]=='X' && arr[2][2]== 'X' && arr[3][3]=='X') 
    { 
     result='X'; 
    } 

    if(arr[1][3]=='X' && arr[2][2]=='X' && arr[3][1]=='X') 
    { 
     result='X'; 
    } 

    //Check player 2 status 
    for(i=1; i<4; i++) /* check rows */ 
    { 
     if(arr[i][1]=='O' && arr[i][2]== 'O' && arr[i][3]=='O') 
     { 
      result='O'; 
     } 
    } 

    for(i=1; i<4; i++) /* check columns */ 
    { 
     if(arr[1][i]=='O' && arr[2][i]=='O' && arr[3][i]=='O') 
     { 
      result='O'; 
     } 
    } 
     /* test diagonals */ 
    if(arr[1][1]=='O' && arr[2][2]== 'O' && arr[3][3]=='O') 
    { 
     result='O'; 
    } 

    if(arr[1][3]=='O' && arr[2][2]=='O' && arr[3][1]=='O') 
    { 
     result='O'; 
    } 



     return result; 

}//end function  

//Define checkTie function 
bool checkTie(char arr[][4]) 
{ 
    //constant for size 
    const int SIZE=4; 


    //variable to hold result 
    bool result=false; 


    //variable loop counter 
    int i=0; 


    if (arr[1][1]!='*'&&arr[1][2]!='*'&&arr[1][3]!='*'&& 
     arr[2][1]!='*'&&arr[2][2]!='*'&&arr[2][3]!='*'&& 
     arr[3][1]!='*'&&arr[3][2]!='*'&&arr[3][3]!='*') 
     { 
      result=true; 
     }//end if 

    return result; 
}//end function  

int playerTurn(int num) 
{ 
    //variable for result 
    int result; 

    if(num==1) 
    { 
     result=2; 
    } 
    else 
    { 
     result=1; 
    } 


    return result; 
}  
+1

"올바르게 작동"을 정의하십시오. 어떤 행동을 관찰하고 있습니까? 그리고 무엇을 기대 했습니까? 지금까지 어떤 디버깅을 했습니까? –

+0

변경 플레이어 기능이 1에서 2로 변경되지만 다시 2로 변경되지 않아 다시 1로 돌아갑니다. Check Tie 기능은 공백 인디케이터 인 보드 배열 ('0'행과 0 열은 숫자이므로 숫자가 작음)을 '*'로 확인해야합니다. 검색 결과 '*'가 발견되지 않고 넥타이가 아닌 '넥타이입니다.'라는 메시지가 표시되지 않는 플레이어는 프로그램을 종료합니다. – user2526556

답변

2

playerTurn() 잘 작동; 그러나 Main Game Loop의 맨 위에는 == 대신 if 문을 테스트 할 때 =을 사용하므로 playerNum을 각 반복마다 1로 재설정합니다.

checkTie의 경우 작동하지 않는 방법에 대한 세부 정보를 제공해야합니다. 또는 이동 횟수를 세어 필요가 없도록 할 수 있습니다. 9 번째 이동 이후 아무도 이기지 못하면 게임은 동점입니다.

+0

정말 고마워요 !!!! 나는 내가 너무 오랫동안이 일을 해왔다는 것을 간과하고 많은 것을 시도했다는 것을 믿을 수 없다. 나는 지금 완전히 눈이 멀었다. 감사!!!!! – user2526556

+0

넥타이 기능에 대한 아이디어가 있으십니까? 도와 주셔서 정말 고맙습니다. – user2526556

+0

@ user2526556, 컴파일러 경고가 켜져 있으면이 대답은 불필요합니다. – chris

관련 문제