May 18, 2011 at 12:49pm UTC
Please play this tic tack toe game i has this wierd repeating glitch in the 1 player mode and dosent save the player names in the output file.Can someone tell me why this is happening?
#include <iostream>
#include <fstream>
#include <ctime>
#include <cstdlib>
#include <string>
using namespace std;
char board[9] = { '1', '2', '3', '4', '5', '6', '7', '8', '9'};
char answere = 'x';
string P1 = " ";
string P2 = " ";
string Date = " ";
int P1W = 0;
int P2W = 0;
int CW = 0;
int D = 0;
int tempint = 0;
int Pnum = 0;
void drawBoard();
bool Check();
void movePlayer(bool);
void movePlayer2(bool);
bool possibleMove(int);
void Twoplayer();
void Oneplayer();
void savegame();
void random();
int main()
{
cout<<"How many players are in this game[1-2]: ";
cin>>Pnum;
cout<<endl;
if(Pnum<2)
{
cout<<"Player one please enter your name: ";
cin>>P1;
cin.get();
cout<<endl;
cout<<"Please enter today's date: ";
cin>>Date;
cin.get();
cout<<endl;
}
if(Pnum>=2)
{
cout<<"Player one please enter your name: ";
cin>>P1;
cin.get();
cout<<endl;
cout<<"Player Two please enter your name: ";
cin>>P2;
cin.get();
cout<<endl;
cout<<"Please enter today's date: ";
cin>>Date;
cin.get();
cout<<endl;
}
if(Pnum>=2)
{
answere = 'x';
P1 = " ";
P2 = " ";
Date = "";
P1W = 0;
P2W = 0;
CW = 0;
D = 0;
tempint = 0;
Pnum = 0;
board[0]='1';
board[1]='2';
board[2]='3';
board[3]='4';
board[4]='5';
board[5]='6';
board[6]='7';
board[7]='8';
board[8]='9';
Twoplayer();
}
else
{
answere = 'x';
P1 = " ";
P2 = " ";
Date = "";
P1W = 0;
P2W = 0;
CW = 0;
D = 0;
tempint = 0;
Pnum = 0;
board[0]='1';
board[1]='2';
board[2]='3';
board[3]='4';
board[4]='5';
board[5]='6';
board[6]='7';
board[7]='8';
board[8]='9';
Oneplayer();
}
return(0);
}
void drawBoard()
{
cout << "\n " << board[0] << " | " << board[1] << " | " << board[2] << endl
<< " ---------" << endl
<< " " << board[3] << " | " << board[4] << " | " << board[5] << endl
<< " ---------" << endl
<< " " << board[6] << " | " << board[7] << " | " << board[8] << endl;
}
bool Check()
{
if(board[0] == board[1] && board[2] == board[0] )
return true;
else if(board[3] == board[4] && board[5] == board[3])
return true;
else if(board[6] == board[7] && board[8] == board[6])
return true;
else if(board[0] == board[3] && board[6] == board[0])
return true;
else if(board[1] == board[4] && board[7] == board[1])
return true;
else if(board[2] == board[5] && board[8] == board[2])
return true;
else if(board[0] == board[4] && board[8] == board[0])
return true;
else if(board[2] == board[4] && board[6] == board[2])
return true;
else
return false;
}
void movePlayer(bool whichPlayer)
{
int place;
cout << "\n Player one, make your move: ";
cin >> place;
if(possibleMove(place))
{
if(whichPlayer == true)
board[place-1] = 'X';
else
board[place-1] = 'O';
}
else
movePlayer(whichPlayer);
drawBoard();
}
void movePlayer2(bool whichPlayer)
{
int place;
cout << "\n Player two, make your move: ";
cin >> place;
if(possibleMove(place))
{
if(whichPlayer == true)
board[place-1] = 'X';
else
board[place-1] = 'O';
}
else
movePlayer2(whichPlayer);
drawBoard();
}
void movecomputer(bool whichPlayer)
{
int place;
random();
cout<<endl<<"My turn:"<<tempint<<endl;
place = tempint;
if(possibleMove(place))
{
if(whichPlayer == true)
board[place-1] = 'X';
else
board[place-1] = 'O';
}
else
movecomputer(whichPlayer);
drawBoard();
}
bool possibleMove(int place)
{
if(board[place-1] == 'X' || board[place-1] == 'O')
return false;
else
return true;
}
void Oneplayer()
{
bool player = false; // true = X , false = O
int i= 0;
drawBoard();
while(!Check())
if ( i==0 || i==2 || i==4 || i==6 || i==8 )
{
i++;
{
if(player == true)
player = false;
else
player = true;
movePlayer(player);
}
}
else if ( i==1 || i == 3 || i==5 || i==7 )
{
i++;
{
if(player == true)
player = false;
else
player = true;
movecomputer(player);
}
}
else
{
cout << " It's a TIE !!! " << endl;
cin.get();
D = D+1;
savegame();
}
if(player == true)
{
cout << "Player one WINS !!!" << endl;
P1W = P1W+1;
savegame();
}
else
{
cout << "Computer WINS !!!" << endl;
CW = CW+1;
savegame();
}
}
void Twoplayer()
{
bool player = false; // true = X , false = O
int i= 0;
drawBoard();
while(!Check())
if ( i==0 || i==2 || i==4 || i==6 || i==8 )
{
i++;
{
if(player == true)
player = false;
else
player = true;
movePlayer(player);
}
}
else if ( i==1 || i == 3 || i==5 || i==7 )
{
i++;
{
if(player == true)
player = false;
else
player = true;
movePlayer2(player);
}
}
else
{
cout << " It's a TIE !!! " << endl;
cin.get();
D = D+1;
savegame();
}
if(player == true)
{
cout << "Player one WINS !!!" << endl;
P1W = P1W+1;
savegame();
}
else
{
cout << "Player two WINS !!!" << endl;
P2W = P2W+1;
savegame();
}
}
void random()
{
srand ( time(NULL) );
tempint = rand() % 9 + 1;
}
void savegame()
{
cout<<"Do you want to save the game?[Y or N]"<<endl;
cin>>answere;
if(answere = 'Y' || 'y')
{
if(Pnum<2)
{
ofstream savegame;
savegame.open("save.txt");
savegame << "Player one Vs Computer"<< endl;
savegame << "Date: " << Date << endl;
savegame << "Player one's name: " << P1 << endl;
savegame << "Player one Wins: " << P1W << endl;
savegame << "Computer Wins:" << CW << endl;
savegame.close();
}
if(Pnum>=2)
{
ofstream savegame;
savegame.open("save.txt");
savegame << "Player one Vs Player two"<< endl;
savegame << "Date: " << Date << endl;
savegame << "Player one's name: " << P1 << endl;
savegame << "Player Two's name: " << P2 << endl;
savegame << "Player one Wins: " << P1W << endl;
savegame << "Player Two Wins: " << P2W << endl;
savegame.close();
}
}
if(answere = 'N' || 'n')
{
main();
}
}