1 #include "statistics.h"
9 Statistics *Statistics::instance_ = 0;
11 Statistics::Statistics(QObject *parent) :
22 Statistics *Statistics::instance()
25 instance_ = new Statistics;
31 int Statistics::gameCount(Difficulty difficulty) const
33 return games_.at(difficulty);
36 int Statistics::totalGameCount() const
39 for(int i = 0; i < games_.count(); ++i) {
40 count += games_.at(i);
46 qreal Statistics::averageMoves(Difficulty difficulty) const
49 if(games_.at(difficulty) > 0) {
50 count = moves_.at(difficulty) / static_cast<qreal>(games_.at(difficulty));
56 int Statistics::minMoves(Difficulty difficulty) const
58 return minMoves_.at(difficulty);
61 int Statistics::maxMoves(Difficulty difficulty) const
63 return maxMoves_.at(difficulty);
66 void Statistics::addNewScore(int moves, Difficulty difficulty)
68 if(moves_.count() >= difficulty) {
69 moves_[difficulty] += (moves_[difficulty] + moves);
72 if(maxMoves_.count() >= difficulty) {
73 if(maxMoves_.at(difficulty) < moves || maxMoves_.at(difficulty) == 0) {
74 maxMoves_[difficulty] = moves;
78 if(minMoves_.count() >= difficulty) {
79 if(minMoves_.at(difficulty) > moves || minMoves_.at(difficulty) == 0) {
80 minMoves_[difficulty] = moves;
87 void Statistics::increaseGameCount(Difficulty difficulty)
89 if(games_.count() >= difficulty) {
94 void Statistics::readFile()
96 QFile file(QString("%1/%2/%3")
97 .arg(QDir::homePath())
105 if(!file.open(QIODevice::ReadOnly)) {
109 QTextStream in(&file);
112 QString str = in.readLine();
114 QStringList list = str.split(" ");
116 if(list.count() == 5) {
117 moves_[list.at(0).toInt()] = list.at(1).toInt();
118 minMoves_[list.at(0).toInt()] = list.at(2).toInt();
119 maxMoves_[list.at(0).toInt()] = list.at(3).toInt();
120 games_[list.at(0).toInt()] = list.at(4).toInt();
127 void Statistics::saveFile()
129 QFile file(QString("%1/%2/%3")
130 .arg(QDir::homePath())
134 if(!file.open(QIODevice::WriteOnly)) {
138 QTextStream out(&file);
140 for(int i = 0; i < games_.count(); i++) {
141 out << QString("%1 %2 %3 %4 %5\n")
144 .arg(minMoves_.at(i))
145 .arg(maxMoves_.at(i))