-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMemory.cpp
More file actions
139 lines (136 loc) · 2.73 KB
/
Memory.cpp
File metadata and controls
139 lines (136 loc) · 2.73 KB
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
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
#include <iostream>
#include <algorithm>
#include <random>
#include <string>
#include "Memory.h"
#include "Card.h"
namespace MemoryGame
{
Memory::Memory(int rows, int cols) : rows(rows), cols(cols)
{
if ((rows * cols) % 2 != 0) {
throw std::invalid_argument("Size of the board must be even.");
}
isStarted = false;
isProcessingClick = false;
firstSelectedCardRow = -1;
firstSelectedCardCol = -1;
highScore = new HighScore();
}
int Memory::getRows()
{
return rows;
}
int Memory::getCols()
{
return cols;
}
bool Memory::getIsStarted()
{
return isStarted;
}
void Memory::setIsStarted(bool isStarted)
{
this->isStarted = isStarted;
}
Card& Memory::getCard(int row, int col)
{
return board[row][col];
}
bool Memory::CheckForMatch(int row1, int col1, int row2, int col2)
{
if (board[row1][col1].isRevelead() == board[row2][col2].isRevelead())
{
return board[row1][col1].getValue() == board[row2][col2].getValue();
}
return false;
}
void Memory::createBoardWithCards()
{
std::vector<Card> cards;
player = new Player();
for (int i = 1; i <= (rows * cols) / 2; i++) {
cards.push_back(Card(std::to_string(i)));
cards.push_back(Card(std::to_string(i)));
}
shuffle(cards.begin(), cards.end(), std::mt19937(std::random_device()()));
board.resize(rows, std::vector<Card>(cols, Card("")));
int index = 0;
for (int i = 0; i < rows; i++)
{
for (int j = 0 ; j < cols; j++)
{
board[i][j] = cards[index];
index++;
}
}
}
bool Memory::checkForEnd()
{
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < cols; j++)
{
if (board[i][j].isRevelead() == false)
{
return false;
}
}
}
highScore->saveHighScore(player);
return true;
}
int Memory::getFirstSelectedCardRow()
{
return firstSelectedCardRow;
}
void Memory::setFirstSelectedCardRow(int row)
{
this->firstSelectedCardRow = row;
}
int Memory::getFirstSelectedCardCol()
{
return firstSelectedCardCol;
}
void Memory::setFirstSelectedCardCol(int col)
{
this->firstSelectedCardCol = col;
}
void Memory::setSecondSelectedCardRow(int row)
{
this->secondSelectedCardRow = row;
}
int Memory::getSecondSelectedCardRow()
{
return secondSelectedCardRow;
}
void Memory::setSecondSelectedCardCol(int col)
{
this->secondSelectedCardCol = col;
}
int Memory::getSecondSelectedCardCol()
{
return secondSelectedCardCol;
}
bool Memory::getProcessingClick()
{
return isProcessingClick;
}
void Memory::setProcessingClick(bool isProc)
{
this->isProcessingClick = isProc;
}
void Memory::resetSelectedCards()
{
firstSelectedCardRow = -1;
firstSelectedCardCol = -1;
}
Player* Memory::getPlayer()
{
return player;
}
HighScore* Memory::getHighScore()
{
return highScore;
}
}