Advertisement
Guest User

Untitled

a guest
Feb 7th, 2016
41
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.38 KB | None | 0 0
  1. #include <iostream> //стандартная библиотека
  2. #include <time.h> //случайные числа
  3. #include <stdio.h> //для printf
  4. #include <windows.h> // для HANDLE, курсора, цвета
  5. #include <conio.h> //для kbhit
  6. #include <locale.h>
  7.  
  8. using namespace std;
  9.  
  10.  
  11.  
  12. char a[1000][1000];
  13. /*
  14. symbol - хранит в себе ASCII код нажатой клавиши
  15. a[1000][1000] - поле игры
  16. */
  17. const int N = 10, M = 22, INTERVAL = 200;
  18. /*
  19. константы,
  20. N - высота
  21. M - ширина
  22. INTERVAL - интервал в миллисекундах
  23. */
  24.  
  25. int px[100], py[100]; // массив, хранящий координаты сковороды
  26. int sx[100], sy[100]; // массив, хранящий координаты сосиски
  27.  
  28. void gotoxy (int xpos, int ypos)
  29. {
  30. COORD scrn;
  31. HANDLE hOuput = GetStdHandle (STD_OUTPUT_HANDLE);
  32. scrn.X = xpos;
  33. scrn.Y = ypos;
  34. SetConsoleCursorPosition(hOuput, scrn);
  35. }
  36.  
  37. class objects
  38. {
  39. protected:
  40. int pX, pY;
  41. const int panSize = 3;
  42. const char sausage = '!'; // собствнно, сама сосиска
  43. const char pan = '_'; // и сковорода
  44. public:
  45. void drawField (); //отрисовка поля
  46. void drawSausage (); //рисуем сосиску
  47. void changePanCoordinates (); // двигаем сковороду
  48. void standartSettings ();
  49. };
  50.  
  51. void objects::drawField ()
  52. {
  53. system("cls");
  54. for (int i = 0; i <= N + 1; ++i)
  55. for (int j = 0; j <= M + 1; ++j)
  56. cout << (i == 0 || j == 0 || i == N + 1 || j == M + 1 ? '#' : a[i][j]) << (j <= M ? "" : "\n");
  57. }
  58.  
  59.  
  60.  
  61. /*void objects::drawSausage()
  62. {
  63. srand(time(NULL));
  64. sx = rand() % M;
  65. gotoxy(sx, sy);
  66. cout << (a[sx][sy] = sausage);
  67. gotoxy(1, 15);
  68. }*/
  69.  
  70. void objects::standartSettings()
  71. {
  72. px[1] = M - 1;
  73. py[1] = N - 10;
  74. px[2] = M - 2;
  75. py[2] = N - 10;
  76. px[3] = M - 3;
  77. py[3] = N - 10;
  78.  
  79. pX = M - 1;
  80. pY = 10;
  81. }
  82.  
  83. class movement:public objects // класс движения
  84. {
  85. char symbol;
  86. public:
  87. void drawPan (); //рисование сковороды
  88. void clearPanOnField ();
  89. void changePanCoordinates (); // двигаем сковороду
  90. void nextStep ();
  91. };
  92.  
  93. void movement::drawPan()
  94. {
  95.  
  96. for (int i=2; i<= panSize; i++)
  97. {
  98. a[px[i]][py[i]] = pan;
  99. }
  100. }
  101.  
  102. void movement::clearPanOnField()
  103. {
  104. for (int i = 1; i <= panSize; i++)
  105. {
  106. a[px[i]][py[i]] = ' ';
  107. }
  108. }
  109.  
  110. void movement::changePanCoordinates()
  111. {
  112. symbol = getch ();
  113. switch (symbol)
  114. {
  115. case 'a':
  116. if (pX != M-22)
  117. pX = pX - 1;
  118. break;
  119. case 'd':
  120. if (pX != M)
  121. pX = pX + 1;
  122. break;
  123. case 27:
  124. exit(0);
  125. break;
  126. default : break;
  127.  
  128. }
  129. }
  130.  
  131. void movement::nextStep()
  132. {
  133. clearPanOnField ();
  134. for (int i = panSize; i >= 2; i--)
  135. {
  136. px[i] = px[i-1];
  137. }
  138. drawPan();
  139. }
  140.  
  141. int main ()
  142. {
  143. objects Field;
  144. movement Move;
  145. Field.standartSettings();
  146.  
  147. //Field.drawPan();
  148. // Field.drawSausage();
  149. while (1)
  150. {
  151. if (kbhit() == true)
  152. Move.changePanCoordinates ();
  153. Move.nextStep();
  154. Field.drawField();
  155.  
  156. Sleep (INTERVAL);
  157. }
  158. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement