-
Game help
hello i am having trouble creating a function that determins a winner in tictactoe : so far what ive tried doesnt do any thing , please help?
source code:
Code:
#include<iostream>
#include<string>
using namespace std;
// i still cannot get the program to determin a winnerr
class TICTACTOE
{
int xplayer ;
int oplayer;
colour Cs;
string sp;
string ps;
public:
void Board();// will display the main part of the game
void score();// this will keep the score
bool checkwin();
void win();
void HumanTCT();//this will determine human input
//void ComputerTCT();//this will alllow the computer to be player 2
;
};
void TICTACTOE::HumanTCT()
{
char Map[10] = {'o','1','2','3','4','5','6','7','8','9'};
char x = 'x';
char o = 'o';
char mone = '1';
char mtwo = '2';
char mthree = '3';
char mfour = '4';
char mfive = '5';
char msix = '6';
char mseven = '7';
char meight = '8';
char mnine = '9';
int counter = 0;
int xplayer = 1;
int oplayer = 1;
cout << " player 1 please enter your name :";
cin >> sp;
cout << " player 2 please enter your name :";
cin >> ps;
while ( xplayer = 1) {
counter = counter + 1;
cout << "player one:"<<sp<<" Enter the number on the board please ?";
cin >> mone;
if ( mone == '1') {
Map[1] = 'x';
system("cls");
cout << " | | \n";
cout << " " << Map[1] << " | " << Map[2] << " | " << Map[3] << endl;
cout << " _____|_____|_____\n";
cout << " | | \n";
cout << " " << Map[4] << " | " << Map[5] << " | " << Map[6] << endl;
cout << " _____|_____|_____\n";
cout << " | | \n";
cout << " " << Map[7] << " | " << Map[8] << " | " <<Map[9] << endl;
cout << " | | \n\n";
}else if ( mone == '2') {
Map[2] = 'x';
system("cls");
cout << " | | \n";
cout << " " << Map[1] << " | " << Map[2] << " | " << Map[3] << endl;
cout << " _____|_____|_____\n";
cout << " | | \n";
cout << " " << Map[4] << " | " << Map[5] << " | " << Map[6] << endl;
cout << " _____|_____|_____\n";
cout << " | | \n";
cout << " " << Map[7] << " | " << Map[8] << " | " <<Map[9] << endl;
cout << " | | \n\n";
}else if ( mone == '3') {
Map[3] = 'x';
system("cls");
cout << " | | \n";
cout << " " << Map[1] << " | " << Map[2] << " | " << Map[3] << endl;
cout << " _____|_____|_____\n";
cout << " | | \n";
cout << " " << Map[4] << " | " << Map[5] << " | " << Map[6] << endl;
cout << " _____|_____|_____\n";
cout << " | | \n";
cout << " " << Map[7] << " | " << Map[8] << " | " <<Map[9] << endl;
cout << " | | \n\n";
}
else if ( mone == '4') {
Map[4] = 'x';
system("cls");
cout << " | | \n";
cout << " " << Map[1] << " | " << Map[2] << " | " << Map[3] << endl;
cout << " _____|_____|_____\n";
cout << " | | \n";
cout << " " << Map[4] << " | " << Map[5] << " | " << Map[6] << endl;
cout << " _____|_____|_____\n";
cout << " | | \n";
cout << " " << Map[7] << " | " << Map[8] << " | " <<Map[9] << endl;
cout << " | | \n\n";
}else if ( mone == '5') {
Map[5] = 'x';
system("cls");
cout << " | | \n";
cout << " " << Map[1] << " | " << Map[2] << " | " << Map[3] << endl;
cout << " _____|_____|_____\n";
cout << " | | \n";
cout << " " << Map[4] << " | " << Map[5] << " | " << Map[6] << endl;
cout << " _____|_____|_____\n";
cout << " | | \n";
cout << " " << Map[7] << " | " << Map[8] << " | " <<Map[9] << endl;
cout << " | | \n\n";
}else if ( mone == '6') {
Map[6] = 'x';
system("cls");
cout << " | | \n";
cout << " " << Map[1] << " | " << Map[2] << " | " << Map[3] << endl;
cout << " _____|_____|_____\n";
cout << " | | \n";
cout << " " << Map[4] << " | " << Map[5] << " | " << Map[6] << endl;
cout << " _____|_____|_____\n";
cout << " | | \n";
cout << " " << Map[7] << " | " << Map[8] << " | " <<Map[9] << endl;
cout << " | | \n\n";
}else if ( mone == '7') {
Map[7] = 'x';
system("cls");
cout << " | | \n";
cout << " " << Map[1] << " | " << Map[2] << " | " << Map[3] << endl;
cout << " _____|_____|_____\n";
cout << " | | \n";
cout << " " << Map[4] << " | " << Map[5] << " | " << Map[6] << endl;
cout << " _____|_____|_____\n";
cout << " | | \n";
cout << " " << Map[7] << " | " << Map[8] << " | " <<Map[9] << endl;
cout << " | | \n\n";
}else if ( mone == '8') {
Map[8] = 'x';
system("cls");
cout << " | | \n";
cout << " " << Map[1] << " | " << Map[2] << " | " << Map[3] << endl;
cout << " _____|_____|_____\n";
cout << " | | \n";
cout << " " << Map[4] << " | " << Map[5] << " | " << Map[6] << endl;
cout << " _____|_____|_____\n";
cout << " | | \n";
cout << " " << Map[7] << " | " << Map[8] << " | " <<Map[9] << endl;
cout << " | | \n\n";
}else if ( mone == '9') {
Map[9] = 'x';
system("cls");
cout << " | | \n";
cout << " " << Map[1] << " | " << Map[2] << " | " << Map[3] << endl;
cout << " _____|_____|_____\n";
cout << " | | \n";
cout << " " << Map[4] << " | " << Map[5] << " | " << Map[6] << endl;
cout << " _____|_____|_____\n";
cout << " | | \n";
cout << " " << Map[7] << " | " << Map[8] << " | " <<Map[9] << endl;
cout << " | | \n\n";
}
else{
cout<< " you have entered something wrong , try again " << endl;
}
cout << "Player 2"<<ps<<" Enter a number on the board please ?";
cin >> mtwo;
if ( mtwo == '1') {
Map[1] = 'o';
system("cls");
cout << " | | \n";
cout << " " << Map[1] << " | " << Map[2] << " | " << Map[3] << endl;
cout << " _____|_____|_____\n";
cout << " | | \n";
cout << " " << Map[4] << " | " << Map[5] << " | " << Map[6] << endl;
cout << " _____|_____|_____\n";
cout << " | | \n";
cout << " " << Map[7] << " | " << Map[8] << " | " <<Map[9] << endl;
cout << " | | \n\n";
}else if ( mtwo == '2') {
Map[2] = 'o';
system("cls");
cout << " | | \n";
cout << " " << Map[1] << " | " << Map[2] << " | " << Map[3] << endl;
cout << " _____|_____|_____\n";
cout << " | | \n";
cout << " " << Map[4] << " | " << Map[5] << " | " << Map[6] << endl;
cout << " _____|_____|_____\n";
cout << " | | \n";
cout << " " << Map[7] << " | " << Map[8] << " | " <<Map[9] << endl;
cout << " | | \n\n";
}else if ( mtwo == '3') {
Map[3] = 'o';
system("cls");
cout << " | | \n";
cout << " " << Map[1] << " | " << Map[2] << " | " << Map[3] << endl;
cout << " _____|_____|_____\n";
cout << " | | \n";
cout << " " << Map[4] << " | " << Map[5] << " | " << Map[6] << endl;
cout << " _____|_____|_____\n";
cout << " | | \n";
cout << " " << Map[7] << " | " << Map[8] << " | " <<Map[9] << endl;
cout << " | | \n\n";
}
else if ( mtwo == '4') {
Map[4] = 'o';
system("cls");
cout << " | | \n";
cout << " " << Map[1] << " | " << Map[2] << " | " << Map[3] << endl;
cout << " _____|_____|_____\n";
cout << " | | \n";
cout << " " << Map[4] << " | " << Map[5] << " | " << Map[6] << endl;
cout << " _____|_____|_____\n";
cout << " | | \n";
cout << " " << Map[7] << " | " << Map[8] << " | " <<Map[9] << endl;
cout << " | | \n\n";
}else if ( mtwo == '5') {
Map[5] = 'o';
system("cls");
cout << " | | \n";
cout << " " << Map[1] << " | " << Map[2] << " | " << Map[3] << endl;
cout << " _____|_____|_____\n";
cout << " | | \n";
cout << " " << Map[4] << " | " << Map[5] << " | " << Map[6] << endl;
cout << " _____|_____|_____\n";
cout << " | | \n";
cout << " " << Map[7] << " | " << Map[8] << " | " <<Map[9] << endl;
cout << " | | \n\n";
}else if ( mtwo == '6') {
Map[6] = 'o';
system("cls");
cout << " | | \n";
cout << " " << Map[1] << " | " << Map[2] << " | " << Map[3] << endl;
cout << " _____|_____|_____\n";
cout << " | | \n";
cout << " " << Map[4] << " | " << Map[5] << " | " << Map[6] << endl;
cout << " _____|_____|_____\n";
cout << " | | \n";
cout << " " << Map[7] << " | " << Map[8] << " | " <<Map[9] << endl;
cout << " | | \n\n";
}else if ( mtwo == '7') {
Map[7] = 'o';
system("cls");
cout << " | | \n";
cout << " " << Map[1] << " | " << Map[2] << " | " << Map[3] << endl;
cout << " _____|_____|_____\n";
cout << " | | \n";
cout << " " << Map[4] << " | " << Map[5] << " | " << Map[6] << endl;
cout << " _____|_____|_____\n";
cout << " | | \n";
cout << " " << Map[7] << " | " << Map[8] << " | " <<Map[9] << endl;
cout << " | | \n\n";
}else if ( mtwo == '8') {
Map[8] = 'o';
system("cls");
cout << " | | \n";
cout << " " << Map[1] << " | " << Map[2] << " | " << Map[3] << endl;
cout << " _____|_____|_____\n";
cout << " | | \n";
cout << " " << Map[4] << " | " << Map[5] << " | " << Map[6] << endl;
cout << " _____|_____|_____\n";
cout << " | | \n";
cout << " " << Map[7] << " | " << Map[8] << " | " <<Map[9] << endl;
cout << " | | \n\n";
}else if ( mtwo == '9') {
Map[9] = 'o';
system("cls");
cout << " | | \n";
cout << " " << Map[1] << " | " << Map[2] << " | " << Map[3] << endl;
cout << " _____|_____|_____\n";
cout << " | | \n";
cout << " " << Map[4] << " | " << Map[5] << " | " << Map[6] << endl;
cout << " _____|_____|_____\n";
cout << " | | \n";
cout << " " << Map[7] << " | " << Map[8] << " | " <<Map[9] << endl;
cout << " | | \n\n";
}
else{
cout<< " you have entered something wrong , try again " << endl;
}
checkwin();
}
}
bool TICTACTOE::checkwin()
{
bool win = false;
char Map[10] = {'o','1','2','3','4','5','6','7','8','9'};
for(int i = 0 ; i < 10 ; i++)
if (Map[1] == 'X' && Map[2] == 'X' && Map[3] == 'X' ||Map[1] == 'X' && Map[4] == 'X' && Map[7] == 'X' || Map[2] == 'X' && Map[5] == 'X' && Map[8] == 'X' || Map[4] == 'X' && Map[5] == 'X' && Map[6] == 'X' || Map[3] == 'X' && Map[6] == 'X' && Map[9] == 'X' || Map[3] == 'X' && Map[5] == 'X' && Map[7] == 'X' || Map[7] == 'X' && Map[8] == 'X' && Map [9] == 'X')
{
win = true ;
break;
}
for(int i = 0 ; i < 10 ; i++)
if (Map[1] == 'o' && Map[2] == 'o' && Map[3] == 'o' ||Map[1] == 'o' && Map[4] == 'o' && Map[7] == 'o' || Map[2] == 'o' && Map[5] == 'o' && Map[8] == 'o' || Map[4] == 'o' && Map[5] == 'o' && Map[6] == 'o' || Map[3] == 'o' && Map[6] == 'o' && Map[9] == 'o' || Map[3] == 'o' && Map[5] == 'o' && Map[7] == 'o' || Map[7] == 'o' && Map[8] == 'o' && Map [9] == 'o')
win = true ;
return win;
}
void TICTACTOE::win()
{
checkwin();
cout<< " YOU HAVE ONE THE GAME YAYYYY " <<endl;
}
void TICTACTOE::Board ()
{
char Map[10] = {'o','1','2','3','4','5','6','7','8','9'};
cout << " user must choose a number on the board to play \n";
cout << " | | \n";
cout << " " << Map[1] << " | " << Map[2] << " | " << Map[3] << endl;
cout << " _____|_____|_____\n";
cout << " | | \n";
cout << " " << Map[4] << " | " << Map[5] << " | " << Map[6] << endl;
cout << " _____|_____|_____\n";
cout << " | | \n";
cout << " " << Map[7] << " | " << Map[8] << " | " <<Map[9] << endl;
cout << " | | \n\n";
}
int main()
{
char Map[10] = {'o','1','2','3','4','5','6','7','8','9'};
cout << "\nWelcome To The Awesome Game Of\n\t MEGA Tic Tac Toe\n\n";
cout << "Player 1 uses X and Player 2(computer) uses O" << endl << endl;
cout << " to play the game the user must select the number on the board where they want to place their pieces"<<endl;
TICTACTOE T;
T.Board();
T.HumanTCT();
bool checkwin();
T.win();
return 0;
}
-
Please please please, take lines 69 to 77 and put them into a function that you call from the various places where you've naughtily copy and pasted code.
There's no sense making your program four times longer than it should be.
-
To determine your winner perhaps something like stepping through every position from top left and checking if any of the neighbour squares contain the same figure as the current square. If so you need to record the 'direction' the neighbour is in then skip to that neighbour and check if it also has another touching it in the same direction, if so it is three in a row, and a win.
You will need to check that your search is within array bounds each time.