-
Notifications
You must be signed in to change notification settings - Fork 0
/
play.cpp
37 lines (32 loc) · 1 KB
/
play.cpp
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
#include "./match.h"
#include "./strategy1.h"
#include "./strategy2.h"
Outcome playGame() {
Match m{};
while (true) {
std::cout << m << '\n';
Move m1 = strategy1(m.getBoardState(), CellState::player1);
if (!m.makeMove(m1)) {
std::cout << "Player 1: Invalid move " << m1 << '\n';
return Outcome::player2Won;
}
if (m.getOutcome() != Outcome::playerTurn) {
std::cout << m << '\n';
return m.getOutcome();
}
std::cout << m << '\n';
Move m2 = strategy2(m.getBoardState(), CellState::player2);
if (!m.makeMove(m2)) {
std::cout << "Player 2: Invalid move" << m2 << '\n';
return Outcome::player1Won;
}
if (m.getOutcome() != Outcome::playerTurn) {
std::cout << m << '\n';
return m.getOutcome();
}
if (m.getOutcome() == Outcome::draw) {
std::cout << m << '\n';
return Outcome::draw;
}
}
}