SparrowBot/app/vocab.cpp
2015-06-05 13:29:55 +02:00

116 lines
2.3 KiB
C++

#include "vocab.h"
#include <time.h>
#include <QFile.h>
Vocab::Vocab()
{
std::srand(time(NULL));
}
Vocab::Vocab(QString filename)
{
std::srand(time(NULL));
load(filename);
}
void Vocab::load(QString filename)
{
QFile file = QFile(filename);
if(file.isReadable())
file.open(QIODevice::ReadOnly);
if(file.isOpen())
{
char[512] buf;
int len;
while(len = file.readLine(buf, 512))
{
if(len > 4)
{
buf[len-1] = 0;
switch(buf[0])
{
case 'n':
addNom(QString(buf+2));
break;
case 'v':
addVerbe(QString(buf+2));
break;
case 'a':
addAdjectif(QString(buf+2));
break;
}
}
}
file.close();
}
}
void Vocab::save(QString filename)
{
QFile file = QFile(filename);
if(file.isWritable())
file.open(QIODevice::WriteOnly);
if(file.isOpen())
{
file.write(QString("#NOMS :\n"));
for(QString n : noms)
file.write(QString("n:%1\n").arg(n));
file.write(QString("\n#VERBES :\n"));
for(QString v : verbes)
file.write(QString("v:%1\n").arg(v));
file.write(QString("\n#ADJECTIFS :\n"));
for(QString a : adjectifs)
file.write(QString("a:%1\n").arg(a));
file.close();
}
}
void Vocab::append(Vocab& voc)
{
for(QString n : voc.noms)
addNom(n);
for(QString v : voc.verbes)
addVerbe(v);
for(QString a : voc.adjectifs)
addAdjectif(a);
}
void Vocab::addNom(QString nom)
{
noms.push_back(nom);
}
void Vocab::addAdjectif(QString adj)
{
adjectifs.push_back(adj);
}
void Vocab::addVerbe(QString ver)
{
verbes.push_back(ver);
}
QString Vocab::getRandNom()
{
if(noms.size())
return noms[std::rand()%noms.size()];
else
return "";
}
QString Vocab::getRandAdjectif()
{
if(adjectifs.size())
return adjectifs[std::rand()%adjectifs.size()];
else
return "";
}
QString Vocab::getRandVerbe()
{
if(verbes.size())
return verbes[std::rand()%verbes.size()];
else
return "";
}