Macro_FTW
02-12-2008, 01:17 PM
#include <iostream>
using std::cin;
using std::cout;
bool SpacesFilled(bool []);
bool Winner(int []);
int SpaceToChange();
bool SpacesFilled(bool A[])
{
int C=0;
while(C<9)
{
if(!A[C])
return false;
C++;
}
return true;
}
bool Winner(int A[])
{
int C=0;
int v[3]={0,1,2};
while(C<7)
{
if((A[v[0]]==1 && A[v[1]]==1 && A[v[2]]==1)||(A[v[0]]==2 && A[v[1]]==2 && A[v[2]]==2))
return true;
else {
switch(v[0])
{
case 0: v[0]=1;v[1]=4;v[2]=7;break;
case 1: v[0]=2;v[1]=5;v[2]=8;break;
case 2: v[0]=3;v[1]=0;v[2]=6;break;
case 3: v[0]=4;v[1]=3;v[2]=5;break;
case 4: v[0]=6;v[1]=4;v[2]=2;break;
case 6: v[0]=8;v[2]=0;break;
}
}
C++;
}
return false;
}
int SpaceToChange()
{
int var;
cout << "Player, choose your space.\n";
cin >> var;
return var;
}
void main ()
{
int C=0;
int Temp;
char Shown[9];
int Player[9];
bool Taken[9];
int PlayerTurn=1;
while(C<9)
{
Taken[C]=false;
Player[C]=-1;
Shown[C]=C;
C++;
}
C=0;
while(!SpacesFilled(Taken) && !Winner(Player))
{
TopOfLoop:
cout << "Player " << PlayerTurn << ", please choose a square.\n\n";
while(C<9) //Showing tic-tac-toe board
{
cout << Shown[C];
if(C==0||C==1||C==3||C==4||C==6||C==7)
cout << " | ";
else {
cout << "\n---------\n";
}
C++;
}
C=0;
cin >> Temp;
Temp=Temp-1;
if(Taken[Temp])
goto TopOfLoop;
else {
Taken[Temp]=true;
Player[Temp]=PlayerTurn;
switch(PlayerTurn)
{
case 1: Shown[Temp]='O';break;
case 2: Shown[Temp]='X';break;
}
}
switch(PlayerTurn)
{
case 1: PlayerTurn=2;break;
case 2: PlayerTurn=1;break;
}
}
C=0;
if(!Winner(Player))
cout << "No winner.";
else {
cout << "There's a winner!\n";
while(C<9)
{
cout << Shown[C];
if(C==0||C==1||C==3||C==4||C==6||C==7)
cout << " | ";
else {
cout << "\n---------\n";
}
C++;
}
}
}
It always makes an annoying "BEEP!" when it shows the board. (It cout's the board after TopOfLoop:) All help is appreciated :)
~Macro
using std::cin;
using std::cout;
bool SpacesFilled(bool []);
bool Winner(int []);
int SpaceToChange();
bool SpacesFilled(bool A[])
{
int C=0;
while(C<9)
{
if(!A[C])
return false;
C++;
}
return true;
}
bool Winner(int A[])
{
int C=0;
int v[3]={0,1,2};
while(C<7)
{
if((A[v[0]]==1 && A[v[1]]==1 && A[v[2]]==1)||(A[v[0]]==2 && A[v[1]]==2 && A[v[2]]==2))
return true;
else {
switch(v[0])
{
case 0: v[0]=1;v[1]=4;v[2]=7;break;
case 1: v[0]=2;v[1]=5;v[2]=8;break;
case 2: v[0]=3;v[1]=0;v[2]=6;break;
case 3: v[0]=4;v[1]=3;v[2]=5;break;
case 4: v[0]=6;v[1]=4;v[2]=2;break;
case 6: v[0]=8;v[2]=0;break;
}
}
C++;
}
return false;
}
int SpaceToChange()
{
int var;
cout << "Player, choose your space.\n";
cin >> var;
return var;
}
void main ()
{
int C=0;
int Temp;
char Shown[9];
int Player[9];
bool Taken[9];
int PlayerTurn=1;
while(C<9)
{
Taken[C]=false;
Player[C]=-1;
Shown[C]=C;
C++;
}
C=0;
while(!SpacesFilled(Taken) && !Winner(Player))
{
TopOfLoop:
cout << "Player " << PlayerTurn << ", please choose a square.\n\n";
while(C<9) //Showing tic-tac-toe board
{
cout << Shown[C];
if(C==0||C==1||C==3||C==4||C==6||C==7)
cout << " | ";
else {
cout << "\n---------\n";
}
C++;
}
C=0;
cin >> Temp;
Temp=Temp-1;
if(Taken[Temp])
goto TopOfLoop;
else {
Taken[Temp]=true;
Player[Temp]=PlayerTurn;
switch(PlayerTurn)
{
case 1: Shown[Temp]='O';break;
case 2: Shown[Temp]='X';break;
}
}
switch(PlayerTurn)
{
case 1: PlayerTurn=2;break;
case 2: PlayerTurn=1;break;
}
}
C=0;
if(!Winner(Player))
cout << "No winner.";
else {
cout << "There's a winner!\n";
while(C<9)
{
cout << Shown[C];
if(C==0||C==1||C==3||C==4||C==6||C==7)
cout << " | ";
else {
cout << "\n---------\n";
}
C++;
}
}
}
It always makes an annoying "BEEP!" when it shows the board. (It cout's the board after TopOfLoop:) All help is appreciated :)
~Macro