Advertisement
Guest User

Untitled

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