Garusek

runnerv7

May 10th, 2016
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.77 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdlib>
  3. #include "windows.h"
  4. #include <conio.h>
  5. #include <stdio.h>
  6.  
  7. using namespace std;
  8. // ================================================================================================
  9. struct Obszar
  10. {
  11.     int minX, maxX,
  12.         minY,maxY;
  13. };
  14. // -------------------------------------------------------------------------------
  15. class runner
  16. {
  17.     private:
  18.         int x,
  19.             y;
  20.         char kodZnaku;
  21.         Obszar terytorium;
  22.     public:
  23.         void ustawX(int jX);
  24.         void ustawY(int jY);
  25.         void ustawZnak(char jZnak);
  26.         void ustawPoz(int jX, int jY);
  27.         int podajX();
  28.         int podajY();
  29.         void podajPoz(int& jX, int& jY);
  30.         char podajZnak();
  31.         void przesunY(int oIle);
  32.         void przesunX(int oIle);
  33.         void przesun(int oIleX, int oIleY);
  34.         void narysujSie();
  35.         void zmazSie();
  36.         runner(int jX, int jY, char jZnak);
  37.         void ustawTerytorium(int jminX, int jmaxX, int jminY, int jmaxY);
  38.         void gotoxy(int x, int y)
  39. {
  40.  
  41.     COORD c;
  42.     c.X = x-1;
  43.     c.Y = y-1;
  44.     SetConsoleCursorPosition (GetStdHandle(STD_OUTPUT_HANDLE), c);
  45. };
  46.         runner();
  47. };
  48. runner::runner(int jX, int jY, char jZnak)
  49. {
  50.     ustawTerytorium( 1, 80, 1, 24);
  51.     ustawX(jX);
  52.     ustawY(jY);
  53.     ustawZnak(jZnak);
  54. }
  55.  
  56. void ustawTerytorium(int jminX, int jmaxX, int jminY, int jmaxY)
  57. {
  58.     if(jminX<1) jminX=1;
  59.     else if (jmaxX>80) jmaxX=80;
  60.  
  61.     if(jminY<1) jminY=1;
  62.     else if (jmaxY>24) jmaxY=24;
  63. };
  64. void runner::ustawX(int jX)
  65. {
  66.             if(jX<terytorium.minX) x=terytorium.maxX;
  67.             else if(jX>terytorium.maxX) x=terytorium.minX;
  68.             else x=jX;
  69.             if(x>100)
  70.                 x=terytorium.minX + (terytorium.maxX - terytorium.minX) /2 ;
  71.         };
  72.  
  73. void runner::przesunX(int oIle)
  74. {
  75.     zmazSie();
  76.     x+=oIle;
  77.     if(x<terytorium.minX) x=terytorium.maxX;
  78.     else if(x>terytorium.maxX) x=terytorium.minX;
  79.     narysujSie();
  80. };
  81. void runner::przesunY(int oIle)
  82. {
  83.     zmazSie();
  84.     y+=oIle;
  85.     if(y<terytorium.minY) y=terytorium.maxY;
  86.     else if(y>terytorium.maxY) y=terytorium.minY;
  87.     narysujSie();
  88. };
  89. char runner::podajZnak()
  90. {
  91.             return kodZnaku;
  92. };
  93. void runner::podajPoz(int& jX, int& jY)
  94. {
  95.             jX=x;
  96.             jY=y;
  97. };
  98. void runner::ustawY(int jY)
  99. {
  100.             if(jY<terytorium.minY) y=terytorium.maxY;
  101.             else if(jY>terytorium.maxY) y=terytorium.minY;
  102.             else y=jY;
  103.             if(y>100)
  104.                 y=terytorium.minY + (terytorium.maxY - terytorium.minY) /2;
  105. };
  106. int runner::podajX()
  107. {
  108.             return x;
  109. };
  110. int runner::podajY()
  111. {
  112.             return y;
  113. };
  114. void runner::ustawPoz(int jX, int jY)
  115. {
  116.     ustawX(jX);
  117.     ustawY(jY);
  118. };
  119. void runner::ustawZnak(char jZnak)
  120. {
  121.     int znaczek;
  122.     jZnak=getchar();
  123.     if (( jZnak>=33 && jZnak<=47) || (jZnak>=58 && jZnak<=64) || (jZnak>=91 && jZnak<=94) || (jZnak>=123 && jZnak<=126))
  124.         jZnak=jZnak;
  125.         else
  126.         jZnak='*';
  127. };
  128. void runner::narysujSie()
  129. {
  130.     if(x<terytorium.minX) x=terytorium.maxX;
  131.     else if(x>terytorium.maxX) x=terytorium.minX;
  132.     if(y<terytorium.minY) y=terytorium.maxY;
  133.     else if(y>terytorium.maxY) y=terytorium.minY;
  134.     runner::gotoxy( x , y );
  135.     putch(kodZnaku);
  136. };
  137.  
  138. void runner::zmazSie()
  139. {
  140.     runner::gotoxy( x , y );
  141.             putch(' ');
  142. };
  143. // -------------------------------------------------------------------------------
  144.  
  145.  
  146.  
  147. // -------------------------------------------------------------------------------
  148.  
  149. enum kodyKlawiszy
  150. {
  151.     gora = 72,
  152.     dol = 80,
  153.     lewo = 75,
  154.     prawo = 77,
  155.     enter = 13,
  156.     escape = 27
  157. };
  158.  
  159. // -------------------------------------------------------------------------------
  160.  
  161. int wczytajKlawisz(void)
  162. {
  163.  
  164.     int klawisz1 = getch();
  165.     return klawisz1;
  166. }
  167.  
  168. // -------------------------------------------------------------------------------
  169.  
  170. void wyczyscEkran()
  171. {
  172.     system("CLS");
  173. }
  174.  
  175. // -------------------------------------------------------------------------------
  176.  
  177.  
  178.  
  179. // -------------------------------------------------------------------------------
  180.  
  181. int main(int argc, char** argv) {
  182.     int klawisz ;               // wcisniety klawisz
  183.     runner R;
  184.     R.ustawX(40),               // poczatek X
  185.     R.ustawY(12),               //poczatek Y
  186.     R.ustawZnak ('*');      // wyswietlany znak
  187.  
  188.     runner A;
  189.     A.ustawX(10),               // poczatek X
  190.     A.ustawY (10),              //poczatek Y
  191.     A.ustawZnak ('*');      // wyswietlany znak
  192.  
  193.     wyczyscEkran();
  194.     do
  195.     {
  196.     R.narysujSie();
  197.     //A.narysujSie();
  198.     R.gotoxy(1, 25);
  199.     cout<<"x: "<<R.podajX()<<" y: "<<R.podajY();
  200.     klawisz = wczytajKlawisz();
  201.  
  202.     R.zmazSie();
  203.     //A.zmazSie();
  204.  
  205.         switch(klawisz)
  206.         {
  207.             case escape: break;
  208.             case gora:  R.przesunY(-1);     break;
  209.             case lewo:  R.przesunX(-1);     break;
  210.             case prawo: R.przesunX(1);      break;
  211.             case dol:   R.przesunY(1);      break;
  212.  
  213. //          case 'w':
  214. //          case 'W':  A.przesunY(-1);      break;
  215. //          case 'a':
  216. //          case 'A':  A.przesunX(-1);      break;
  217. //          case 'd':
  218. //           case 'D':  A.przesunX(1);      break;
  219. //          case 's':
  220. //           case 'S':  A.przesunY(1);      break;
  221.         }
  222.  
  223.  
  224.     }while(klawisz!=27);
  225.  
  226.     return 0;
  227. }
Add Comment
Please, Sign In to add comment