TenSob_

SOBOTKA_POHYB_K_v1

Mar 9th, 2020 (edited)
38
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 18.46 KB | None | 0 0
  1. /*
  2.  
  3. Domaci prace 01 - zadano 22.2.2020
  4. Vypracoval Jan Sobotka - 7.V
  5. Ver 1.0
  6.  
  7. Ovladani:
  8. Napoveda = n
  9.  
  10. Nahoru = w
  11. Dolu = s
  12. Levo = a
  13. Pravo = d
  14. Sikmo doleva nahoru = q
  15. Sikmo doprava nahoru = e
  16. Sikmo doleva dolu = z
  17. Sikmo doprava dolu = c
  18.  
  19. Kresleni se spousti klavesou = +
  20. Kresleni se vypina klavesou = -
  21. Zmena nastaveni rotace = r
  22. Zmena kresiliho znaku = l
  23. Vymzazat plochu = Vv
  24. Ukonceni programu = *
  25.  
  26. Extra funkce:
  27. * Pod hracim polem se zobrazuje ukazatel definovaneho pole predprocesorem
  28. * Pod hracim polem se zobrazuje ukazatel nastavení rotace
  29. * Obvod hraciho pole je ohranicen ASCII znaky pro ramecek nezavisle na nastaveni velikosti pole pres define
  30. * Program ma logo vyvojare
  31. * Program ma napovedu jez lze nacist pres logo a zpet
  32. *Lze vymazat hraci plochu
  33.  
  34.  
  35. */
  36.  
  37. #include <stdio.h>
  38. #include <conio.h>
  39. #include <ctype.h>
  40. #include <windows.h>
  41. #include "!gotoxy.txt"
  42.  
  43. #define MAX_X 80
  44. /* Doporucene nastaveni min 70 a max 96 */
  45. #define MAX_Y 21
  46. /* Doporucene nastaveni min 2 a max 22 (Mnoho funkci ale funguje i pri vyssim) */
  47. #define DEFAULTSCROLL 1
  48. #define DEFAULTZNAK 'x'
  49.  
  50.  
  51. int main()
  52. {
  53.     int xn=2,yn=2,kres=1,linex,liney,maxx=MAX_X,maxy=MAX_Y,scroll=DEFAULTSCROLL,def,def2,def3,napon=0;
  54.     char c, znak=DEFAULTZNAK, defch;
  55.  
  56.     //Informace pod hracim polem
  57.     gotoxy(0,MAX_Y+4);
  58.     printf("Nastaveni pole: MAX_X %d | MAX_Y %d \n",MAX_X-1,MAX_Y-1);
  59.     printf("Rotace je nyni ");
  60.     if(scroll==1){
  61.         printf("ZAPNUTA ");
  62.     }else if(scroll==0){
  63.         printf("VYPNUTA ");
  64.     }else{
  65.         printf("CHYBNA HODNOTA! ");
  66.     }
  67.     printf("| Pro zmenu nastaveni ritace stiskni klavesu R \n");
  68.  
  69.     printf("Kreslici znak je nyni %c ",znak);
  70.     printf("| Pro zmenu kresiciho znaku stiskni klavesu L \n");
  71.  
  72.     //Info o napovede
  73.     gotoxy(0,MAX_Y+3);
  74.     printf("Vypnuti/Zapnuti napovedy = klavesa N");
  75.  
  76.    //Horni okraj hraciho pole
  77.     gotoxy(0,0);
  78.     printf("%c",218);
  79.     for(linex=0;linex<MAX_X;linex++){
  80.         printf("%c",196);
  81.     }
  82.     printf("%c",191);
  83.     //Dolni okraj hraciho pole
  84.     gotoxy(0,MAX_Y+1);
  85.     printf("%c",192);
  86.     for(linex=0;linex<MAX_X;linex++){
  87.         printf("%c",196);
  88.     }
  89.     printf("%c",217);
  90.     //Levy okraj hraciho pole
  91.     gotoxy(0,1);
  92.     for(liney=0;liney<MAX_Y;liney++){
  93.         printf("%c \n",179);
  94.     }
  95.     //Pravy okraj hraciho pole
  96.     for(liney=0;liney<MAX_Y;liney++){
  97.         gotoxy(MAX_X+1,1+liney);
  98.         printf("%c \n",179);
  99.     }
  100.  
  101.         //Logo - pismeno S
  102.     gotoxy(MAX_X+3,1);
  103.     printf("%c",201);
  104.     for(def=0;def<4;def++){
  105.       printf("%c",205);
  106.     }
  107.     gotoxy(MAX_X+3,2);
  108.     printf("%c",186);
  109.     gotoxy(MAX_X+3,3);
  110.     printf("%c",186);
  111.     gotoxy(MAX_X+3,4);
  112.     printf("%c",200);
  113.     for(def=0;def<3;def++){
  114.       printf("%c",205);
  115.     }
  116.     printf("%c",187);
  117.     gotoxy(MAX_X+7,5);
  118.     printf("%c",186);
  119.     gotoxy(MAX_X+7,6);
  120.     printf("%c",186);
  121.     gotoxy(MAX_X+3,7);
  122.     for(def=0;def<4;def++){
  123.       printf("%c",205);
  124.     }
  125.     printf("%c",188);
  126.  
  127.     //Logo pismeno O
  128.     gotoxy(MAX_X+9,1);
  129.     printf("%c",201);
  130.     for(def=0;def<3;def++){
  131.       printf("%c",205);
  132.     }
  133.     printf("%c",187);
  134.     gotoxy(MAX_X+9,2);
  135.     printf("%c",186);
  136.     for(def2=3;def2<6;def2++){
  137.         gotoxy(MAX_X+9,def2);
  138.         printf("%c",186);
  139.     }
  140.     gotoxy(MAX_X+9,7);
  141.     printf("%c",200);
  142.     for(def=0;def<3;def++){
  143.       printf("%c",205);
  144.     }
  145.     printf("%c",188);
  146.     for(def2=2;def2<6;def2++){
  147.         gotoxy(MAX_X+13,def2);
  148.         printf("%c",186);
  149.     }
  150.  
  151.     //Logo pismeno B
  152.     gotoxy(MAX_X+15,1);
  153.     printf("%c",201);
  154.     for(def=0;def<2;def++){
  155.       printf("%c",205);
  156.     }
  157.     printf("%c",187);
  158.     for(def2=2;def2<6;def2++){
  159.         gotoxy(MAX_X+15,def2);
  160.         printf("%c",186);
  161.     }
  162.     gotoxy(MAX_X+15,7);
  163.     printf("%c",200);
  164.     for(def=0;def<3;def++){
  165.       printf("%c",205);
  166.     }
  167.     printf("%c",188);
  168.     gotoxy(MAX_X+18,2);
  169.     printf("%c",186);
  170.     gotoxy(MAX_X+18,3);
  171.     printf("%c",186);
  172.     gotoxy(MAX_X+19,4);
  173.     printf("%c",187);
  174.     gotoxy(MAX_X+19,5);
  175.     printf("%c",186);
  176.     gotoxy(MAX_X+19,6);
  177.     printf("%c",186);
  178.     gotoxy(MAX_X+15,4);
  179.     printf("%c",204);
  180.     gotoxy(MAX_X+16,4);
  181.     for(def=0;def<2;def++){
  182.       printf("%c",205);
  183.     }//Logo - pismeno S
  184.     gotoxy(MAX_X+3,1);
  185.     printf("%c",201);
  186.     for(def=0;def<4;def++){
  187.       printf("%c",205);
  188.     }
  189.     gotoxy(MAX_X+3,2);
  190.     printf("%c",186);
  191.     gotoxy(MAX_X+3,3);
  192.     printf("%c",186);
  193.     gotoxy(MAX_X+3,4);
  194.     printf("%c",200);
  195.     for(def=0;def<3;def++){
  196.       printf("%c",205);
  197.     }
  198.     printf("%c",187);
  199.     gotoxy(MAX_X+7,5);
  200.     printf("%c",186);
  201.     gotoxy(MAX_X+7,6);
  202.     printf("%c",186);
  203.     gotoxy(MAX_X+3,7);
  204.     for(def=0;def<4;def++){
  205.       printf("%c",205);
  206.     }
  207.     printf("%c",188);
  208.  
  209.     //Logo pismeno O
  210.     gotoxy(MAX_X+9,1);
  211.     printf("%c",201);
  212.     for(def=0;def<3;def++){
  213.       printf("%c",205);
  214.     }
  215.     printf("%c",187);
  216.     gotoxy(MAX_X+9,2);
  217.     for(def2=2;def2<7;def2++){
  218.         gotoxy(MAX_X+9,def2);
  219.         printf("%c",186);
  220.     }
  221.     gotoxy(MAX_X+9,7);
  222.     printf("%c",200);
  223.     for(def=0;def<3;def++){
  224.       printf("%c",205);
  225.     }
  226.     printf("%c",188);
  227.     for(def2=2;def2<7;def2++){
  228.         gotoxy(MAX_X+13,def2);
  229.         printf("%c",186);
  230.     }
  231.  
  232.     //Logo pismeno B
  233.     gotoxy(MAX_X+15,1);
  234.     printf("%c",201);
  235.     for(def=0;def<2;def++){
  236.       printf("%c",205);
  237.     }
  238.     printf("%c",187);
  239.     gotoxy(MAX_X+15,2);
  240.     printf("%c",186);
  241.     gotoxy(MAX_X+15,3);
  242.     printf("%c",186);
  243.     gotoxy(MAX_X+15,5);
  244.     printf("%c",186);
  245.     gotoxy(MAX_X+15,6);
  246.     printf("%c",186);
  247.     gotoxy(MAX_X+15,7);
  248.     printf("%c",200);
  249.     for(def=0;def<3;def++){
  250.       printf("%c",205);
  251.     }
  252.     printf("%c",188);
  253.     gotoxy(MAX_X+18,2);
  254.     printf("%c",186);
  255.     gotoxy(MAX_X+18,3);
  256.     printf("%c",186);
  257.     gotoxy(MAX_X+19,4);
  258.     printf("%c",187);
  259.     gotoxy(MAX_X+19,5);
  260.     printf("%c",186);
  261.     gotoxy(MAX_X+19,6);
  262.     printf("%c",186);
  263.     gotoxy(MAX_X+15,4);
  264.     printf("%c",204);
  265.     gotoxy(MAX_X+16,4);
  266.     for(def=0;def<2;def++){
  267.       printf("%c",205);
  268.     }
  269.     printf("%c",202);
  270.  
  271.     //Text pod logem
  272.  
  273.     gotoxy(MAX_X+3,9);
  274.     printf("Vytvorill Jan Sobotka");
  275.  
  276.     //Ovladani
  277.     do{
  278.         if(kbhit()){
  279.             c=(getch());
  280.             switch(c){
  281.                 case('+'):
  282.                     kres=0;
  283.                     break;
  284.                 case('-'):
  285.                     kres=1;
  286.                     break;
  287.                 case('r'):
  288.                     gotoxy(0,MAX_Y+5);
  289.                     if(scroll==1){
  290.                         scroll=0;
  291.                     }else if(scroll==0){
  292.                         scroll=1;
  293.                     }
  294.                     printf("Rotace je nyni ");
  295.                     if(scroll==1){
  296.                         printf("ZAPNUTA ");
  297.                     }else if(scroll==0){
  298.                         printf("VYPNUTA ");
  299.                     }else{
  300.                         printf("CHYBNA HODNOTA! ");
  301.                     }
  302.                     gotoxy(xn,yn);
  303.                     break;
  304.                 case('n'):
  305.                     if(napon==0){
  306.                         napon=1;
  307.                         def=0;
  308.                         //Cistic
  309.                         for(def3=1;def3<7;def3++){
  310.                         def++;
  311.                         gotoxy(MAX_X+3,def);
  312.                         for(def2=0;def2<20;def2++){
  313.                         printf(" ");
  314.                         }
  315.                         }
  316.                         //Print napovedy
  317.                         def=1;
  318.                         gotoxy(MAX_X+3,def);
  319.                         def= def+2;
  320.                         printf("Napoveda: ");
  321.                         gotoxy(MAX_X+3,def);
  322.                         def++;
  323.                         printf("Nahoru = w ");
  324.                         gotoxy(MAX_X+3,def);
  325.                         def++;
  326.                         printf("Dolu = s ");
  327.                         gotoxy(MAX_X+3,def);
  328.                         def++;
  329.                         printf("Levo = a ");
  330.                         gotoxy(MAX_X+3,def);
  331.                         def++;
  332.                         printf("Pravo = d ");
  333.                         gotoxy(MAX_X+3,def);
  334.                         def++;
  335.                         printf("Sikmo doleva nahoru = q ");
  336.                         gotoxy(MAX_X+3,def);
  337.                         def++;
  338.                         printf("Sikmo doprava nahoru = e ");
  339.                         gotoxy(MAX_X+3,def);
  340.                         def++;
  341.                         printf("Sikmo doleva dolu = z ");
  342.                         gotoxy(MAX_X+3,def);
  343.                         def++;
  344.                         printf("Sikmo doprava dolu = c ");
  345.                         gotoxy(MAX_X+3,def);
  346.                         def++;
  347.                         printf("Kresleni se spousti klavesou = + ");
  348.                         gotoxy(MAX_X+3,def);
  349.                         def++;
  350.                         printf("Kresleni se vypina klavesou = - ");
  351.                         gotoxy(MAX_X+3,def);
  352.                         def++;
  353.                         printf("Zmena nastaveni rotace = r ");
  354.                         gotoxy(MAX_X+3,def);
  355.                         def++;
  356.                         printf("Zmena nastaveni rotace = l ");
  357.                         gotoxy(MAX_X+3,def);
  358.                         def++;
  359.                         printf("Vymzazat plochu = v ");
  360.                         gotoxy(MAX_X+3,def);
  361.                         def++;
  362.                         printf("Ukonceni programu = * ");
  363.                     }else if(napon==1){
  364.                         napon=0;
  365.                         //Cistic po napovede
  366.                         def=0;
  367.                         for(def3=1;def3<17;def3++){
  368.                         def++;
  369.                         gotoxy(MAX_X+3,def);
  370.                         for(def2=0;def2<32;def2++){
  371.                         printf(" ");
  372.                         }
  373.                         }
  374.                         //Logo pismeno B
  375.                         gotoxy(MAX_X+15,1);
  376.                         printf("%c",201);
  377.                         for(def=0;def<2;def++){
  378.                           printf("%c",205);
  379.                         }
  380.                         printf("%c",187);
  381.                         for(def2=2;def2<6;def2++){
  382.                             gotoxy(MAX_X+15,def2);
  383.                             printf("%c",186);
  384.                         }
  385.                         gotoxy(MAX_X+15,7);
  386.                         printf("%c",200);
  387.                         for(def=0;def<3;def++){
  388.                           printf("%c",205);
  389.                         }
  390.                         printf("%c",188);
  391.                         gotoxy(MAX_X+18,2);
  392.                         printf("%c",186);
  393.                         gotoxy(MAX_X+18,3);
  394.                         printf("%c",186);
  395.                         gotoxy(MAX_X+19,4);
  396.                         printf("%c",187);
  397.                         gotoxy(MAX_X+19,5);
  398.                         printf("%c",186);
  399.                         gotoxy(MAX_X+19,6);
  400.                         printf("%c",186);
  401.                         gotoxy(MAX_X+15,4);
  402.                         printf("%c",204);
  403.                         gotoxy(MAX_X+16,4);
  404.                         for(def=0;def<2;def++){
  405.                           printf("%c",205);
  406.                         }//Logo - pismeno S
  407.                         gotoxy(MAX_X+3,1);
  408.                         printf("%c",201);
  409.                         for(def=0;def<4;def++){
  410.                           printf("%c",205);
  411.                         }
  412.                         gotoxy(MAX_X+3,2);
  413.                         printf("%c",186);
  414.                         gotoxy(MAX_X+3,3);
  415.                         printf("%c",186);
  416.                         gotoxy(MAX_X+3,4);
  417.                         printf("%c",200);
  418.                         for(def=0;def<3;def++){
  419.                           printf("%c",205);
  420.                         }
  421.                         printf("%c",187);
  422.                         gotoxy(MAX_X+7,5);
  423.                         printf("%c",186);
  424.                         gotoxy(MAX_X+7,6);
  425.                         printf("%c",186);
  426.                         gotoxy(MAX_X+3,7);
  427.                         for(def=0;def<4;def++){
  428.                           printf("%c",205);
  429.                         }
  430.                         printf("%c",188);
  431.  
  432.                         //Logo pismeno O
  433.                         gotoxy(MAX_X+9,1);
  434.                         printf("%c",201);
  435.                         for(def=0;def<3;def++){
  436.                           printf("%c",205);
  437.                         }
  438.                         printf("%c",187);
  439.                         gotoxy(MAX_X+9,2);
  440.                         for(def2=2;def2<7;def2++){
  441.                             gotoxy(MAX_X+9,def2);
  442.                             printf("%c",186);
  443.                         }
  444.                     gotoxy(MAX_X+9,7);
  445.                     printf("%c",200);
  446.                     for(def=0;def<3;def++){
  447.                       printf("%c",205);
  448.                     }
  449.                     printf("%c",188);
  450.                     for(def2=2;def2<7;def2++){
  451.                     gotoxy(MAX_X+13,def2);
  452.                     printf("%c",186);
  453.                     }
  454.  
  455.                     //Logo pismeno B
  456.                     gotoxy(MAX_X+15,1);
  457.                     printf("%c",201);
  458.                     for(def=0;def<2;def++){
  459.                       printf("%c",205);
  460.                     }
  461.                     printf("%c",187);
  462.                     gotoxy(MAX_X+15,2);
  463.                     printf("%c",186);
  464.                     gotoxy(MAX_X+15,3);
  465.                     printf("%c",186);
  466.                     gotoxy(MAX_X+15,5);
  467.                     printf("%c",186);
  468.                     gotoxy(MAX_X+15,6);
  469.                     printf("%c",186);
  470.                     gotoxy(MAX_X+15,7);
  471.                     printf("%c",200);
  472.                     for(def=0;def<3;def++){
  473.                       printf("%c",205);
  474.                     }
  475.                     printf("%c",188);
  476.                     gotoxy(MAX_X+18,2);
  477.                     printf("%c",186);
  478.                     gotoxy(MAX_X+18,3);
  479.                     printf("%c",186);
  480.                     gotoxy(MAX_X+19,4);
  481.                     printf("%c",187);
  482.                     gotoxy(MAX_X+19,5);
  483.                     printf("%c",186);
  484.                     gotoxy(MAX_X+19,6);
  485.                     printf("%c",186);
  486.                     gotoxy(MAX_X+15,4);
  487.                     printf("%c",204);
  488.                     gotoxy(MAX_X+16,4);
  489.                     for(def=0;def<2;def++){
  490.                       printf("%c",205);
  491.                     }
  492.                     printf("%c",202);
  493.  
  494.                     //Text pod logem
  495.  
  496.                     gotoxy(MAX_X+3,9);
  497.                     printf("Vytvorill Jan Sobotka");
  498.                     }
  499.                     break;
  500.                 case('v'):
  501.                     //Cisteni pole
  502.                     for(def=0;def<MAX_Y;def++){
  503.                         def2 = def + 1;
  504.                         gotoxy(1,def2);
  505.                     for(def3=0;def3<MAX_X;def3++){
  506.                         printf(" ");
  507.                     }
  508.                     }
  509.                     gotoxy(xn,yn);
  510.                     break;
  511.  
  512.                 case('l'):
  513.                     //Zmena znaku
  514.                     gotoxy(0,MAX_Y+7);
  515.                     printf("Zadejte znak: ");
  516.                     znak=getch();
  517.                     gotoxy(0,MAX_Y+7);
  518.                     for(def=0;def<16;def++){
  519.                         printf(" ");
  520.                     }
  521.                     gotoxy(xn,yn);
  522.                     break;
  523.  
  524.                 case('d'):
  525.                     if(kres==1){
  526.                     putchar(' ');
  527.                     }
  528.                     if(scroll==1){
  529.                         xn = xn<maxx ? ++xn : 1;
  530.                     }else if(scroll==0){
  531.                         xn = xn<maxx ? ++xn : xn;
  532.                     }
  533.                     break;
  534.                 case('a'):
  535.                     if(kres==1){
  536.                     putchar(' ');
  537.                     }
  538.                     if(scroll==1){
  539.                         xn = xn>1 ? --xn : maxx;
  540.                     }else if(scroll==0){
  541.                         xn = xn>1 ? --xn : xn;
  542.                     }
  543.                     break;
  544.                 case('w'):
  545.                     if(kres==1){
  546.                     putchar(' ');
  547.                     }
  548.                     if(scroll==1){
  549.                         yn = yn>1 ? --yn : maxy;
  550.                     }else if(scroll==0){
  551.                         yn = yn>1 ? --yn : yn;
  552.                     }
  553.                     break;
  554.                 case('s'):
  555.                     if(kres==1){
  556.                     putchar(' ');
  557.                     }
  558.                     if(scroll==1){
  559.                         yn = yn<maxy ? ++yn : 1;
  560.                     }else if(scroll==0){
  561.                         yn = yn<maxy ? ++yn : yn;
  562.                     }
  563.                     break;
  564.  
  565.                 case('q'):
  566.                     if(kres==1){
  567.                     putchar(' ');
  568.                     }
  569.                     if(scroll==1){
  570.                         yn = yn>1 ? --yn : maxy;
  571.                         xn = xn>1 ? --xn : maxx;
  572.                     }else if(scroll==0){
  573.                         yn = yn>1 ? --yn : yn;
  574.                         xn = xn>1 ? --xn : xn;
  575.                     }
  576.                     break;
  577.                 case('e'):
  578.                     if(kres==1){
  579.                     putchar(' ');
  580.                     }
  581.                     if(scroll==1){
  582.                         yn = yn>1 ? --yn : maxy;
  583.                         xn = xn<maxx ? ++xn : 1;
  584.                     }else if(scroll==0){
  585.                         yn = yn>1 ? --yn : yn;
  586.                         xn = xn<maxx ? ++xn : xn;
  587.                     }
  588.                     break;
  589.                 case('z'):
  590.                     if(kres==1){
  591.                     putchar(' ');
  592.                     }
  593.                     if(scroll==1){
  594.                         xn = xn>1 ? --xn : maxx;
  595.                         yn = yn<maxy ? ++yn : 1;
  596.                     }else if(scroll==0){
  597.                         xn = xn>1 ? --xn : xn;
  598.                         yn = yn<maxy ? ++yn : yn;
  599.                     }
  600.                     break;
  601.                 case('c'):
  602.                     if(kres==1){
  603.                     putchar(' ');
  604.                     }
  605.                     if(scroll==1){
  606.                         xn = xn<maxx ? ++xn : 1;
  607.                         yn = yn<maxy ? ++yn : 1;
  608.                     }else if(scroll==0){
  609.                         xn = xn<maxx ? ++xn : xn;
  610.                         yn = yn<maxy ? ++yn : yn;
  611.                     }
  612.                     break;
  613.  
  614.                 case('*'):
  615.                     break;
  616.                 default:
  617.                     c='k';
  618.  
  619.  
  620.             if(c=='k')
  621.             continue;
  622.         }
  623.         }
  624.         gotoxy(xn,yn);
  625.         putchar(znak);
  626.         gotoxy(xn,yn);
  627.     } while(c!='*');        // Konec  -> vyskocime z cyklu
  628. }
Add Comment
Please, Sign In to add comment