Advertisement
alch1337

Vocabulary v0.2

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