Advertisement
patryk

Virtual Keyboard 2++

Oct 25th, 2011
225
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 21.25 KB | None | 0 0
  1. #include <iostream>
  2. #include<dos.h>
  3. #include <conio.h>
  4. #include<stdio.h>
  5. #include<string>
  6. #include<string.h>
  7. #include<windows.h>
  8.  
  9. // --------- DZWIEKI --------- //
  10. #define C 16.35
  11. #define Cis 17.325
  12. #define D 18.35625
  13. #define Dis 19.44375
  14. #define E 20.6
  15. #define F 21.825
  16. #define Fis 23.125
  17. #define G 24.5
  18. #define Gis 25.95625
  19. #define A 27.5
  20. #define B 29.1375
  21. #define H 30.86875
  22. #define C2 32.70625
  23.  
  24.  
  25. // --------- OKTAWY -----------//
  26. #define OK_Sk 1
  27. #define OK_K 2
  28. #define OK_W 4
  29. #define OK_M 8
  30. #define OK_R 16
  31. #define OK_D 32
  32. #define OK_T 64
  33. #define OK_C 128
  34. #define OK_P 256
  35. #define OK_S 512
  36.  
  37.  
  38. class keyboard
  39.   {
  40.   public:
  41.         int tempo, Hz, Dzwiek;
  42.         char key, oktawa, dzwiek, wybor, nazwapliku[30];
  43.  
  44.         keyboard();
  45.         void menu();
  46.         void rysuj();
  47.         void naglowek();
  48.         void pomoc();
  49.         void oktawy();
  50.         void graj();
  51.         void nagraj();
  52.         void odtworz();
  53.         void utwory();
  54.   };
  55. //-----------class keyboard----------------//
  56. keyboard::keyboard()
  57.   {
  58.   clrscr();
  59.   }
  60. //-------------konstruktor---------------//
  61.  
  62.  
  63. void keyboard::odtworz()
  64.   {
  65.   int o_tempo, o_dzwiek, o_Hz;
  66.   naglowek();
  67.   gotoxy(1,3);
  68.   textcolor(15); cprintf("Nazwa pliku: ");
  69.   scanf("%s", nazwapliku);
  70.  
  71.   FILE *in;
  72.   if ((in = fopen(nazwapliku, "r"))== NULL)
  73.     {
  74.     fprintf(stderr, "Nie mozna otworzyc pliku.\n");
  75.     }
  76.   else
  77.     {
  78.     while(feof(in)==0)
  79.       {
  80.       fscanf(in, "%d", &o_dzwiek);
  81.       fscanf(in, "%d", &o_Hz);
  82.       fscanf(in, "%d", &o_tempo);
  83.       Beep(o_dzwiek * o_Hz, o_tempo);
  84.       }
  85.     fclose(in);
  86.     }
  87.     menu();
  88.     menu();
  89.   }
  90. //------------------void odtworz---------------------//
  91.  
  92. void keyboard::nagraj()
  93.   {
  94.   naglowek();
  95.   gotoxy(1,3);
  96.   textcolor(15); cprintf("Nazwa pliku: ");
  97.   scanf("%s", nazwapliku);
  98.   rysuj(); // rysowanie klawiszy
  99.  
  100.   do{
  101.     gotoxy(60, 3);
  102.     textcolor(15); cprintf("Tempo: "); textcolor(14); cprintf("%d", tempo);
  103.     gotoxy(60,4);
  104.     textcolor(15); cprintf("Oktawa: ");  textcolor(14); cprintf("%c", oktawa);
  105.     gotoxy(60,5);
  106.     textcolor(15); cprintf("Grany dzwiek: ");textcolor(13); cprintf("%c", dzwiek);
  107.     gotoxy(50, 24);
  108.     textcolor(11);cprintf("Aby wrocic do MENU wcisnij: ");textcolor(14);cprintf("F2");
  109.     gotoxy(60, 6);
  110.     textbackground(12);textcolor(15); cprintf("REC*");textbackground(0);
  111.     key = getch();
  112.     gotoxy(1, 16);
  113.     gotoxy(60, 7);
  114.     printf("                 ");
  115.  
  116.     switch(key)
  117.         {
  118.         case 122:
  119.                         {
  120.                         Dzwiek = C ;
  121.                         Beep(Dzwiek * Hz, tempo);
  122.                         dzwiek = 'C';
  123.                         break;
  124.                         }
  125.         case 115:
  126.                         {
  127.                         Dzwiek = Cis ;
  128.                         Beep(Dzwiek * Hz, tempo);
  129.                         dzwiek = 'C';
  130.                         break;
  131.                         }
  132.         case 120:
  133.                         {
  134.                         Dzwiek = D;
  135.                         Beep(Dzwiek * Hz, tempo);
  136.                         dzwiek = 'D';
  137.                         break;
  138.                         }
  139.         case 100:
  140.                         {
  141.                         Dzwiek = Dis;
  142.                         Beep(Dzwiek * Hz, tempo);
  143.                         dzwiek = 'D';
  144.                         break;
  145.                         }
  146.         case 99:
  147.                         {
  148.                         Dzwiek = E;
  149.                         Beep(Dzwiek * Hz, tempo);
  150.                         dzwiek = 'E';
  151.                         break;
  152.                         }
  153.         case 118:
  154.                         {
  155.                         Dzwiek = F;
  156.                         Beep(Dzwiek * Hz, tempo);
  157.                         dzwiek = 'F';
  158.                         break;
  159.                         }
  160.         case 103:
  161.                         {
  162.                         Dzwiek = Fis;
  163.                         Beep(Dzwiek * Hz, tempo);
  164.                         dzwiek = 'F';
  165.                         break;
  166.                         }
  167.         case 98:
  168.                         {
  169.                         Dzwiek = G;
  170.                         Beep(Dzwiek * Hz, tempo);
  171.                         dzwiek = 'G';
  172.                         break;
  173.                         }
  174.         case 104:
  175.                         {
  176.                         Dzwiek = Gis;
  177.                         Beep(Dzwiek * Hz, tempo);
  178.                         dzwiek = 'G';
  179.                         break;
  180.                         }
  181.         case 110:
  182.                         {
  183.                         Dzwiek = A;
  184.                         Beep(Dzwiek * Hz, tempo);
  185.                         dzwiek = 'A';
  186.                         break;
  187.                         }
  188.         case 106:
  189.                         {
  190.                         Dzwiek = B;
  191.                         Beep(Dzwiek * Hz, tempo);
  192.                         dzwiek = 'B';
  193.                         break;
  194.                         }
  195.         case 109:
  196.                         {
  197.                         Dzwiek = H;
  198.                         Beep(Dzwiek * Hz, tempo);
  199.                         dzwiek = 'H';
  200.                         break;
  201.                         }
  202.         case 44:
  203.                         {
  204.                         Dzwiek = C2;
  205.                         Beep(Dzwiek * Hz, tempo);
  206.                         dzwiek = 'C';
  207.                         break;
  208.                         }
  209.         case 9:
  210.                         {
  211.                         gotoxy(67, 3);
  212.                         printf("         ");
  213.                         gotoxy(67, 3);
  214.                         scanf("%d", &tempo);
  215.                         break;
  216.                         }
  217.         case 49:
  218.                         {
  219.                         Hz = OK_Sk;
  220.                         oktawa = 'S';
  221.                         break;
  222.                         }
  223.         case 50:
  224.                         {
  225.                         Hz = OK_K;
  226.                         oktawa = 'K';
  227.                         break;
  228.                         }
  229.         case 51:
  230.                         {
  231.                         Hz = OK_W;
  232.                         oktawa = 'W';
  233.                         break;
  234.                         }
  235.         case 52:
  236.                         {
  237.                         Hz = OK_M;
  238.                         oktawa = 'M';
  239.                         break;
  240.                         }
  241.         case 53:
  242.                         {
  243.                         Hz = OK_R;
  244.                         oktawa = 'R';
  245.                         break;
  246.                         }
  247.         case 54:
  248.                         {
  249.                         Hz = OK_D;
  250.                         oktawa = 'D';
  251.                         break;
  252.                         }
  253.         case 55:
  254.                         {
  255.                         Hz = OK_T;
  256.                         oktawa = 'T';
  257.                         break;
  258.                         }
  259.         case 56:
  260.                         {
  261.                         Hz = OK_C;
  262.                         oktawa = 'C';
  263.                         break;
  264.                         }
  265.         case 57:
  266.                         {
  267.                         Hz = OK_P;
  268.                         oktawa = 'P';
  269.                         break;
  270.                         }
  271.         case 48:
  272.                         {
  273.                         Hz = OK_S;
  274.                         oktawa = 'S';
  275.                         break;
  276.                         }
  277.        case 96:
  278.                         {
  279.                         oktawy();
  280.                         break;
  281.                         }
  282.         case 60:
  283.                         {
  284.                         utwory();
  285.                         utwory();
  286.                         break;
  287.                         }
  288.         default:
  289.                         {
  290.                         gotoxy(60, 7);
  291.                         textcolor(11);
  292.                         cprintf("Niewlasciwy wybor");
  293.                         break;
  294.                         }
  295.  
  296.         }
  297.     if(key==122 || key==115 || key==120 || key==100 || key==99 || key==118 || key==103 || key==98|| key==104 || key==110 || key==106 || key==109 || key==44)
  298.       {
  299.       FILE *out;
  300.       if ((out = fopen(nazwapliku, "at"))== NULL)
  301.         {
  302.         fprintf(stderr, "Nie mozna otworzyc pliku.\n");
  303.         }
  304.       else
  305.         {
  306.         fprintf(out, "%d", Dzwiek);
  307.         fprintf(out, "\t");
  308.         fprintf(out, "%d", Hz);
  309.         fprintf(out, "\t");
  310.         fprintf(out, "%d", tempo);
  311.         fprintf(out, "\n");
  312.         fclose(out);
  313.         }
  314.       }
  315.  
  316.     }while(key!='q');
  317.   }
  318. //-------void nagraj-------//
  319.  
  320. void keyboard::graj()
  321.   {
  322.   rysuj(); // rysowanie klawiszy
  323.   tempo = 0;
  324.   pomoc();
  325.   do{
  326.     gotoxy(60, 3);
  327.     textcolor(15); cprintf("Tempo: "); textcolor(14); cprintf("%d", tempo);
  328.     gotoxy(60,4);
  329.     textcolor(15); cprintf("Oktawa: ");  textcolor(14); cprintf("%c", oktawa);
  330.     gotoxy(1, 16);
  331.     gotoxy(60,5);
  332.     textcolor(15); cprintf("Grany dzwiek: ");textcolor(13); cprintf("%c", dzwiek);
  333.     gotoxy(1, 16);
  334.     key = getch();
  335.     gotoxy(60, 6);
  336.     printf("                 ");
  337.  
  338.     switch(key)
  339.         {
  340.         case 122:
  341.                         {
  342.                         Beep(C * Hz, tempo);
  343.                         dzwiek = 'C';
  344.                         break;
  345.                         }
  346.         case 115:
  347.                         {
  348.                         Beep(Cis * Hz, tempo);
  349.                         dzwiek = 'C';
  350.                         break;
  351.                         }
  352.         case 120:
  353.                         {
  354.                         Beep(D * Hz, tempo);
  355.                         dzwiek = 'D';
  356.                         break;
  357.                         }
  358.         case 100:
  359.                         {
  360.                         Beep(Dis * Hz, tempo);
  361.                         dzwiek = 'D';
  362.                         break;
  363.                         }
  364.         case 99:
  365.                         {
  366.                         Beep(E * Hz, tempo);
  367.                         dzwiek = 'E';
  368.                         break;
  369.                         }
  370.         case 118:
  371.                         {
  372.                         Beep(F * Hz, tempo);
  373.                         dzwiek = 'F';
  374.                         break;
  375.                         }
  376.         case 103:
  377.                         {
  378.                         Beep(Fis * Hz, tempo);
  379.                         dzwiek = 'F';
  380.                         break;
  381.                         }
  382.         case 98:
  383.                         {
  384.                         Beep(G * Hz, tempo);
  385.                         dzwiek = 'G';
  386.                         break;
  387.                         }
  388.         case 104:
  389.                         {
  390.                         Beep(Gis * Hz, tempo);
  391.                         dzwiek = 'G';
  392.                         break;
  393.                         }
  394.         case 110:
  395.                         {
  396.                         Beep(A * Hz, tempo);
  397.                         dzwiek = 'A';
  398.                         break;
  399.                         }
  400.         case 106:
  401.                         {
  402.                         Beep(B * Hz, tempo);
  403.                         dzwiek = 'B';
  404.                         break;
  405.                         }
  406.         case 109:
  407.                         {
  408.                         Beep(H * Hz, tempo);
  409.                         dzwiek = 'H';
  410.                         break;
  411.                         }
  412.         case 44:
  413.                         {
  414.                         Beep(C2 * Hz, tempo);
  415.                         dzwiek = 'C';
  416.                         break;
  417.                         }
  418.         case 9:
  419.                         {
  420.                         gotoxy(67, 3);
  421.                         printf("         ");
  422.                         gotoxy(67, 3);
  423.                         scanf("%d", &tempo);
  424.                         break;
  425.                         }
  426.         case 49:
  427.                         {
  428.                         Hz = OK_Sk;
  429.                         oktawa = 'S';
  430.                         break;
  431.                         }
  432.         case 50:
  433.                         {
  434.                         Hz = OK_K;
  435.                         oktawa = 'K';
  436.                         break;
  437.                         }
  438.         case 51:
  439.                         {
  440.                         Hz = OK_W;
  441.                         oktawa = 'W';
  442.                         break;
  443.                         }
  444.         case 52:
  445.                         {
  446.                         Hz = OK_M;
  447.                         oktawa = 'M';
  448.                         break;
  449.                         }
  450.         case 53:
  451.                         {
  452.                         Hz = OK_R;
  453.                         oktawa = 'R';
  454.                         break;
  455.                         }
  456.         case 54:
  457.                         {
  458.                         Hz = OK_D;
  459.                         oktawa = 'D';
  460.                         break;
  461.                         }
  462.         case 55:
  463.                         {
  464.                         Hz = OK_T;
  465.                         oktawa = 'T';
  466.                         break;
  467.                         }
  468.         case 56:
  469.                         {
  470.                         Hz = OK_C;
  471.                         oktawa = 'C';
  472.                         break;
  473.                         }
  474.         case 57:
  475.                         {
  476.                         Hz = OK_P;
  477.                         oktawa = 'P';
  478.                         break;
  479.                         }
  480.         case 48:
  481.                         {
  482.                         Hz = OK_S;
  483.                         oktawa = 'S';
  484.                         break;
  485.                         }
  486.        case 96:
  487.                         {
  488.                         oktawy();
  489.                         break;
  490.                         }
  491.         case 59:
  492.                         {
  493.                         pomoc();
  494.                         break;
  495.                         }
  496.         case 60:
  497.                         {
  498.                         utwory();
  499.                         break;
  500.                         }
  501.         case 61:
  502.                         {
  503.                         if(oktawa==0)
  504.                                 {
  505.                                 gotoxy(60, 6);
  506.                                 textcolor(12);cprintf("Oktawa jest pusta");
  507.                                 break;
  508.                                 }
  509.                         if(tempo==0)
  510.                                 {
  511.                                 gotoxy(60, 6);
  512.                                 textcolor(12);cprintf("Tempo jest puste");
  513.                                 break;
  514.                                 }
  515.                         nagraj();
  516.                         }
  517.         default:
  518.                         {
  519.                         gotoxy(60, 6);
  520.                         textcolor(11);
  521.                         cprintf("Niewlasciwy wybor");
  522.                         break;
  523.                         }
  524.  
  525.         }
  526.  
  527.     }while(key!='qwe');
  528.   }
  529. //-----------void graj---------------//
  530.  
  531. void keyboard::pomoc()
  532.   {
  533.   gotoxy(1, 16);
  534.   textcolor(15); cprintf("Aby zmienic tempo wcisnij: ");textcolor(14); cprintf("TAB");
  535.   gotoxy(1, 17);
  536.   textcolor(15); cprintf("Aby zmienic oktawe wcisnij: ");textcolor(14); cprintf("TYLDA");
  537.   gotoxy(1, 18);
  538.   textcolor(13); cprintf("Badz, ");
  539.   gotoxy(1, 19);
  540.   textcolor(15); cprintf("Wcisnij jeden z klawiszy: ");
  541.   gotoxy(1, 20);
  542.   textcolor(14); cprintf("1 - Subkontra");
  543.   gotoxy(20, 20);
  544.   cprintf("2 - Kontra");
  545.   gotoxy(1, 21);
  546.   cprintf("3 - Wielka");
  547.   gotoxy(20, 21);
  548.   cprintf("4 - Mala");
  549.   gotoxy(1, 22);
  550.   cprintf("5 - Razkreslna");
  551.   gotoxy(20, 22);
  552.   cprintf("6 - Dwukreslna");
  553.   gotoxy(1, 23);
  554.   cprintf("7 - Trzykreslna");
  555.   gotoxy(20, 23);
  556.   cprintf("8 - Czterokreslna");
  557.   gotoxy(1, 24);
  558.   cprintf("9 - Pieciokreslna");
  559.   gotoxy(20, 24);
  560.   cprintf("0 - Szesckreslna");
  561.   gotoxy(50, 23);
  562.   textcolor(11);cprintf("Aby zapisac dzwiek wcisnij: ");textcolor(14);cprintf("F3");
  563.   gotoxy(50, 24);
  564.   textcolor(11);cprintf("Aby wrocic do MENU wcisnij: ");textcolor(14);cprintf("F2");
  565.   }
  566. //-----------void pomoc----------------//
  567.  
  568. void keyboard::menu()
  569.   {
  570.   naglowek();
  571.   gotoxy(1,3);
  572.   textcolor(15); cprintf("Co chcesz zrobic: ");
  573.   gotoxy(1, 4);
  574.   textcolor(14); cprintf("* G - Grac na Instrumencie");
  575.   gotoxy(1, 5);
  576.   textcolor(14); cprintf("* P - Posluchac Utworow");
  577.   gotoxy(1,6);
  578.   textcolor(14);cprintf("* O - Odtworzyc Utwor");
  579.   gotoxy(1,7);
  580.   textcolor(14); cprintf("* Q - Wylaczyc Program");
  581.   gotoxy(1, 8);
  582.   printf(": ");
  583.   scanf("%c", &wybor);
  584.   switch(wybor)
  585.         {
  586.         case 'g':
  587.         case 'G':
  588.                 {
  589.                 graj();
  590.                 break;
  591.                 }
  592.         case 'p':
  593.         case 'P':
  594.                 {
  595.                 gotoxy(1, 9);
  596.                 textcolor(15);cprintf("Co chcesz zagrac: ");
  597.                 gotoxy(1, 10);
  598.                 textcolor(14);cprintf("* S - Sweet Child 'O Mine");
  599.                 gotoxy(1, 11);
  600.                 printf(": ");
  601.  
  602.                 scanf("%c", &wybor);
  603.                 scanf("%c", &wybor);
  604.                 utwory();
  605.                 break;
  606.         case 'o':
  607.         case 'O':
  608.                 {
  609.                 odtworz();
  610.                 }
  611.         case 'q':
  612.         case 'Q':
  613.                 {
  614.                 exit(0);
  615.                 }
  616.                 }
  617.         }
  618.  
  619.  
  620. }
  621. //-------------void menu------------//
  622.  
  623. void keyboard::oktawy()
  624.   {
  625.   Hz = 0;
  626.   gotoxy(68, 4);
  627.   printf("           ");
  628.   gotoxy(68,4);
  629.   scanf("%c", &oktawa);
  630.   scanf("%c", &oktawa);
  631.   textbackground(16);
  632.   switch(oktawa)
  633.         {
  634.         case 'sk':
  635.         case 'SK':
  636.         case 'Sk':
  637.         case 'sK':
  638.                 {
  639.                 Hz = OK_Sk;
  640.  
  641.                 break;
  642.                 }
  643.         case 'k':
  644.         case 'K':
  645.                 {
  646.                 Hz = OK_K;
  647.                 break;
  648.                 }
  649.         case  'w':
  650.         case  'W':
  651.                 {
  652.                 Hz = OK_W;
  653.  
  654.                 break;
  655.                 }
  656.         case  'm':
  657.         case  'M':
  658.                 {
  659.                 Hz = OK_M;
  660.  
  661.                 break;
  662.                 }
  663.         case  'r':
  664.         case  'R':
  665.                 {
  666.                 Hz = OK_R;
  667.  
  668.                 break;
  669.                 }
  670.         case  'd':
  671.         case  'D':
  672.                 {
  673.                 Hz = OK_D;
  674.  
  675.                 break;
  676.                 }
  677.         case  't':
  678.         case  'T':
  679.                 {
  680.                 Hz = OK_T;
  681.  
  682.                 break;
  683.                 }
  684.         case  'c':
  685.         case  'C':
  686.                 {
  687.                 Hz = OK_C;
  688.  
  689.                 break;
  690.                 }
  691.         case  'p':
  692.         case  'P':
  693.                 {
  694.                 Hz = OK_P;
  695.  
  696.                 break;
  697.                 }
  698.         case  's':
  699.         case  'S':
  700.                 {
  701.                 Hz = OK_S;
  702.  
  703.                 break;
  704.                 }
  705.         default :
  706.                 {
  707.                 menu();
  708.                 break;
  709.                 }
  710.         }
  711. }
  712. //-----------void oktawy------------//
  713.  
  714. void keyboard::utwory()
  715.   {
  716.   switch(wybor)
  717.     {
  718.         case 's':
  719.         case 'S':
  720.                 {
  721.                 printf("Wlacz odtwarzanie utworow i wpisz sweet.txt");
  722.                 Sleep(1600);
  723.                 menu();
  724.                 break;
  725.                 }
  726.     }
  727.   menu();
  728.   menu();
  729.   menu();
  730.   }
  731.  
  732. void keyboard::naglowek()
  733.   {
  734.   clrscr();
  735.   gotoxy(1,1);
  736.   textcolor(12); textbackground(3); cprintf("       VIRTUAL KEYBOARD                                                         ");
  737.   textbackground(0);
  738.   }
  739. //----------void naglowek-----------//
  740.  
  741. void keyboard::rysuj()
  742.   {
  743.   clrscr();
  744.   gotoxy(1,1);
  745.   textcolor(12);
  746.   textbackground(3);
  747.   cprintf("       VIRTUAL KEYBOARD                                                         ");
  748. printf(" _______________________________________________________\n");
  749. printf("|     |   |   |   |     |     |   |   |   |   |   | |\n");
  750. printf("|     |   |   |   |     |     |   |   |   |   |   | |\n");
  751. printf("|     |   |   |   |     |     |   |   |   |   |   | |\n");
  752. printf("|     |   |   |   |     |     |   |   |   |   |   | |\n");
  753. printf("|     | S |   | D |     |     | G |   | H |   | J | |\n");
  754. printf("|     |   |   |   |     |     |   |   |   |   |   | |\n");
  755. printf("|     |___|   |___|     |     |___|   |___|   |___| |\n");
  756. printf("|   |   |   |   |   |   |   |\n");
  757. printf("|       |   |   |   |   |   |   |\n");
  758. printf("|   Z   |   X   |   V   |   B   |   N   |   M   |   <   |\n");
  759. printf("|   |   |   |   |   |   |   |\n");
  760. printf("|_______|_______|_______|_______|_______|_______|_______|\n");
  761.   textbackground(16);
  762.   }
  763. //-----------void rysuj--------------//
  764.  
  765. int main()
  766.   {
  767.   //------------------OKNO STARTOWE-------------------------//
  768.   char znaki[40]="-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/";
  769.   gotoxy(26,2);
  770.   textcolor(8);
  771.   cprintf("\n       VIRTUAL KEYBOARD");
  772.   gotoxy(27.5,10);
  773.   textcolor(3);
  774.   cprintf("\nWykonanie: Patryk Gliszczynski\n");
  775.   gotoxy(20, 16);
  776.   printf("|__________________________________________|");
  777.   gotoxy(20,17);
  778.   printf("|                                          |");
  779.   for(int i=0;i<20;i++)
  780.     {
  781.     gotoxy(30.5,13);
  782.     textcolor(3);
  783.     cprintf("     Loading... %c",znaki[i]);
  784.     Sleep(100);
  785.     }
  786.   keyboard instrument;
  787.   instrument.menu();
  788.   }
  789.  
  790.  
  791.  
  792.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement