Garusek

runner v6

May 9th, 2016
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.41 KB | None | 0 0
  1. #include <iostream>
  2. #include <conio.h>
  3. #include "windows.h"
  4. #include <time.h>
  5. #include <iomanip>
  6.  
  7. using namespace std;
  8.  
  9. void wyczyscEkran()
  10. {
  11. system( "cls" );
  12. }
  13.  
  14. enum klawisz
  15. {
  16. klawiszGora=72,
  17. klawiszDol=80,
  18. klawiszLewo=75,
  19. klawiszPrawo=77,
  20. enter=13,
  21. klawiszEsc=27
  22. };
  23.  
  24. int wczytajKlawisz (void)
  25. {
  26. int klawisz = getch();
  27. return klawisz;
  28. }
  29.  
  30.  
  31.  
  32. void gotoxy(int x, int y)
  33. {
  34. COORD c;
  35. c.X = x - 1;
  36. c.Y = y - 1;
  37. SetConsoleCursorPosition (GetStdHandle(STD_OUTPUT_HANDLE), c);
  38. }
  39.  
  40. struct Obszar
  41. {
  42. int minX , maxX ,
  43. minY , maxY ;
  44. };
  45.  
  46. class Runner
  47. {
  48. private: //atrybuty
  49. int x; //pozycja w poziomie
  50. int y; //pozycja w pionie
  51. char kodZnaku; //znak runnera
  52. Obszar terytorium ;
  53. public://metody
  54. Runner(int jakieX=40 , int jakieY=12 , char jakiZnak= '*');
  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() {return x; };
  60. int podajY() {return y; };
  61. void podajPozycje (int& jakieX, int& jakieY) {jakieX = x; jakieY = y;};
  62. char podajZnak() {return kodZnaku; };
  63. void przesunY(int oIle);
  64. void przesunX(int oIle);
  65. void przesun (int oIleX, int oIleY);
  66. void narysujSie (void);
  67. void zmazSie (void) ;
  68. void ustawTerytorium (int , int , int, int);
  69. void podajTerytorium (int& jakieMinX, int& jakieMaxX, int& jakieMinY, int& jakieMaxY);
  70.  
  71. };
  72.  
  73. Runner::Runner(int jakieX,int jakieY, char jakiZnak)
  74. {
  75. ustawTerytorium ( 1 , 80 , 1 , 24 );
  76. ustawX (jakieX);
  77. ustawY (jakieY);
  78. ustawZnak(jakiZnak);
  79. }
  80.  
  81.  
  82.  
  83. void Runner::narysujSie(void)
  84. {
  85. gotoxy(x,y);
  86. putch (kodZnaku);
  87. }
  88. void Runner::zmazSie(void)
  89. {
  90. gotoxy (x,y);
  91. putch(' ');
  92. }
  93.  
  94. /*int Runner::podajX()
  95. {
  96. return x;
  97. }*/
  98.  
  99. void Runner::ustawX (int jakieX)
  100. {
  101. if (jakieX < terytorium.minX ) x = terytorium.minX ;
  102. else if (jakieX > terytorium.maxX ) x = terytorium.maxX ;
  103. else x=jakieX ;
  104. if ( jakieX > 100 )
  105. x = terytorium.maxX / 2 ;
  106. }
  107.  
  108. void Runner::ustawY (int jakieY)
  109. {
  110. if (jakieY < terytorium.minY ) x = terytorium.minY ;
  111. else if (jakieY > terytorium.maxY ) x = terytorium.maxY ;
  112. else y=jakieY ;
  113. if ( jakieY > 100 )
  114. y = terytorium.maxY / 2 ;
  115. }
  116.  
  117. void Runner::ustawPozycje (int jakieX, int jakieY )
  118. {
  119. ustawX ( jakieX ) ;
  120. ustawY ( jakieY ) ;
  121. }
  122.  
  123. void Runner::ustawTerytorium ( int jakieMinX , int jakieMaxX ,
  124. int jakieMinY , int jakieMaxY)
  125. {
  126. if (jakieMinX<1) terytorium.minX = 1 ;
  127. else if (jakieMinX>75) terytorium.minX = 75 ;
  128. else terytorium.minX = jakieMinX;
  129.  
  130. if (jakieMaxX<terytorium.minX+5) terytorium.maxX = terytorium.minX+5 ;
  131. else if (jakieMaxX>80) terytorium.maxX = 80 ;
  132. else terytorium.maxX = jakieMaxX;
  133.  
  134. if (jakieMinY<1) terytorium.minY = 1 ;
  135. else if (jakieMinY>20) terytorium.minY = 20 ;
  136. else terytorium.minY = jakieMinY;
  137.  
  138. if (jakieMaxY<terytorium.minY+4) terytorium.maxY = terytorium.minY+4 ;
  139. else if (jakieMaxY>24) terytorium.maxY = 24 ;
  140. else terytorium.maxY = jakieMaxY;
  141. }
  142.  
  143. void Runner::podajTerytorium ( int& jakieMinX , int& jakieMaxX ,
  144. int& jakieMinY , int& jakieMaxY )
  145. {
  146. jakieMinX = terytorium.minX ;
  147. jakieMaxX = terytorium.maxX ;
  148. jakieMinY = terytorium.minY ;
  149. jakieMaxY = terytorium.maxY ;
  150. }
  151.  
  152.  
  153. void Runner::ustawZnak(char jakiZnak)
  154. {
  155. if ( (jakiZnak > 33 && jakiZnak<47)
  156. || (jakiZnak > 58 && jakiZnak<64)
  157. || (jakiZnak > 91 && jakiZnak<96)
  158. || (jakiZnak > 123 && jakiZnak<126) )
  159. kodZnaku=jakiZnak;
  160. else kodZnaku='*';
  161. }
  162.  
  163. void Runner::przesunY(int oIle)
  164. {
  165. zmazSie();
  166. y+=oIle;
  167. if (y<1) y=25;
  168. else if (y>25) y=1;
  169. narysujSie();
  170. }
  171.  
  172. void Runner::przesunX(int oIle)
  173. {
  174. zmazSie();
  175. x+=oIle;
  176. if (x<1) x=80;
  177. else if (x>80) x=1;
  178. narysujSie();
  179. }
  180.  
  181. void Runner::przesun(int oIleX, int oIleY)
  182. {
  183. przesunX(oIleX);
  184. przesunY(oIleY);
  185. }
  186.  
  187. int main(int argc , char** argv)
  188. {
  189. int klawisz; //wcisniety klawisz
  190. srand(time(NULL));
  191. Runner R(rand()%150,rand()%150,rand()%126);
  192. wyczyscEkran();
  193.  
  194. R.narysujSie();
  195. gotoxy(1,26);
  196. cout<<"Jestem tu: "<<setw(2)<<R.podajX()<<":"<<setw(2)<<R.podajY()<<" \nRusz mnie!";
  197. do
  198. {
  199. R.narysujSie();
  200. switch (klawisz = wczytajKlawisz() )
  201. {
  202. case klawiszGora : R.przesunY (-1); //przeskocz wyzej
  203. break;
  204. case klawiszDol : R.przesunY (1); //przeskocz nizej
  205. break;
  206. case klawiszLewo : R.przesunX (-1); //przeskocz w lewo
  207. break;
  208. case klawiszPrawo : R.przesunX (1); //przeskocz w prawo
  209. break;
  210. case '8' : R.przesunY (-1); //przeskocz wyzej
  211. break;
  212. case '2' : R.przesunY (1); //przeskocz nizej
  213. break;
  214. case '4' : R.przesunX (-1); //przeskocz w lewo
  215. break;
  216. case '6' : R.przesunX (1); //przeskocz w prawo
  217. break;
  218. case '1' : R.przesun(-1,1);
  219. break;
  220. case '3' : R.przesun(1,1);
  221. break;
  222. case '7' : R.przesun(-1,-1);
  223. break;
  224. case '9' : R.przesun(1,-1);
  225. break;
  226. case enter : do R.ustawZnak(rand()%126);
  227. while (R.podajZnak() == '*');
  228. R.narysujSie();
  229. }
  230.  
  231. gotoxy(12,26);
  232. cout<<setw(2)<<R.podajX()<<":"<<setw(2)<<R.podajY();
  233. // R.zmazSie();
  234. }
  235. while ( klawisz != klawiszEsc);
  236. return 0;
  237. }
Add Comment
Please, Sign In to add comment