-
Notifications
You must be signed in to change notification settings - Fork 0
/
ConnectFourDiag.cpp
113 lines (89 loc) · 2.26 KB
/
ConnectFourDiag.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
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
111
112
/*
* File: ConnectFourDiag.cpp
* Author: Emre OZGUN
*
*Implemantation of ConnectFourDiag class
*/
#include <iostream>
#include <fstream>
#include "ConnectFourAbstract.h"
#include "ConnectFourDiag.h"
#include <iostream>
namespace ConnectFourGame
{
using std::ostream;
using std::string;
using std::istream;
ConnectFourDiag::ConnectFourDiag() : ConnectFourAbstract()
{
//Empty implementation
}
//same assignment with default constructor except width,height and dynamic gameboard
ConnectFourDiag::ConnectFourDiag(int width,int height) : ConnectFourAbstract(width,height)
{
int i,j;
this->setHeight(height);
this->setWidth(width);
this->gameBoard = new Cell*[height];
for(int i = 0; i < height; i++)
gameBoard[i] = new Cell[width];
for( i = 0; i < height; i++)
{
for(j = 0; j <width; j++)
{
gameBoard[i][j].setType(Empty);
}
}
}
//Base class destructor run all destructors automaticly
ConnectFourDiag::~ConnectFourDiag()
{
}
ConnectFourDiag::ConnectFourDiag(const ConnectFourAbstract &game) : ConnectFourAbstract(game)
{
//Empty implementation
}
//I assign same data members and then copy the gameboard
ConnectFourDiag & ConnectFourDiag::operator = (const ConnectFourDiag &rightSideObje)
{
this->~ConnectFourDiag();
ConnectFourAbstract::operator=(rightSideObje);
return *this;
}
//Overrided function
int ConnectFourDiag::checkWinner(Celltype user, bool showConnect)
{
decltype(user) userTemp;
//if There are 4 'X' connect,user2 will be win
if (user == user1)
{
if (showConnect)
userTemp = user1_x;
else
userTemp = user1;
//control only diognal
if (checkDiognalRight(user, userTemp) || checkDiognalLeft(user, userTemp))
{
return 1;
}
}
//if There are 4 'O' connect,user2 will be win
if (user == user2)
{
if (showConnect)
userTemp = user2_o;
else
userTemp = user2;
if (checkDiognalRight(user, userTemp) || checkDiognalLeft(user, userTemp))
{
return 2;
}
}
//if every cell is full,it will be draw
if (turn == getWidth() * getHeight() - 1)
{
return 3;
}
return 0;
}
}