Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream> //стандартная библиотека
- #include <time.h> //случайные числа
- #include <stdio.h> //для printf
- #include <windows.h> // для HANDLE, курсора, цвета
- #include <conio.h> //для kbhit
- #include <locale.h>
- using namespace std;
- char a[1000][1000];
- /*
- symbol - хранит в себе ASCII код нажатой клавиши
- a[1000][1000] - поле игры
- */
- const int N = 10, M = 22, INTERVAL = 200;
- /*
- константы,
- N - высота
- M - ширина
- INTERVAL - интервал в миллисекундах
- */
- int px[100], py[100]; // массив, хранящий координаты сковороды
- int sx[100], sy[100]; // массив, хранящий координаты сосиски
- void gotoxy (int xpos, int ypos)
- {
- COORD scrn;
- HANDLE hOuput = GetStdHandle (STD_OUTPUT_HANDLE);
- scrn.X = xpos;
- scrn.Y = ypos;
- SetConsoleCursorPosition(hOuput, scrn);
- }
- class objects
- {
- protected:
- int pX, pY;
- const int panSize = 3;
- const char sausage = '!'; // собствнно, сама сосиска
- const char pan = '_'; // и сковорода
- public:
- void drawField (); //отрисовка поля
- void drawSausage (); //рисуем сосиску
- void changePanCoordinates (); // двигаем сковороду
- void standartSettings ();
- };
- void objects::drawField ()
- {
- system("cls");
- for (int i = 0; i <= N + 1; ++i)
- for (int j = 0; j <= M + 1; ++j)
- cout << (i == 0 || j == 0 || i == N + 1 || j == M + 1 ? '#' : a[i][j]) << (j <= M ? "" : "\n");
- }
- /*void objects::drawSausage()
- {
- srand(time(NULL));
- sx = rand() % M;
- gotoxy(sx, sy);
- cout << (a[sx][sy] = sausage);
- gotoxy(1, 15);
- }*/
- void objects::standartSettings()
- {
- px[1] = M - 1;
- py[1] = N - 10;
- px[2] = M - 2;
- py[2] = N - 10;
- px[3] = M - 3;
- py[3] = N - 10;
- pX = M - 1;
- pY = 10;
- }
- class movement:public objects // класс движения
- {
- char symbol;
- public:
- void drawPan (); //рисование сковороды
- void clearPanOnField ();
- void changePanCoordinates (); // двигаем сковороду
- void nextStep ();
- };
- void movement::drawPan()
- {
- for (int i=2; i<= panSize; i++)
- {
- a[px[i]][py[i]] = pan;
- }
- }
- void movement::clearPanOnField()
- {
- for (int i = 1; i <= panSize; i++)
- {
- a[px[i]][py[i]] = ' ';
- }
- }
- void movement::changePanCoordinates()
- {
- symbol = getch ();
- switch (symbol)
- {
- case 'a':
- if (pX != M-22)
- pX = pX - 1;
- break;
- case 'd':
- if (pX != M)
- pX = pX + 1;
- break;
- case 27:
- exit(0);
- break;
- default : break;
- }
- }
- void movement::nextStep()
- {
- clearPanOnField ();
- for (int i = panSize; i >= 2; i--)
- {
- px[i] = px[i-1];
- }
- drawPan();
- }
- int main ()
- {
- objects Field;
- movement Move;
- Field.standartSettings();
- //Field.drawPan();
- // Field.drawSausage();
- while (1)
- {
- if (kbhit() == true)
- Move.changePanCoordinates ();
- Move.nextStep();
- Field.drawField();
- Sleep (INTERVAL);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement