-
Notifications
You must be signed in to change notification settings - Fork 0
/
Scoreboard.cpp
67 lines (56 loc) · 1.42 KB
/
Scoreboard.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
#include "Scoreboard.h"
#include <time.h>
#include <vector>
#include <fstream>
#include <algorithm>
#include "ASCII_art.h"
const std::string currentDateTime()
{
time_t now = time(0);
struct tm tstruct;
char buf[80];
tstruct = *localtime(&now);
strftime(buf, sizeof(buf), "%Y-%m-%d.%X", &tstruct);
return buf;
}
void printScoreboard()
{
// reading in the scores
std::ifstream scr{"ScoreLog.txt"};
if (!scr)
{
// Print an error and exit
std::cerr << "ScoreLog.txt could not be opened for reading!\n";
return ;
}
// creating a struct to hold an entire entry
struct scoreEntry
{
std::string name;
int gold;
char w;
std::string date;
};
// creating a vector to store entries
std::vector<scoreEntry> scoreEntries;
scoreEntry s;
// reading in the enrties
while (scr)
{
scr >> s.name >> s.gold >> s.w >> s.date;
scoreEntries.push_back(s);
}
// sorting entries based on gold obtained
std::sort(scoreEntries.begin(),
scoreEntries.end(),
[](const scoreEntry& s1, const scoreEntry& s2) {return s1.gold > s2.gold;});
art::drawLines();
art::drawScoreboard();
int num {1};
// printing the sorted scoreboard to screen
for (const auto i: scoreEntries)
{
std::cout << num++ << ". " <<"Player " << i.name << " obtained "<< i.gold << "; Date and time: "<< i.date <<'\n';
if (num>10) {return;}
}
}