|
-
Jul 18th, 2000, 06:54 PM
#1
Thread Starter
Hyperactive Member
Ok, I'm learning C++, and here's the code for a little tic-tac-toe game I've written. At the end, I'd like to be able to provide the user with a choice of yes or no to keep playing, but I have problems telling my app to quit right then and there. Here's the code; please someone show me how to do this!
Code:
#include <iostream.h>
#include <stdlib.h>
#include <time.h>
char board[3][3];
int hAxis;
int vAxis;
int lineCheck;
char uRes;
char cWin;
int pTurn = 0;
long xWins = 0;
long oWins = 0;
long cWins = 0;
void endGame(char);
char isWinner();
void mainGame();
void main()
{
srand(time(NULL));
board[0][0] = ' ';
board[0][1] = ' ';
board[0][2] = ' ';
board[1][0] = ' ';
board[1][1] = ' ';
board[1][2] = ' ';
board[2][0] = ' ';
board[2][1] = ' ';
board[2][2] = ' ';
cout << "Welcome to Tic-Tac-Toe!\nYou are player 'X'" << endl;
mainGame();
cout << "\n\nThanks for playing!";
}
void mainGame()
{
cout << endl << "MainGame" << endl;
int hComp;
int vComp;
do{
do{
cout << "\n 1 2 3\n" <<
"1" << board[0][0] << "|" << board[0][1] << "|" << board[0][2] <<
"\n -+-+-\n" <<
"2" << board[1][0] << "|" << board[1][1] << "|" << board[1][2] <<
"\n -+-+-\n" <<
"3" << board[2][0] << "|" << board[2][1] << "|" << board[2][2] << endl << endl;
do{
cout << "Enter Horizontal: ";
cin >> hAxis;
}while (hAxis > 3 && hAxis < 1);
do{
cout << "Enter Vertical: ";
cin >> vAxis;
}while (vAxis > 3 && vAxis < 1);
if (board[vAxis - 1][hAxis - 1] != ' '){cout << "\nThat space is already occupied by '" << board[vAxis - 1][hAxis - 1] << "'!" << endl;};
}while(board[vAxis - 1][hAxis - 1] != ' ');
board[vAxis - 1][hAxis - 1] = 'X';
cWin = isWinner();
if(cWin != ' ') endGame(cWin);
else{
if (pTurn < 4){
do{
hComp = rand() % 3;
vComp = rand() % 3;
}while (board[vComp][hComp] != ' ');
board[vComp][hComp] = 'O';
};
cWin = isWinner();
if(cWin != ' ') endGame(cWin);
else pTurn = pTurn + 1;
}
}while(pTurn < 5);
endGame(isWinner());
}
char isWinner()
{
lineCheck = (int)board[0][0] + (int)board[0][1] + (int)board[0][2];
if(lineCheck == 264 || lineCheck == 237) return (char)(lineCheck / 3);
lineCheck = (int)board[1][0] + (int)board[1][1] + (int)board[1][2];
if(lineCheck == 264 || lineCheck == 237) return (char)(lineCheck / 3);
lineCheck = (int)board[2][0] + (int)board[2][1] + (int)board[2][2];
if(lineCheck == 264 || lineCheck == 237) return (char)(lineCheck / 3);
lineCheck = (int)board[0][0] + (int)board[1][0] + (int)board[2][0];
if(lineCheck == 264 || lineCheck == 237) return (char)(lineCheck / 3);
lineCheck = (int)board[0][1] + (int)board[1][1] + (int)board[2][1];
if(lineCheck == 264 || lineCheck == 237) return (char)(lineCheck / 3);
lineCheck = (int)board[0][2] + (int)board[1][2] + (int)board[2][2];
if(lineCheck == 264 || lineCheck == 237) return (char)(lineCheck / 3);
lineCheck = (int)board[0][0] + (int)board[1][1] + (int)board[2][2];
if(lineCheck == 264 || lineCheck == 237) return (char)(lineCheck / 3);
lineCheck = (int)board[0][2] + (int)board[1][1] + (int)board[2][0];
if(lineCheck == 264 || lineCheck == 237) return (char)(lineCheck / 3);
return ' ';
}
void endGame(char winner)
{
cout << "\n 1 2 3\n" <<
"1" << board[0][0] << "|" << board[0][1] << "|" << board[0][2] <<
"\n -+-+-\n" <<
"2" << board[1][0] << "|" << board[1][1] << "|" << board[1][2] <<
"\n -+-+-\n" <<
"3" << board[2][0] << "|" << board[2][1] << "|" << board[2][2] << "\n\n";
switch(cWin)
{case 'X': cout << "'X' wins the game!"; xWins = xWins + 1; break;
case 'O': cout << "'O' wins the game!"; oWins = oWins + 1; break;
case ' ': cout << "It's a cat's game!"; cWins = cWins + 1; break;}
cout << "\n\nScoreboard:\n-----------\nX Wins: " << xWins << "\nO Wins: " << oWins << "\nCat's Games: " << cWins <<
"\n\nWould you like to play again? (Y/N): ";
board[0][0] = ' ';
board[0][1] = ' ';
board[0][2] = ' ';
board[1][0] = ' ';
board[1][1] = ' ';
board[1][2] = ' ';
board[2][0] = ' ';
board[2][1] = ' ';
board[2][2] = ' ';
cin >> winner;
if (uRes != 'Y' || uRes != 'y') //now what?
}
Also note that a lot of this code has been written pretty beginner-like, so please feel free to show me other ways of doing this stuff. Please mark code you create or edit by adding //* or something so I will know! Thanks!
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|