#include "vocab.h" #include #include 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 ""; }