Advertisement
Garusek

runnerv4

Apr 26th, 2016
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.23 KB | None | 0 0
  1. #include <iostream>
  2. #include<conio.h>
  3. #include<windows.h>
  4.  
  5. using namespace std;
  6.  
  7. int wczytaj()
  8. {
  9.     int klawisz = getch();
  10.     return klawisz;
  11. }
  12.  
  13. enum kodyKlawiszy
  14. {
  15.     gora = 72,
  16.     dol = 80,
  17.     lewo = 75,
  18.     prawo = 77,
  19.     enter = 13,
  20.     esc = 27
  21. };
  22.  
  23. void gotoxy(int x, int y)
  24. {
  25.     COORD c;
  26.     c.X=x-1;
  27.     c.Y=y-1;
  28.     SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),c);
  29. }
  30.  
  31. int wczytajKlawisz (void)
  32. {
  33.     int key=getch();
  34.     return key;
  35. }
  36.  
  37. void wyczyscEkran (void)
  38. {
  39.     system( "cls" );
  40. }
  41.  
  42. void napiszZnak (int x, int y, int c)
  43. {
  44.     gotoxy(x, y);
  45.     putch(c);
  46. }
  47.  
  48.  
  49. class Runner
  50. {
  51. private:
  52.         int x, y;
  53.         char kodZnaku ;
  54. public :
  55.     void ustawX (int jakieX ) ;
  56.     void ustawY ( int jakieY);
  57.     void ustawPozycje (int jakieX, int jakieY);
  58.     void ustawZnak (char jakiZnak);
  59.     int podajX();
  60.     int podajY();
  61.     void podajPozycje (int& jakieX, int& jakieY);
  62.     char podajZnak ();
  63.     void przesunX (int oIle);
  64.     void przesunY (int oIle);
  65.     void przesun (int oIleX, int oIleY);
  66.  
  67.     void narysujSie ();
  68.     void zmazSie ();
  69.     };
  70.  
  71.     int Runner::podajX()
  72.     {
  73.         return x;
  74.     }
  75.         int Runner::podajY()
  76.     {
  77.         return y;
  78.     }
  79.  
  80.     void Runner::podajPozycje(int& jakieX, int& jakieY)
  81.     {
  82.         jakieX=x;
  83.         jakieY=y;
  84.     }
  85.  
  86. void Runner::ustawX(int jakieX)
  87. {
  88.     if (jakieX < 1) x= 1;
  89.     else if(jakieX>80) x= 80;
  90.     else  x=jakieX;
  91.     if (jakieX > 100)
  92.         x=40;
  93. }
  94.  
  95. void Runner::ustawY(int jakieY)
  96. {
  97.     if (jakieY < 1)x= 1;
  98.     else  if (jakieY>25)x= 25;
  99.     else y=jakieY;
  100.  
  101.     if (jakieY>100)
  102.         y=12;
  103.  
  104. }
  105.  
  106. void Runner::ustawZnak(char jakiZnak)
  107. {
  108.     if( ( jakiZnak >= 33 && jakiZnak <= 47)
  109.          ||(jakiZnak >= 58 && jakiZnak <= 64)
  110.          ||(jakiZnak >= 91 && jakiZnak <= 96)
  111.          ||(jakiZnak >= 123 && jakiZnak <= 126)
  112.         ) kodZnaku = jakiZnak;
  113.     else kodZnaku= '*';
  114. }
  115.  
  116. void Runner::przesunX(int oIle)
  117. {
  118.     zmazSie();
  119.      x+=oIle;
  120.      if (x<1) x=80;
  121.      else if (x>80) x =1 ;
  122.     narysujSie();
  123. }
  124.  
  125. void Runner::przesunY(int oIle)
  126. {
  127.     zmazSie();
  128.        y+=oIle;
  129.         if (x<1) x=25;
  130.      else if (x>25) x =1 ;
  131.   narysujSie();
  132. }
  133.  
  134. void Runner::przesun(int oIleX, int oIleY)
  135. {
  136.     przesunX(oIleX);
  137.     przesunY(oIleY);
  138. }
  139.  
  140. void Runner::narysujSie(void)
  141. {
  142.     gotoxy(x, y);
  143.     putch(kodZnaku);
  144. }
  145.  
  146. void Runner::zmazSie(void)
  147. {
  148.         gotoxy(x, y);
  149.         putch(' ');
  150. }
  151.  
  152. void Runner::ustawPozycje(int jakieX, int jakieY)
  153. {
  154.     ustawX(jakieX);
  155.     ustawY(jakieY);
  156. }
  157.  
  158. int main()
  159. {
  160.     int klawisz;
  161.         Runner R;
  162.     R.ustawX(140);
  163.     R.ustawY(120);
  164.     R.ustawZnak('*');
  165.  
  166.  
  167.     wyczyscEkran();
  168.     R.narysujSie();
  169.  
  170.     do
  171.     {
  172.  
  173.         klawisz = wczytaj();
  174.         cout<<klawisz<<endl;
  175.         switch(klawisz)
  176.         {
  177.             case gora :         cout<<"gora"<<endl;
  178.  R.przesunY (-1) ; break;
  179.             case dol :      cout<<"dol"<<endl;
  180.  R.przesunY (1); break;
  181.             case lewo :         cout<<"lewo"<<endl;
  182.  R.przesunX (-1); break;
  183.             case prawo :        cout<<"prawo"<<endl;
  184.  R.przesunX (1); break;
  185.  
  186.         }
  187.     }while (klawisz=! esc);
  188.  
  189.     return 0;
  190. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement