2014-04-03 1 views
0

플레이어가 1-9 그리드에 숫자를 입력하는 두 사람의 tic tac toe 게임을 만들고 있습니다. 플레이어 X는 변수 Xp로 원하는 위치에 진입합니다. 그리고 선수 O도 똑같이합니다. 그러나 플레이어가 이미 찍은 눈금의 한 지점에 들어가는 지 확인하는 if 문을 만들 수는 없습니다.배열의 요소가 이미 사용되고 있는지 확인

#include <iostream> 

using namespace std; 

void showBoard(char board[], int turn, int Xp, int Op); 
void winning(char board[]); 


int main() 
{ 

int Xp=0, Op=0, turn=0; 
char board[9] = {'1','2','3','4','5','6','7','8','9'}; 

showBoard(board, turn, Xp, Op); 

return 0; 
} 

void showBoard(char board[], int turn, int Xp, int Op) 
{ 
cout << "Please enter a number on the board that is the spot you wish to use" << endl; 

cout << "Board:\n"; 

cout << board[0] << " " << board[1] << " " << board[2] << endl; 
cout << board[3] << " " << board[4] << " " << board[5] << endl; 
cout << board[6] << " " << board[7] << " " << board[8] << endl; 

do 
{ 
for (turn=1; turn<10; turn++) 
    if (!(turn % 2) == 0) 
    { 
     cout << "\nPlayer X's turn." << endl; 
     cin >> Xp; 
     if(Xp=Op) //HERE IS THE CHECKER 
     { 
      cout << "Spot is taken! Enter new spot: "; 
      cin >> Xp; 
      board[Xp-1] = 'X'; 
     } 
     else 
     { 
     board[Xp-1] = 'X'; 
     }  //WHERE IT ENDS 
cout << "Current Board:\n"; 

cout << board[0] << " " << board[1] << " " << board[2] << endl; 
cout << board[3] << " " << board[4] << " " << board[5] << endl; 
cout << board[6] << " " << board[7] << " " << board[8] << endl; 

winning(board); 
    } 
    else 
    { 
     cout << "\nPlayer O's turn." << endl; 
     cin >> Op; 
     board[Op-1] = 'O'; 

cout << "Current Board:\n"; 

cout << board[0] << " " << board[1] << " " << board[2] << endl; 
cout << board[3] << " " << board[4] << " " << board[5] << endl; 
cout << board[6] << " " << board[7] << " " << board[8] << endl; 

winning(board); 
    } 

}while(turn<10); 

cout << "No one won.\n"; 

return; 
} 
+1

가'에 배열에 모든 것을 초기화 '그것의 다음 경우, 0''''은 'hasn 촬영되었습니다. –

+0

'if (Xp = Op)'나는 그것이 당신이 생각하는 것을하지 않는다는 것을 확신합니다. try'==' – WhozCraig

+0

또한 두 플레이어 모두 동일한 코드를 사용하십시오. – Deduplicator

답변

0

수행

#define DUMMY_CHAR '.' 

에게 더미 값으로 모든 것을 초기화 및 XP, 영업 이익

#define XP_CHAR 'X' 
#define OP_CHAR 'O' 

모두 그리고 수표에 문자를 선택

if (board[Xp] != DUMMY_CHAR) // Your checker 
0

우선, 평등을 검사하지 않고 할당합니다. 둘째로, Xp == Op은 여전히 ​​의미가 없습니다. x 지점을 o 지점으로 확인 하시겠습니까? 광장은이 X도 아니고 O하지 않을 경우 경우 더 좋은 방법을 확인하는 것입니다 : 당신이 알고 0'`

if(board[Xp - 1] != 'X' || board[Xp - 1] != 'O') 
관련 문제