Advertisement
alch1337

Vocabulary v0.1

May 18th, 2013
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.66 KB | None | 0 0
  1. #include<tchar.h>
  2. #include<urlmon.h>
  3. #include<iostream>
  4. #include<conio.h>
  5. #include<string>
  6. #include<fstream>
  7. #include<vector>
  8. #include<iosfwd>
  9. #include<algorithm>
  10. #include"bass.h"
  11. #include<ctime>
  12. #include<set>
  13.  
  14. #pragma comment(lib, "bass.lib")
  15. #pragma comment(lib, "urlmon.lib")
  16.  
  17. std::vector<std::string> WordsEng;
  18. std::vector<std::string> WordsPol;
  19. unsigned nIlosc;
  20.  
  21. #ifndef __DEBUG
  22. std::wstring s2ws(const std::string& s)
  23. {
  24.     int len;
  25.     int slength = (int)s.length() + 1;
  26.     len = MultiByteToWideChar(CP_ACP, 0, s.c_str(), slength, 0, 0);
  27.     std::wstring r(len, L'\0');
  28.     MultiByteToWideChar(CP_ACP, 0, s.c_str(), slength, &r[0], len);
  29.     return r;
  30. }
  31. #endif
  32.  
  33. void DownloadS(std::string& sWord)
  34. {
  35.     std::string sUrl = "http://www.diki.pl/images/en/mp3/"+ sWord + ".mp3";
  36.     std::string sDest = "C:/Vocabulary/Sounds/"+ sWord + ".mp3";
  37.     //URLDownloadToFile(NULL, s2ws(sUrl).c_str(), s2ws(sDest).c_str(), 0, NULL );
  38.     URLDownloadToFile(NULL, sUrl.c_str(), sDest.c_str(), 0, NULL );
  39.  
  40. }
  41.  
  42. void PlayS(std::string& sWord)
  43. {
  44.     std::string sPath = "C:/Vocabulary/Sounds/"+ sWord + ".mp3";
  45.     HSTREAM stream = BASS_StreamCreateFile(FALSE, sPath.c_str(), 0, 0, 0);
  46.     BASS_ChannelPlay(stream, FALSE);
  47.     Sleep(1500);
  48.     BASS_StreamFree(stream);
  49. }
  50.  
  51. void AddW(std::string& sWordEng, std::string& sWordPol, void (*pfDownloadS)(std::string&))
  52. {
  53.     std::fstream file;
  54.     file.open("vocabulary.txt", std::ios::app);
  55.  
  56.     ++nIlosc;
  57.     WordsEng.push_back(sWordEng);
  58.     WordsPol.push_back(sWordPol);
  59.     pfDownloadS(sWordEng);
  60.    
  61.     file<<sWordEng<<std::endl<<sWordPol<<std::endl;
  62.  
  63.     file.close();
  64. }
  65.  
  66. void LoadW()
  67. {
  68.     std::fstream file("vocabulary.txt");
  69.     std::string sWord = "";
  70.  
  71.     WordsEng.clear();
  72.     WordsPol.clear();
  73.     nIlosc = 0;
  74.    
  75.     while (!file.eof())
  76.     {
  77.         std::getline(file, sWord);
  78.         ++nIlosc;
  79.         if (!(nIlosc%2==0)) WordsEng.push_back(sWord);
  80.         else WordsPol.push_back(sWord);
  81.     }
  82.     nIlosc /= 2;
  83.     file.close();
  84. }
  85.  
  86. void Test (unsigned nIloscSlowek, void (*pfPlayS)(std::string&), char& cMode)
  87. {
  88.     std::string sWord;
  89.     unsigned nMode = 0, nGood = 0, nCount = 0;
  90.     std::vector<unsigned> vuIndeks;
  91.  
  92.     if (nIloscSlowek>nIlosc)
  93.     {
  94.         std::cout<<"Bledna ilosc!"<<std::endl;
  95.         return;
  96.     }
  97.     if (nIloscSlowek == 0 ) nCount = WordsEng.size();
  98.     else nCount = nIloscSlowek;
  99.  
  100.     for (unsigned i = 0; i<nIlosc; ++i) vuIndeks.push_back(i);
  101.     std::random_shuffle(vuIndeks.begin(), vuIndeks.end());
  102.  
  103.     for (unsigned i = 0; i<nCount; i++)
  104.     {
  105.         switch (cMode)
  106.         {
  107.             case '1':
  108.                 std::cout<<"Co oznacza: "<<WordsEng[vuIndeks[i]]<<"?"<<std::endl;
  109.                 std::cin>>sWord;
  110.                 if (sWord == WordsPol[vuIndeks[i]]) { std::cout<<"Bardzo dobrze!"<<std::endl; ++nGood; }
  111.                 else std::cout<<"Zle! To slowko oznacza: "<<WordsPol[vuIndeks[i]]<<std::endl;
  112.                 break;
  113.             case '2':
  114.                 std::cout<<"Podaj angielskie slowko oznaczajace: "<<WordsPol[vuIndeks[i]]<<"!"<<std::endl;
  115.                 std::cin>>sWord;
  116.                 if (sWord == WordsEng[vuIndeks[i]]) { std::cout<<"Bardzo dobrze!"<<std::endl; ++nGood; }
  117.                 else std::cout<<"Zle! Chodzilo mi o slowko: "<<WordsEng[vuIndeks[i]]<<std::endl;
  118.                 break;
  119.             case '3':
  120.                 nMode = rand()%2;
  121.                 switch (nMode)
  122.                 {
  123.                     case 0:
  124.                         std::cout<<"Co oznacza: "<<WordsEng[vuIndeks[i]]<<"?"<<std::endl;
  125.                         std::cin>>sWord;
  126.                         if (sWord == WordsPol[vuIndeks[i]]){ std::cout<<"Bardzo dobrze!"<<std::endl; ++nGood; }
  127.                         else std::cout<<"Zle! To slowko oznacza: "<<WordsPol[vuIndeks[i]]<<std::endl;
  128.                         break;
  129.                     case 1:
  130.                         std::cout<<"Podaj angielskie slowko oznaczajace: "<<WordsPol[vuIndeks[i]]<<"!"<<std::endl;
  131.                         std::cin>>sWord;
  132.                         if (sWord == WordsEng[vuIndeks[i]]) { std::cout<<"Bardzo dobrze!"<<std::endl; ++nGood; }
  133.                         else std::cout<<"Zle! Chodzilo mi o slowko: "<<WordsEng[vuIndeks[i]]<<std::endl;
  134.                         break;
  135.                 }
  136.                 break;
  137.             }
  138.         pfPlayS(WordsEng[vuIndeks[i]]);
  139.     }
  140.     std::cout<<"Wynik testu: "<<nGood<<"/"<<nIloscSlowek<<" - "<<((float)nGood/nIloscSlowek)*100<<"%"<<std::endl;
  141. }
  142.  
  143. int main()
  144. {
  145.     srand(static_cast<unsigned>(time(NULL)));
  146.     nIlosc = 0;
  147.     BASS_Init(-1, 44100, 0, GetConsoleWindow(), NULL);
  148.     LoadW();
  149.     char cChoice;
  150.     std::string sWordEng, sWordPol;
  151.     int nIloscSlowek;
  152.  
  153.     for (;;)
  154.     {
  155.         std::cout   <<"=============================="<<std::endl
  156.                     <<"|                            |"<<std::endl
  157.                     <<"| 1.Dodaj nowe slowka        |"<<std::endl
  158.                     <<"| 2.Posluchaj                |"<<std::endl
  159.                     <<"| 3.Test                     |"<<std::endl
  160.                     <<"| 4.Wypisz wszystkie slowka  |"<<std::endl
  161.                     <<"|                            |"<<std::endl
  162.                     <<"=============================="<<std::endl;
  163.         std::cin>>cChoice;
  164.         switch (cChoice)
  165.         {
  166.             case '1':
  167.                 std::cout<<"Wpisz x aby przerwac!"<<std::endl<<"=============================="<<std::endl;
  168.                 for(;;)
  169.                 {
  170.                     std::cout<<"angielski: ";
  171.                     std::cin>>sWordEng;
  172.                     if (sWordEng == "x") break;
  173.                     std::cout<<"polski: ";
  174.                     std::cin>>sWordPol;
  175.                     if (sWordPol == "x") break;
  176.                     std::cout<<"=============================="<<std::endl;
  177.                     AddW(sWordEng, sWordPol, DownloadS);
  178.                 }
  179.                 LoadW();
  180.                 break;
  181.             case '2':
  182.                 std::cout<<"Wpisz slowko: ";
  183.                 std::cin>>sWordEng;
  184.                 DownloadS(sWordEng);
  185.                 PlayS(sWordEng);
  186.                 break;
  187.             case '3':
  188.                 std::cout<<"Ilosc slowek: ";
  189.                 std::cin>>nIloscSlowek;
  190.                 std::cout   <<"Wybierz forme testu:"<<std::endl
  191.                             <<"1. ang -> pol"<<std::endl
  192.                             <<"2. pol -> ang"<<std::endl
  193.                             <<"3. losowo"<<std::endl;
  194.                 std::cin>>cChoice;
  195.                 Test(nIloscSlowek, PlayS, cChoice);
  196.                 break;
  197.             case '4':
  198.                 for (unsigned i = 0; i<nIlosc;++i)
  199.                 {
  200.                     std::cout<<WordsEng[i]<<" - "<<WordsPol[i]<<std::endl;
  201.                 }
  202.                 break;
  203.             default:
  204.                 BASS_Free();
  205.                 exit(0);
  206.         }
  207.     }
  208. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement