Implementing Boost into Tic Tac Toe

I have made a simple text based tic tac toe game. I was wondering what form of Boost would I implement into it? Could I use a For-Each or something else?

Here's what my code looks like.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
#include <iostream>

using namespace std;

char square[10] = {'0','1','2','3','4','5','6','7','8','9'};
int ifwin();
void layout();

int main()
{
	int player = 1,i,choice;
	char entry;
	
	do
	{
		layout();
		player = (player%2)?1:2;

		cout << "Player " << player << ", enter a number:  ";
		cin >> choice;

		entry = (player == 1) ? 'X' : 'O';

		if (choice == 1 && square[1] == '1')
			square[1] = entry;
		else if (choice == 2 && square[2] == '2')
			square[2] = entry;
		else if (choice == 3 && square[3] == '3')
			square[3] = entry;
		else if (choice == 4 && square[4] == '4')
			square[4] = entry;
		else if (choice == 5 && square[5] == '5')
			square[5] = entry;
		else if (choice == 6 && square[6] == '6')
			square[6] = entry;
		else if (choice == 7 && square[7] == '7')
			square[7] = entry;
		else if (choice == 8 && square[8] == '8')
			square[8] = entry;
		else if (choice == 9 && square[9] == '9')
			square[9] = entry;
		else
		{
			cout<<"Invalid entry ";
			player--;
			cin.ignore();
			cin.get();
		}

		i = ifwin();
		player++;
	}
	while(i==-1);
	layout();
	if(i==1)
		cout<<"Player "<<--player<<" win ";
	else
		cout<<"Draw";
	cin.ignore();
	cin.get();

	return 0;
}


int ifwin()
{
	if (square[1] == square[2] && square[2] == square[3])
		return 1;
	else if (square[4] == square[5] && square[5] == square[6])
		return 1;
	else if (square[7] == square[8] && square[8] == square[9])
		return 1;
	else if (square[1] == square[4] && square[4] == square[7])
		return 1;
	else if (square[2] == square[5] && square[5] == square[8])
		return 1;
	else if (square[3] == square[6] && square[6] == square[9])
		return 1;
	else if (square[1] == square[5] && square[5] == square[9])
		return 1;
	else if (square[3] == square[5] && square[5] == square[7])
		return 1;
	else if (square[1] != '1' && square[2] != '2' && square[3] != '3' && square[4] != '4'
 && square[5] != '5' && square[6] != '6' && square[7] != '7' && square[8] != '8' && square[9] != '9')
		return 0;
	else
		return -1;
}





void layout()
{
	system("cls");
	cout << "tTic Tac Toe";
	cout << "Player 1 is X  -  Player 2 is O" << endl << endl;
	cout << endl;
	cout << "     |     |     " << endl;
	cout << "  " << square[1] << "  |  " << square[2] << "  |  " << square[3] << endl;
	cout << "_____|_____|_____" << endl;
	cout << "     |     |     " << endl;
	cout << "  " << square[4] << "  |  " << square[5] << "  |  " << square[6] << endl;
	cout << "_____|_____|_____" << endl;
	cout << "     |     |     " << endl;
	cout << "  " << square[7] << "  |  " << square[8] << "  |  " << square[9] << endl;
	cout << "     |     |     " << endl << endl;
}


I do not understand why do you want to use boost? In my opinion it is a very bad idea to use boost in such simple programs.

I would advice to use standard algorithm std::none_of instead of the expression

1
2
	else if (square[1] != '1' && square[2] != '2' && square[3] != '3' && square[4] != '4'
 && square[5] != '5' && square[6] != '6' && square[7] != '7' && square[8] != '8' && square[9] != '9')



For example

else if ( std::none_of( square + 1, square + 10, []( char c ) { return ( isdigit( c ) ); } ) )


Instead of the code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
		if (choice == 1 && square[1] == '1')
			square[1] = entry;
		else if (choice == 2 && square[2] == '2')
			square[2] = entry;
		else if (choice == 3 && square[3] == '3')
			square[3] = entry;
		else if (choice == 4 && square[4] == '4')
			square[4] = entry;
		else if (choice == 5 && square[5] == '5')
			square[5] = entry;
		else if (choice == 6 && square[6] == '6')
			square[6] = entry;
		else if (choice == 7 && square[7] == '7')
			square[7] = entry;
		else if (choice == 8 && square[8] == '8')
			square[8] = entry;
		else if (choice == 9 && square[9] == '9')
			square[9] = entry;


I would use

1
2
3
4
if ( 0 < choice && choice <= 9 && square[choice] - '0' == choice )
	suqare[choice] = entry;
else
// invalid entry  


And at last I would write a class TicTacToe.:)
Topic archived. No new replies allowed.