Source.cpp
#include "Header.h"
TTT::TTT()
{
for(int i=0; i<fild+1; i++)
m_tttFild[i] = '*';
}
bool TTT::isWin(const char &mark)
{
if((m_tttFild[1] == mark) && (m_tttFild[4] == mark) && (m_tttFild[7] == mark))
return true;
if((m_tttFild[2] == mark) && (m_tttFild[5] == mark) && (m_tttFild[8] == mark))
return true;
if((m_tttFild[3] == mark) && (m_tttFild[6] == mark) && (m_tttFild[9] == mark))
return true;
if((m_tttFild[1] == mark) && (m_tttFild[2] == mark) && (m_tttFild[3] == mark))
return true;
if((m_tttFild[4] == mark) && (m_tttFild[5] == mark) && (m_tttFild[6] == mark))
return true;
if((m_tttFild[7] == mark) && (m_tttFild[8] == mark) && (m_tttFild[9] == mark))
return true;
if((m_tttFild[1] == mark) && (m_tttFild[5] == mark) && (m_tttFild[9] == mark))
return true;
if((m_tttFild[3] == mark) && (m_tttFild[5] == mark) && (m_tttFild[7] == mark))
return true;
return false;
}
bool TTT::putMark(const int &putPlace, const char &mark)
{
if(m_tttFild[putPlace] == '*'){
m_tttFild[putPlace] = mark;
return true;
}
return false;
}
const std::string TTT::solve(const std::string& input)
{
for(int i=0; i<input.size() && i<fild; i++){
if(i%2==0){
if(!putMark((int)(input.at(i) -'0'), 'o')){
return "Foul : x won.";
}
if(isWin('o')){
return "o won.";
}
}
if(i%2==1){
if(!putMark((int)(input.at(i) -'0'), 'x')){
return "Foul : o won.";
}
if(isWin('x')){
return "x won.";
}
}
}
return "Draw game.";
}
int main()
{
const std::string input = "35497162193";
TTT ttt;
std::cout << ttt.solve(input) << std::endl;
return 0;
}
Source.h
#ifndef _HEADER_H
#define _HEADER_H
#include <string>
#include <iostream>
#define fild 9
class TTT
{
public:
TTT();
const std::string solve(const std::string& input);
private:
char m_tttFild[fild+1];
bool isWin(const char &mark);
bool putMark(const int &putPlace, const char &mark);
};
#endif