Advertisement
Garusek

runner v5

Apr 26th, 2016
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.52 KB | None | 0 0
  1. #include <iostream>
  2. #include <conio.h>
  3. #include "windows.h"
  4. #include <time.h>
  5. #include <iomanip>
  6.  
  7. void gotoxy(int x, int y)
  8. {
  9. COORD c;
  10. c.X = x -1;
  11. c.Y = y -1;
  12. SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),c);
  13. }
  14. //k - klawisz
  15. enum kodyKlawiszy{kgora=72, kdol=80, klewo=75, kprawo=77, kenter=13, kesc=27};
  16.  
  17. int wczytajKlawisz(void)
  18. {
  19. int Klawisz = getch();
  20. return Klawisz;
  21. }
  22.  
  23. void czyscEkran()
  24. {
  25. system("cls");
  26. }
  27.  
  28. void napiszZnak (int x, int y, char c)
  29. {
  30. gotoxy (x,y);
  31. putch(c);
  32. }
  33.  
  34. class Runner
  35. {
  36. private: //atrybuty
  37. int x;
  38. int y;
  39. char kodZnaku; //znak Runnera
  40. public: //metody dostepowe
  41. Runner (int jakieX = 40, int jakieY=12, char jakiZnak = '*'); //konstruktor
  42. void ustawX (int jakieX); //ustawiająca
  43. void ustawY (int jakieY);
  44. void ustawPozycie(int jakieX, int jakieY);
  45. void ustawZnak (char jakiZnak);
  46.  
  47. int podajX() {return x;} //odczytująca
  48. int podajY() {return y;}
  49. void podajPozycje(int& jakieX, int& jakieY) {jakieX=x; jakieY=y;}
  50. char podajZnak() {return kodZnaku;}
  51.  
  52. void przesunX(int oIle); //zmieniające
  53. void przesunY(int oIle);
  54. void przesun (int oIleX, int oIleY);//jednoczesnie wszystko
  55.  
  56. void rysujsie(void);
  57. void zmazsie(void);
  58.  
  59. };
  60.  
  61. //***********************treść konstruktora**************************
  62. Runner::Runner (int jakieX, int jakieY, char jakiZnak)
  63. {
  64. ustawX (jakieY);
  65. ustawY (jakieX);
  66. ustawZnak (jakiZnak);
  67. break;
  68. }
  69.  
  70.  
  71. void Runner::ustawX(int jakieX)
  72. {
  73. if (jakieX < 1)
  74. x = 1;
  75. else
  76. if (jakieX>80)
  77. x = 80;
  78. else x = jakieX;
  79.  
  80. if (jakieX > 100)
  81. x = 40;
  82. }
  83. void Runner::ustawY(int jakieY)
  84. {
  85. if (jakieY < 1)
  86. y = 1;
  87. else
  88. if (jakieY>25)
  89. y = 25;
  90. else y = jakieY;
  91.  
  92. if (jakieY > 100)
  93. y = 12;
  94. }
  95.  
  96. void Runner::ustawPozycie(int jakieX, int jakieY)
  97. {
  98. ustawX(jakieX);
  99. ustawY(jakieY);
  100. }
  101.  
  102. void Runner::ustawZnak(char jakiZnak)
  103. {
  104. jakiZnak = getch();
  105. if ((33<=jakiZnak&&jakiZnak<=47) ||
  106. (58<=jakiZnak&&jakiZnak<=64) ||
  107. (91<=jakiZnak&&jakiZnak<=96) ||
  108. (123<=jakiZnak&&jakiZnak<=126))
  109. kodZnaku=jakiZnak;
  110. else kodZnaku = '*';
  111. }
  112. void Runner:: przesunX (int oIle)
  113. {
  114. zmazsie();
  115.  
  116. x+= oIle;
  117.  
  118. if(x<1) x=80;
  119. else if (x>80) x=1;
  120.  
  121. rysujsie();
  122. }
  123. void Runner:: przesunY(int oIle)
  124. {
  125. zmazsie();
  126.  
  127. y+= oIle;
  128.  
  129. if(y<1) y=25;
  130. else if (y>25) y=1;
  131.  
  132. rysujsie();
  133. }
  134. void Runner::przesun(int oIleX, int oIleY)
  135. {
  136. przesunX(oIleX);
  137. przesunY(oIleY);
  138. }
  139. void Runner::rysujsie(void)
  140. {
  141. gotoxy (x,y);
  142. putch(kodZnaku);
  143. }
  144. void Runner::zmazsie (void)
  145. {
  146. gotoxy (x,y);
  147. putch(' ');
  148. }
  149.  
  150. int main ( int argc, char** argv)
  151. {
  152. int klawisz;
  153. srand(time(NULL));
  154. Runner R(rand()%150, rand()%150, rand()%126);
  155. czyscEkran();
  156.  
  157. R.rysujsie();
  158.  
  159. gotoxy ( 1, 25); //na dole podajemy pozycje
  160. cout <<"Jestem tu" <<setw(2) << R.podajX()
  161. << ":" <<setw(2) << R.podajY();
  162. cout << " Rusz mnie!";
  163. do
  164. {
  165. klawisz = wczytajKlawisz();
  166. switch(klawisz){
  167.  
  168. case kgora: R.przesunY(-1);
  169. break;
  170.  
  171. case kdol: R.przesunY(1);
  172. break;
  173.  
  174.  
  175. case klewo: R.przesunX(-1);
  176. break;
  177.  
  178.  
  179. case kprawo: R.przesunX(1);
  180. break;
  181.  
  182. case '7' : R.przesun (-1, -1); break;//lewo gora
  183. case '9' : R.przesun ( 1, -1); break;//
  184. case '1' : R.przesun (-1, 1); break;//lewo gora
  185. case '3' : R.przesun ( 1, 1); break;//lewo gora
  186. // ruch lewo prawo na klaw numerycznej
  187. case '4' : R.przesun (-1, 0); break;//
  188. case '6' : R.przesun ( 1, 0); break;//lewo gora
  189. case '8' : R.przesun ( 0, -1); break;
  190. case '2' : R.przesun ( 0, 1); break;
  191.  
  192.  
  193.  
  194.  
  195. case kenter: do
  196. R.ustawZnak (rand()%126);
  197. while (R.podajZnak()=='*');
  198. R.rysujsie();//
  199. }
  200. gotoxy ( 12, 25); //uaktualnieie
  201. cout << setw (2) << R.podajX()
  202. <<":"<<setw(2) <<R.podajY();
  203.  
  204.  
  205. }while(klawisz != kesc);
  206. return 0;
  207. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement