|
-
October 20th, 2011, 09:56 AM
#1
Tic Tac Toe program
Hi,
I've created a program for the Tic Tac Toe game. I'm working on an exercise posted on the cplusplus.com website. Here is the exercise:
Code:
Requires:
variables, data types, and numerical operators
basic input/output
logic (if statements, switch statements)
loops (for, while, do-while)
arrays
Make a two player tic tac toe game.
★ Modify the program so that it will announce when a player has won the game (and which player won, x or o)
★★ Modify the program so that it is a one player game against the computer (with the computer making its moves randomly)
★★★★ Modify the program so that anytime the player is about to win (aka, they have 2 of 3 x's in a row, the computer will block w/ an o)
I have so far reached the one star ★ part of the exercise and noticed that the program requires arrays, which I have not used. I'm not exactly sure how to use arrays to do the exercise. Could someone point me in the right direction ans well as critiquing my existing code? Here's my code so far:
Code:
#include <iostream>
using namespace std;
//void printBoard()
//{
// cout << cell1 <<"|"<< cell2 << "|" << cell3 << endl;
// cout <<"-+-+-"<< endl;
// cout << cell4 <<"|"<< cell5 << "|" << cell6 << endl;
// cout <<"-+-+-"<< endl;
// cout << cell7 <<"|"<< cell8 << "|" << cell9 << endl;
// cout <<"-+-+-"<< endl;
//}
int main()
{
char cell1 = '1';
char cell2 = '2';
char cell3 = '3';
char cell4 = '4';
char cell5 = '5';
char cell6 = '6';
char cell7 = '7';
char cell8 = '8';
char cell9 = '9';
char player = '1';
char mark;
bool gameover = false;
do
{
cout << cell1 <<"|"<< cell2 << "|" << cell3 << endl;
cout <<"-+-+-"<< endl;
cout << cell4 <<"|"<< cell5 << "|" << cell6 << endl;
cout <<"-+-+-"<< endl;
cout << cell7 <<"|"<< cell8 << "|" << cell9 << endl;
cout <<"-+-+-"<< endl;
//printBoard();
//Handle player marker
if (player == '1')
{
mark = 'X';
}
else
{
mark = 'O';
}
bool invalid;
do
{
cout << "Player "<<player<< ": \n";
char move;
cin >> move;
invalid = false;
//Validate move
if (move == '1' && cell1 == '1')
{
cell1 = mark;
}
else if (move == '2' && cell2 == '2')
{
cell2 = mark;
}
else if (move == '3' && cell3 == '3')
{
cell3 = mark;
}
else if (move == '4' && cell4 == '4')
{
cell4 = mark;
}
else if (move == '5' && cell5 == '5')
{
cell5 = mark;
}
else if (move == '6' && cell6 == '6')
{
cell6 = mark;
}
else if (move == '7' && cell7 == '7')
{
cell7 = mark;
}
else if (move == '8' && cell8 == '8')
{
cell8 = mark;
}
else if (move == '9' && cell9 == '9')
{
cell9 = mark;
}
else
{
cout <<" Invalid Move"<<endl;;
invalid = true;
}
}
while (invalid);
//Check for winning & draw conditions
bool draw = false;
if (cell1 != '1')
{
if (cell1 == cell2 && cell1 == cell3)
{
gameover = true;
}
else if (cell1 == cell4 && cell1 == cell7)
{
gameover = true;
}
}
if (cell9 != '9')
{
if (cell9 == cell3 && cell9 == cell6)
{
gameover = true;
}
else if (cell9 == cell8 && cell9 == cell7)
{
gameover = true;
}
}
if (cell5 != '5')
{
if (cell5 == cell2 && cell5 == cell8)
{
gameover = true;
}
else if (cell5 == cell4 && cell5 == cell6)
{
gameover = true;
}
else if (cell5 == cell1 && cell5 == cell9)
{
gameover = true;
}
else if (cell5 == cell3 && cell5 == cell7)
{
gameover = true;
}
}
// Check for draw conditions
if ( cell1 != '1' && cell2 != '2' && cell3 != '3' &&
cell4 != '4' && cell5 != '5' && cell6 != '6' &&
cell7 != '7' && cell8 != '8' && cell9 != '9')
{
cout <<" Its a draw"<<endl;
gameover = true;
draw = true;
}
if (gameover)
{
if (draw == false)
{
cout << "Player "<< player << " wins!"<<endl;
cout <<endl;
}
//printBoard();
cout << cell1 <<"|"<< cell2 << "|" << cell3 << endl;
cout <<"-+-+-"<< endl;
cout << cell4 <<"|"<< cell5 << "|" << cell6 << endl;
cout <<"-+-+-"<< endl;
cout << cell7 <<"|"<< cell8 << "|" << cell9 << endl;
cout <<"-+-+-"<< endl;
cout <<endl;
cout<< "Play again? (y/n)"<< endl;
char playAgain;
cin >> playAgain;
//Reset board if user wants to play again
if (playAgain == 'y')
{
gameover = false;
cell1 = '1';
cell2 = '2';
cell3 = '3';
cell4 = '4';
cell5 = '5';
cell6 = '6';
cell7 = '7';
cell8 = '8';
cell9 = '9';
player = '1';
}
}
else
{
//Alternate players
if (player == '1')
{
player = '2';
}
else
{
player = '1';
}
}
}
while (gameover == false);
return 0;
}
Thanks in advance
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
|